keepalived高可用+nginx负载均衡
生活随笔
收集整理的這篇文章主要介紹了
keepalived高可用+nginx负载均衡
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
keepalived高可用+nginx負載均衡
1、IP地址規劃
| KN01 | 10.4.7.30 | keepalived MASTER節點 nginx負載均衡器 |
| KN02 | 10.4.7.31 | keepalived BACKUP節點 nginx負載均衡器 |
| WEB01 | 10.4.7.24 | web01節點 |
| WEB02 | 10.4.7.25 | web02節點 |
2、關閉防火墻,selinux,并安裝nginx(四臺虛擬機都要執行)
[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 nginx3、配置并啟動兩個web節點。
[root@web02 ~]# echo "`hostname` `ifconfig ens33 |sed -n 's#.*inet \(.*\)netmask.*#\1#p'`" > /usr/share/nginx/html/index.html //將hostname和ip地址寫進index.html,這是nginx的默認目錄,用于后面測試使用 [root@web02 ~]#systemctl restart nginx //重啟nginx服務 [root@web01 ~]# curl 10.4.7.24 //查看頁面內容 web01 10.4.7.24 [root@web01 ~]# curl 10.4.7.25 //查看頁面內容 web02 10.4.7.254、配置兩個nginx負載局衡器
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; //權重為1server 10.4.7.25:80 weight=1 max_fails=3 fail_timeout=20s; //權重為1,理論上訪問兩個web服務應該間隔訪問}server {listen 80 default_server;listen [::]:80 default_server;server_name _;location / {proxy_pass http://backend;}} }2)、檢查nginx配置文件,然后啟動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)、查看兩個節點nginx負載均衡器是否開啟成功
[root@kn01 ~]# curl 10.4.7.30 //訪問該服務的時候基本是1:1,說明負載均衡開啟成功 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.245、安裝、配置并啟動keepalived,以KN01為例
[root@kn01 ~]# yum install keepalived -y [root@kn01 ~]# vim /etc/keepalived/keepalived.conf 配置文件修改 [root@kn01 ~]# systemctl restart keepalived1)MASTER節點配置(KN01)
vrrp_instance VI_1 {state MASTER //修改為MASTERinterface ens33 //改為要設置虛擬IP的網卡名字virtual_router_id 51priority 100 //優先級advert_int 1authentication {auth_type PASSauth_pass 1111}nopreempt //非搶占式,防止虛擬IP來回飄virtual_ipaddress {10.4.7.32/24 dev ens33 lable ens33:1 //設置虛擬IP} }2)BACKUP節點配置(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節點 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并沒有飄過來,因為我們設置了nopreempt屬性。是非搶占式的,所以IP地址不會飄走,只有再KN02節點出現異常的時候才會飄過來。 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 forever6、keepalived中nginx運行狀態監測腳本,
? 當監控到nginx服務異常時,停止keepalived服務。這樣虛擬IP就會飄到另外一個節點上,確保服務不斷線,可靠運行。下面給出兩種探測腳本
1)個人感覺下面腳本用來監測nginx運行狀態比較實用。
優點:此腳本獲得網頁內容,然后判斷nginx服務是否正常。
缺點:為判斷獲取的網頁內容是否正確。待改進。
運行killall命令需要安裝psmisc包
yum install psmisc -y2)此腳本檢測nginx進程,不關注內容,若出現有進程但是頁面加載不出來的情況,此腳本無用。
#!/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總結
以上是生活随笔為你收集整理的keepalived高可用+nginx负载均衡的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 逆透视变换详解 及 代码实现(二)
- 下一篇: 两种方法求解逆序对