nginx session共享_Centos下实现nginx负载均衡
一、基本思路
網(wǎng)絡(luò)拓?fù)鋱D
1.利用nginx實現(xiàn)負(fù)載均衡和反向代理,減輕主服務(wù)器訪問壓力;
2.利用springboot實現(xiàn)多tomcat的session共享;
IP角色
192.168.0.170nginx(主)服務(wù)器、Tomcat服務(wù)器
192.168.0.171nginx(從)服務(wù)器、Tomcat服務(wù)器
二、安裝Tengine(Nginx)并添加服務(wù)
1.Tengine簡介
Tengine是由淘寶網(wǎng)發(fā)起的Web服務(wù)器項目。它在Nginx的基礎(chǔ)上,針對大訪問量網(wǎng)站的需求,添加了很多高級功能和特性。Tengine的性能和穩(wěn)定性已經(jīng)在大型的網(wǎng)站如淘寶網(wǎng),天貓商城等得到了很好的檢驗。它的最終目標(biāo)是打造一個高效、穩(wěn)定、安全、易用的Web平臺。
2.Tengine下載
http://tengine.taobao.org/download.html下載對應(yīng)的Tengine版本
3.安裝nginx對應(yīng)的依賴庫
yum -y install gcc openssl-devel pcre-devel zlib-devel
4.解壓縮Tengine到相對應(yīng)的文件夾
tar -zxvf 到相對應(yīng)的文件夾
5.配置nginx對應(yīng)的選項
./configure
6.安裝Tengine
make & make install
7.添加nginx到服務(wù)并設(shè)置自啟動
vi /lib/systemd/system/nginx.service --添加文件
---------------------添加以下代碼----------------------------
[Unit]Description=The nginx HTTP and reverse proxy serverAfter=syslog.target network.target remote-fs.target nss-lookup.target [Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStartPre=/usr/local/nginx/sbin/nginx -tExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.target# 修改文件權(quán)限
cd /lib/systemd/system/
chmod 745 nginx.service
# 設(shè)置為開機啟動 systemctl enable nginx.service
# 啟動nginx服務(wù) systemctl start nginx.service
# 設(shè)置開機自啟動 systemctl enable nginx.service
# 停止開機自啟動 systemctl disable nginx.service
# 查看服務(wù)當(dāng)前狀態(tài) systemctl status nginx.service
# 重新啟動服務(wù) systemctl restart nginx.service
# 查看所有已啟動的服務(wù) systemctl list-units --type=service
8.啟動Nginx服務(wù),瀏覽輸入http://192.168.0.170如出現(xiàn)nginx相應(yīng)畫面標(biāo)識安裝成功,nginx默認(rèn)端口80
三、安裝Keepalived并添加服務(wù)
1.keepalived下載
下載方式一:
https://www.keepalived.org/download.html下載最新穩(wěn)定版的keepalived,ftp上傳到home目錄下
yum install -y gcc gcc-c++ openssl-devel 安裝依賴庫,如已經(jīng)安裝可不比進行此操作
下載方式二:
wget https://www.keepalived.org/software/keepalived-2.0.19.tar.gz
2.解壓縮keepalived文件
進入到home目錄先
cd /home
tar -zxvf keepalived-2.0.19.tar.gz
3.檢查配置
cd keepalived-2.0.19
./configure --prefix=/usr/local/keepalived
若系統(tǒng)出現(xiàn)如下警告
“*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.”
yum -y install libnl libnl-devel 執(zhí)行此命令,重新進行./configure --prefix=/usr/local/keepalived 操作
4.安裝
make & make install
5.配置keepalived服務(wù)
mkdir -p /etc/keepalived
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp keepalived/etc/init.d/keepalived /etc/init.d/
chmod 755 /etc/init.d/keepalived
vi /lib/systemd/system/keepalived.service 編輯keepalived服務(wù)文件
將所有的字符串 “/usr/local/keepalived” 替換為空白,替換完如下:
----------------------------------------------------------------------------------------------------------------------------
[Unit]Description=LVS and VRRP High Availability MonitorAfter=network-online.target syslog.targetWants=network-online.target[Service]Type=forkingPIDFile=/run/keepalived.pid#KillMode=processEnvironmentFile=-/etc/sysconfig/keepalivedExecStart=/sbin/keepalived $KEEPALIVED_OPTIONSExecReload=/bin/kill -HUP $MAINPID[Install]WantedBy=multi-user.targetsystemctl daemon-reload 重讀配置
6.修改keepalived.conf
vi /etc/keepalived/keepalived.conf
------------------------------------------------按照以下代碼修改(master服務(wù)器192.168.0.170)------------------
! Configuration File for keepalivedglobal_defs {## keepalived 自帶的郵件提醒需要開啟 sendmail 服務(wù)。 建議用獨立的監(jiān)控或第三方 SMTProuter_id tdrc ## 標(biāo)識本節(jié)點的字條串,通常為 hostname} ## keepalived 會定時執(zhí)行腳本并對腳本執(zhí)行的結(jié)果進行分析,動態(tài)調(diào)整 vrrp_instance 的優(yōu)先級。如果腳本執(zhí)行結(jié)果為 0,并且 weight 配置的值大于 0,則優(yōu)先級相應(yīng)的增加。如果腳本執(zhí)行結(jié)果非 0,并且 weight配置的值小于 0,則優(yōu)先級相應(yīng)的減少。其他情況,維持原本配置的優(yōu)先級,即配置文件中 priority 對應(yīng)的值。vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" ## 檢測 nginx 狀態(tài)的腳本路徑interval 2 ## 檢測時間間隔weight -20 ## 如果條件成立,權(quán)重-20}## 定義虛擬路由, VI_1 為虛擬路由的標(biāo)示符,自己定義名稱vrrp_instance VI_1 {state MASTER ## 主節(jié)點為 MASTER, 對應(yīng)的備份節(jié)點為 BACKUPinterface ens33 ## 綁定虛擬 IP 的網(wǎng)絡(luò)接口,與本機 IP 地址所在的網(wǎng)絡(luò)接口相同, 我的是 eth0virtual_router_id 33 ## 虛擬路由的 ID 號, 兩個節(jié)點設(shè)置必須一樣, 可選 IP 最后一段使用, 相同的 VRID 為一個組,他將決定多播的 MAC 地址mcast_src_ip 192.168.0.170 ## 本機 IP 地址priority 100 ## 節(jié)點優(yōu)先級, 值范圍 0-254, MASTER 要比 BACKUP 高nopreempt ## 優(yōu)先級高的設(shè)置 nopreempt 解決異常恢復(fù)后再次搶占的問題advert_int 1 ## 組播信息發(fā)送間隔,兩個節(jié)點設(shè)置必須一樣, 默認(rèn) 1s## 設(shè)置驗證信息,兩個節(jié)點必須一致authentication {auth_type PASSauth_pass 1111 ## 真實生產(chǎn),按需求對應(yīng)該過來}## 將 track_script 塊加入 instance 配置塊track_script {chk_nginx ## 執(zhí)行 Nginx 監(jiān)控的服務(wù)} ## 虛擬 IP 池, 兩個節(jié)點設(shè)置必須一樣virtual_ipaddress {192.168.0.180 ## 虛擬 ip,可以定義多個}}----------------------------------------按照以下代碼修改(slave服務(wù)器192.168.0.171)-----------------------------
! Configuration File for keepalivedglobal_defs {router_id tdrc}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh"interval 2weight -20}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 33mcast_src_ip 192.168.0.171priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_nginx}virtual_ipaddress {192.168.0.180}}--------------------------------------------------------------------------------------------------------------------------
7. /etc/keepalived 下添加nginx_check.sh腳本
-----------------------------------------------master(slave)服務(wù)器下添加以下代碼---------------------------------------
#!/bin/bashcounter=$(ps -C nginx --no-heading|wc -l)echo "$counter"if [ "${counter}" = "0" ]; then /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf sleep 2 counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then /etc/init.d/keepalived stop fifi------------------------------------------------------------------------------------------------------------------
保存后,給腳本賦執(zhí)行權(quán)限:
# chmod +x /etc/keepalived/nginx_check.sh
8.重啟nginx和keepqlived
瀏覽器訪問(VIP)192.068.0.180 或192.168.0.170 或192.168.0.171
四、Nginx配置多個應(yīng)用
測試需提前在192.168.0.170和192.168.0.171上部署號相應(yīng)的測試應(yīng)用
vi /usr/local/nginx/conf/nginx.conf
htt{}中添加
upstream cluster {
# 服務(wù)器訪問的路徑,可以指定多個服務(wù)器,此處可根據(jù)需求配置單個或者多個應(yīng)用服務(wù)器、負(fù)載均衡策略
server 192.168.0.170:8080 weight=1;
server 192.168.0.171:8080 weight=1;
}
server{}中添加
location / {
proxy_pass http://cluster;
root html;
index index.html index.htm;
}
五、實現(xiàn)多應(yīng)用服務(wù)器session共享
測試應(yīng)用采用的是springboot,springboot自帶session注釋,@EnableRedisHttpSession
部分內(nèi)容參考自https://blog.csdn.net/qq_33200967/article/details/80707616
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的nginx session共享_Centos下实现nginx负载均衡的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python整形不可迭代_Python
- 下一篇: Centos6.4 为用户添加sudo功