nginx和haproxy一樣也可以做前端請求分發實現負載均衡效果,比如一個tomcat服務如果並發過高會導致處理很慢,新來的請求就會排隊,到一定程度時請求就可能會返回錯誤或者拒絕服務,所以通過負載均衡使用多個后端服務器處理請求,是比較有效的提升性能的方法;另外當單機性能優化到一定瓶頸之后,一般也會用負載均衡做集群,配置也很簡單,下面是配置過程:
首先需要安裝nginx服務器,我這里已經安裝好了,比如這里有三個tomcat服務器,地址如下:
192.168.1.23 8080
192.168.1.24 8080
192.168.1.25 8080
其中nginx安裝在192.168.1.23上面,如果只有一個服務器測試,也可以在一個服務器上運行多個tomcat開多個端口來實現,這樣也能提升性能
首先看nginx配置,在nginx.conf中http {}塊內並且server {}塊之外添加如下配置:
upstream my_service { server 127.0.0.1:8080 weight=2; server 192.168.1.24:8080 weight=1; server 192.168.1.25:8080 weight=1; }
上面的my_service是集群的名字,可以自己命名,server指定后端服務列表,weight是設置權重,權重越大,請求被分發過來的可能性就越大,這里本機權重設置了2,也就是說對到達的請求分配到本地上的會多一些
配置這個之后,需要在server {}中添加location配置攔截請求並轉發給后端的集群,最簡單的配置如下:
location / { proxy_pass http://my_service; proxy_redirect default; }
這樣配置之后保存並重新載入,然后對於所有的請求都會轉發到這個集群指定的機器處理了,當然也可以設置攔截具體的請求比如.do或者.action都可以根據需要設置;另外location里面也可以設置更多的配置項,比如客戶端body大小,buffer大小,超時時間等,配置參考如下:
location / { proxy_pass http://my_service; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; }
上面的配置可以參考,根據具體業務需要配置即可,nginx負載均衡的配置基本上就是上面這些
