nginx 負載均衡安裝及升級步驟

在兩臺機器上實現負載均衡及熱部署,使用過程中,最大的坑是對依賴包的引入,nginx類似於python,需要各種各樣的包,否則在配置nginx.conf文件時會報錯。再者nginx版本更新很快,所以有問題儘快百度,別瞎捉摸
先在1.1.1.1服務器上爲例安裝nginx

  1. 使用非root用戶安裝,比如 guest
  2. 安裝目錄暫時設定爲:/home/guest/nginxServer
  3. 使用guest用戶登錄
  4. cd /home/guest
  5. mkdir -p nginxServer/tar
  6. mkdir -p nginxServer/tool
  7. 需要的依賴包:

mogno-c-driver-0.3.1.tar.gz

nginx-1.9.3.tar.gz

nginx-gridfs-0.8.tar.gz

openssl-1.0.1e.tar.gz

zlib-1.2.8.tar.gz

這些依賴包請自行到網上下載。至於版本本人只知道nginx1.9以上能夠支持socket通訊,1.8不行,其他的還不知道有什麼影響。此外nginx1.9還不支持socket服務打印日誌,要nginx14才行。還有,因爲我需要使用mongodb數據庫,所以需要引入mongo的依賴。

把這些依賴包放到/home/nginx/nginxServer/tar目錄下。


  1. cd /home/nginx/nginxServer/tar
    解壓tar包:

tar -xxvf	mogno-c-driver-0.3.1.tar.gz
tar -xxvf	nginx-1.9.3.tar.gz
tar -xxvf	nginx-gridfs-0.8.tar.gz
tar -xxvf	openssl-1.0.1e.tar.gz
tar -xxvf	zlib-1.2.8.tar.gz

  1. 把解壓後的mongo-driver中的src目錄cp到nginx-gridfs目錄中的mongo-c-driver目錄
  2. 安裝nginx 注意:–前需要空格

cd /home/guest/nginxServer/tar/nginx-1.9.3

./configure --prefix=/home/guest/nginxServer/tool --with-pcre=/home/guest/nginxServer/tar/pcre-8.3.6 --with-openssl=/home/guest/nginxServer/tar/openssl-1.0.1e --with-zlib=/home/guest/nginxServer/tar/zlib-1.2.8 --with-http_stub_status_module --add-module=/home/guest/nginxServer/tar/nginx-gridfs-0.8 --with-stream

可以看出上面加入了很多模塊,有‘=‘的是需要外面引入的依賴,不帶的是此nginx版本自帶的,但也要聲明引入。
11. 10執行完後,執行


 make & make install 

如果沒有報太多錯,並且,在/home/guest/nginxServer/tool 目錄下有四個目錄 conf html logs sbin 說明安裝成功
如果出現權限問題,在開通對應目錄的權限即可。

  1. 修改啓動端口,啓動nginx服務
    檢查nginx是否能啓動成功,首先修改監聽端口:

vim /home/guest/nginxServer/tool/conf/nginx.conf

這裏我使用系統目前沒有使用到的端口2555爲例,當然了nginx有默認的端口,好像是2333,爲防止已經被使用或之前已經安裝了nginx,所以我們就改一個吧!修改位置如下:


server{
	listen	2555;
	server_name	localhost;
	....

保存後,啓動nginx,命令如下:


#啓動前檢查配置是否正確
/home/guest/nginxServer/tool/sbin/nginx -t
#啓動nginx
/home/guest/nginxServer/tool/sbin/nginx
  1. 下面添加服務,修改nginx配置如下(這裏介紹以訪問socket服務):

#修改nginx.conf
vim /home/guest/nginxServer/tool/conf/nginx.conf
增加配置如下,可在任意行加入:
stream{
	upstream xxweb_app{
		server 1.1.1.1:8080 weight=1;
		server 1.1.1.2:8080 weight=1;
	}
	server{
		listen 2444;
		proxy_pass xxweb_app;#這個xxweb_app要與上面的upstream xxweb_app保持一致,類似於方法名調用。
	}
}

保存後,重啓nginx


#啓動前檢查配置是否正確
/home/guest/nginxServer/tool/sbin/nginx -t
#啓動nginx
/home/guest/nginxServer/tool/sbin/nginx -s reload

  1. 觀察nginx日誌。監控一段時間:

tail -f /home.guest/nginxServer/tool/logs/access.log

可以在瀏覽器上訪問服務,至於服務的url,nginx只是改變了ip和端口,url上其他的參數還是跟你之前訪問url的內容一樣。我這裏使用的是tomcat服務,訪問webservices接口,所以是


http://1.1.1.1:2444/tomcat1/servicetest?wsdl

流量器上多點幾次,可以在nginx日誌上看到會訪問我們設置兩個服務器,實現了服務站均衡。
15. 如果要實現nginx容災,可以在1.1.1.2上在安裝一個nginx,那麼重複上面的步驟,實現外部服務可以調用我們這兩個nginx服務,如果其中一個臺掛了,另外一個也可以正常使用。
16. 如果要不停服務的更新服務,可以修改服務權重,然後重啓,nginx的重啓是無間斷的,步驟如下:


#修改nginx.conf
vim /home/guest/nginxServer/tool/conf/nginx.conf
增加配置如下,可在任意行加入:
stream{
	upstream xxweb_app{
		server 1.1.1.1:8080 down;#修改的內容,別把權重改爲0,會報錯的
		server 1.1.1.2:8080 weight=1;
	}
	server{
		listen 2444;
		proxy_pass xxweb_app;#這個xxweb_app要與上面的upstream xxweb_app保持一致,類似於方法名調用。
	}
}

保存後,重啓nginx


#啓動前檢查配置是否正確
/home/guest/nginxServer/tool/sbin/nginx -t
#啓動nginx
/home/guest/nginxServer/tool/sbin/nginx -s reload

到這裏,服務的請求都走1.1.1.2:8080這個服務了,這時候我們就可以更新1.1.1.1的服務了,注意要觀察1.1.1.1的服務等其徹底關閉後再更新,放置有請求還在處理。
17. 服務更新好後,在把1.1.1.1:8080的服務權重改回來,並把1.1.1.2:8080的權重設爲down,然後再重啓,再更新1.1.1.2的服務,這樣就實現了無間斷更新服務的目的。
18. 下面介紹下訪問http服務的配置:


upstream xyweb_app{
	server 1.1.1.1:8080 weight=1;
	server 1.1.1.2:8080 weight=1;
}
server{
	listen	9000;
	server_name	hostname;#這個服務名是服務器的域名,要在hosts文件中配置
	charset	utf-8;
	access_log	logs/access.log	main;
	location /{
		proxy_pass	http://xxweb_app;#與上面的xyweb_app保持一致
	}
}

  1. 最後介紹下,nginx的併發量配置
    也是在nginx.conf中配置,新啓一行配置如下:

	#進程數 與機器核數對應,查看機器核數命令如下,這裏是進程數 :cat /proc/cupinfo |grep "processor"|wc -l
	worker_processes 32;
	#單進程處理線程數 與命令 ulimit -n 的結果保持一致
	worker_rlimit_nofile	10240;

通常生成的機器配置很好的,可看出上面的處理線程數可達到1024032,打個半折有1024016個併發數,20萬級別了,可處理的併發量還是很高的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章