日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

keepalived高可用+nginx负载均衡

發(fā)布時(shí)間:2025/3/11 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 keepalived高可用+nginx负载均衡 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

keepalived高可用+nginx負(fù)載均衡

1、IP地址規(guī)劃

hostnameip說明
KN0110.4.7.30keepalived MASTER節(jié)點(diǎn) nginx負(fù)載均衡器
KN0210.4.7.31keepalived BACKUP節(jié)點(diǎn) nginx負(fù)載均衡器
WEB0110.4.7.24web01節(jié)點(diǎn)
WEB0210.4.7.25web02節(jié)點(diǎn)

2、關(guān)閉防火墻,selinux,并安裝nginx(四臺(tái)虛擬機(jī)都要執(zhí)行)

[root@web02 ~]# systemctl stop firewalld [root@web02 ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux [root@web02 ~]# setenforce 0 // [root@web02 ~]# yum -y install epel-release //安裝nginx之前要先安裝nginx源 [root@web02 ~]# yum install -y nginx

3、配置并啟動(dòng)兩個(gè)web節(jié)點(diǎn)。

[root@web02 ~]# echo "`hostname` `ifconfig ens33 |sed -n 's#.*inet \(.*\)netmask.*#\1#p'`" > /usr/share/nginx/html/index.html //將hostname和ip地址寫進(jìn)index.html,這是nginx的默認(rèn)目錄,用于后面測試使用 [root@web02 ~]#systemctl restart nginx //重啟nginx服務(wù) [root@web01 ~]# curl 10.4.7.24 //查看頁面內(nèi)容 web01 10.4.7.24 [root@web01 ~]# curl 10.4.7.25 //查看頁面內(nèi)容 web02 10.4.7.25

4、配置兩個(gè)nginx負(fù)載局衡器

1)修改nginx配置文件(KN01、KN02)
#修改/etc/nginx/nginx.conf文件。 http {upstream backend {server 10.4.7.24:80 weight=1 max_fails=3 fail_timeout=20s; //權(quán)重為1server 10.4.7.25:80 weight=1 max_fails=3 fail_timeout=20s; //權(quán)重為1,理論上訪問兩個(gè)web服務(wù)應(yīng)該間隔訪問}server {listen 80 default_server;listen [::]:80 default_server;server_name _;location / {proxy_pass http://backend;}} }
2)、檢查nginx配置文件,然后啟動(dòng)nginx
[root@kn01 ~]# which nginx /usr/sbin/nginx [root@kn01 ~]# /usr/sbin/nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful [root@kn01 ~]# systemctl restart nginx [root@kn01 ~]# systemctl status nginx ● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)Active: active (running) since 二 2021-01-26 02:33:53 EST; 5h 59min agoMain PID: 57976 (nginx)CGroup: /system.slice/nginx.service├─57976 nginx: master process /usr/sbin/nginx├─57977 nginx: worker process└─57978 nginx: worker process1月 26 02:33:53 kn01 systemd[1]: Starting The nginx HTTP and reverse proxy server... 1月 26 02:33:53 kn01 nginx[57971]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 1月 26 02:33:53 kn01 nginx[57971]: nginx: configuration file /etc/nginx/nginx.conf test is successful 1月 26 02:33:53 kn01 systemd[1]: Started The nginx HTTP and reverse proxy server.
3)、查看兩個(gè)節(jié)點(diǎn)nginx負(fù)載均衡器是否開啟成功
[root@kn01 ~]# curl 10.4.7.30 //訪問該服務(wù)的時(shí)候基本是1:1,說明負(fù)載均衡開啟成功 web02 10.4.7.25 [root@kn01 ~]# curl 10.4.7.30 web01 10.4.7.24 [root@kn01 ~]# curl 10.4.7.31 web02 10.4.7.25 [root@kn01 ~]# curl 10.4.7.31 web01 10.4.7.24

5、安裝、配置并啟動(dòng)keepalived,以KN01為例

[root@kn01 ~]# yum install keepalived -y [root@kn01 ~]# vim /etc/keepalived/keepalived.conf 配置文件修改 [root@kn01 ~]# systemctl restart keepalived
1)MASTER節(jié)點(diǎn)配置(KN01)
vrrp_instance VI_1 {state MASTER //修改為MASTERinterface ens33 //改為要設(shè)置虛擬IP的網(wǎng)卡名字virtual_router_id 51priority 100 //優(yōu)先級(jí)advert_int 1authentication {auth_type PASSauth_pass 1111}nopreempt //非搶占式,防止虛擬IP來回飄virtual_ipaddress {10.4.7.32/24 dev ens33 lable ens33:1 //設(shè)置虛擬IP} }
2)BACKUP節(jié)點(diǎn)配置(KN02)
vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}nopreemptvirtual_ipaddress {10.4.7.32/24 dev ens33} }
3)查看虛擬IP地址飄逸情況
[root@kn01 ~]# ip a 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:11:af:f3 brd ff:ff:ff:ff:ff:ffinet 10.4.7.30/24 brd 10.4.7.255 scope global ens33valid_lft forever preferred_lft foreverinet 10.4.7.32/24 scope global secondary ens33valid_lft forever preferred_lft foreverinet6 fe80::b778:7955:18a9:b4d6/64 scope link valid_lft forever preferred_lft forever [root@kn01 ~]# systemctl stop keepalived [root@kn01 ~]# ip a //IP地址10.4.7.32飄走 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:11:af:f3 brd ff:ff:ff:ff:ff:ffinet 10.4.7.30/24 brd 10.4.7.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::b778:7955:18a9:b4d6/64 scope link valid_lft forever preferred_lft forever [root@kn02 ~]# ip a //IP地址10.4.7.32飄到KN02節(jié)點(diǎn) 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:12:87:53 brd ff:ff:ff:ff:ff:ffinet 10.4.7.31/24 brd 10.4.7.255 scope global ens33valid_lft forever preferred_lft foreverinet 10.4.7.32/24 scope global secondary ens33valid_lft forever preferred_lft foreverinet6 fe80::961f:2027:a51:6df0/64 scope link valid_lft forever preferred_lft forever [root@kn01 ~]# systemctl start keepalived [root@kn01 ~]# ip a //IP地址10.4.7.32并沒有飄過來,因?yàn)槲覀冊O(shè)置了nopreempt屬性。是非搶占式的,所以IP地址不會(huì)飄走,只有再KN02節(jié)點(diǎn)出現(xiàn)異常的時(shí)候才會(huì)飄過來。 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:11:af:f3 brd ff:ff:ff:ff:ff:ffinet 10.4.7.30/24 brd 10.4.7.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::b778:7955:18a9:b4d6/64 scope link valid_lft forever preferred_lft forever

6、keepalived中nginx運(yùn)行狀態(tài)監(jiān)測腳本,

? 當(dāng)監(jiān)控到nginx服務(wù)異常時(shí),停止keepalived服務(wù)。這樣虛擬IP就會(huì)飄到另外一個(gè)節(jié)點(diǎn)上,確保服務(wù)不斷線,可靠運(yùn)行。下面給出兩種探測腳本

1)個(gè)人感覺下面腳本用來監(jiān)測nginx運(yùn)行狀態(tài)比較實(shí)用。

優(yōu)點(diǎn):此腳本獲得網(wǎng)頁內(nèi)容,然后判斷nginx服務(wù)是否正常。
缺點(diǎn):為判斷獲取的網(wǎng)頁內(nèi)容是否正確。待改進(jìn)。

#!/bin/bash curl 10.4.7.31 >> file A=`cat file|wc -l` if [ $A -eq 0 ];then/usr/sbin/nginxsleep 2curl 10.4.7.31 >> fileif [ `cat file |wc -l` -eq 0 ];thenkillall keepalivedfi fi cat /dev/null > file

運(yùn)行killall命令需要安裝psmisc包

yum install psmisc -y
2)此腳本檢測nginx進(jìn)程,不關(guān)注內(nèi)容,若出現(xiàn)有進(jìn)程但是頁面加載不出來的情況,此腳本無用。
#!/bin/bash A=`ps -C nginx --no-header|wc -l` if [ $A -eq 0 ];then/usr/sbin/nginxsleep 2if [ `ps -C nginx --no-header|wc -l` -eq 0 ];thenkillall keepalivedfi fi

總結(jié)

以上是生活随笔為你收集整理的keepalived高可用+nginx负载均衡的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。