nginx session共享_Centos下实现nginx负载均衡
一、基本思路
網絡拓撲圖
1.利用nginx實現負載均衡和反向代理,減輕主服務器訪問壓力;
2.利用springboot實現多tomcat的session共享;
IP角色
192.168.0.170nginx(主)服務器、Tomcat服務器
192.168.0.171nginx(從)服務器、Tomcat服務器
二、安裝Tengine(Nginx)并添加服務
1.Tengine簡介
Tengine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了很多高級功能和特性。Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等得到了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的Web平臺。
2.Tengine下載
http://tengine.taobao.org/download.html下載對應的Tengine版本
3.安裝nginx對應的依賴庫
yum -y install gcc openssl-devel pcre-devel zlib-devel
4.解壓縮Tengine到相對應的文件夾
tar -zxvf 到相對應的文件夾
5.配置nginx對應的選項
./configure
6.安裝Tengine
make & make install
7.添加nginx到服務并設置自啟動
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# 修改文件權限
cd /lib/systemd/system/
chmod 745 nginx.service
# 設置為開機啟動 systemctl enable nginx.service
# 啟動nginx服務 systemctl start nginx.service
# 設置開機自啟動 systemctl enable nginx.service
# 停止開機自啟動 systemctl disable nginx.service
# 查看服務當前狀態 systemctl status nginx.service
# 重新啟動服務 systemctl restart nginx.service
# 查看所有已啟動的服務 systemctl list-units --type=service
8.啟動Nginx服務,瀏覽輸入http://192.168.0.170如出現nginx相應畫面標識安裝成功,nginx默認端口80
三、安裝Keepalived并添加服務
1.keepalived下載
下載方式一:
https://www.keepalived.org/download.html下載最新穩定版的keepalived,ftp上傳到home目錄下
yum install -y gcc gcc-c++ openssl-devel 安裝依賴庫,如已經安裝可不比進行此操作
下載方式二:
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
若系統出現如下警告
“*** 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 執行此命令,重新進行./configure --prefix=/usr/local/keepalived 操作
4.安裝
make & make install
5.配置keepalived服務
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服務文件
將所有的字符串 “/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服務器192.168.0.170)------------------
! Configuration File for keepalivedglobal_defs {## keepalived 自帶的郵件提醒需要開啟 sendmail 服務。 建議用獨立的監控或第三方 SMTProuter_id tdrc ## 標識本節點的字條串,通常為 hostname} ## keepalived 會定時執行腳本并對腳本執行的結果進行分析,動態調整 vrrp_instance 的優先級。如果腳本執行結果為 0,并且 weight 配置的值大于 0,則優先級相應的增加。如果腳本執行結果非 0,并且 weight配置的值小于 0,則優先級相應的減少。其他情況,維持原本配置的優先級,即配置文件中 priority 對應的值。vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" ## 檢測 nginx 狀態的腳本路徑interval 2 ## 檢測時間間隔weight -20 ## 如果條件成立,權重-20}## 定義虛擬路由, VI_1 為虛擬路由的標示符,自己定義名稱vrrp_instance VI_1 {state MASTER ## 主節點為 MASTER, 對應的備份節點為 BACKUPinterface ens33 ## 綁定虛擬 IP 的網絡接口,與本機 IP 地址所在的網絡接口相同, 我的是 eth0virtual_router_id 33 ## 虛擬路由的 ID 號, 兩個節點設置必須一樣, 可選 IP 最后一段使用, 相同的 VRID 為一個組,他將決定多播的 MAC 地址mcast_src_ip 192.168.0.170 ## 本機 IP 地址priority 100 ## 節點優先級, 值范圍 0-254, MASTER 要比 BACKUP 高nopreempt ## 優先級高的設置 nopreempt 解決異常恢復后再次搶占的問題advert_int 1 ## 組播信息發送間隔,兩個節點設置必須一樣, 默認 1s## 設置驗證信息,兩個節點必須一致authentication {auth_type PASSauth_pass 1111 ## 真實生產,按需求對應該過來}## 將 track_script 塊加入 instance 配置塊track_script {chk_nginx ## 執行 Nginx 監控的服務} ## 虛擬 IP 池, 兩個節點設置必須一樣virtual_ipaddress {192.168.0.180 ## 虛擬 ip,可以定義多個}}----------------------------------------按照以下代碼修改(slave服務器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)服務器下添加以下代碼---------------------------------------
#!/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------------------------------------------------------------------------------------------------------------------
保存后,給腳本賦執行權限:
# chmod +x /etc/keepalived/nginx_check.sh
8.重啟nginx和keepqlived
瀏覽器訪問(VIP)192.068.0.180 或192.168.0.170 或192.168.0.171
四、Nginx配置多個應用
測試需提前在192.168.0.170和192.168.0.171上部署號相應的測試應用
vi /usr/local/nginx/conf/nginx.conf
htt{}中添加
upstream cluster {
# 服務器訪問的路徑,可以指定多個服務器,此處可根據需求配置單個或者多個應用服務器、負載均衡策略
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;
}
五、實現多應用服務器session共享
測試應用采用的是springboot,springboot自帶session注釋,@EnableRedisHttpSession
部分內容參考自https://blog.csdn.net/qq_33200967/article/details/80707616
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的nginx session共享_Centos下实现nginx负载均衡的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python整形不可迭代_Python
- 下一篇: 王者荣耀卡顿延迟高怎么解决 玩王者荣耀卡