keepalived配置高可用集群
準(zhǔn)備工作
分別在主從上安裝keepalived和nginx
yum install -y keepalived
yum install -y nginx
關(guān)閉主從上的防火墻和SELinux
systemctl stop firewalld
setenforce 0
配置主機(jī)
查看主機(jī)ip
[root@lynn-04 ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.130.116 netmask 255.255.255.0 broadcast 192.168.130.255inet6 fe80::181c:4847:3f62:dc4c prefixlen 64 scopeid 0x20<link>ether 00:0c:29:60:ed:4a txqueuelen 1000 (Ethernet)RX packets 11701 bytes 10394449 (9.9 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 13559 bytes 972155 (949.3 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1 (Local Loopback)RX packets 86 bytes 6720 (6.5 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 86 bytes 6720 (6.5 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0清空主上keepalived配置文件/etc/keepalived/keepalived.conf
[root@lynn-04 ~]# > /etc/keepalived/keepalived.conf編輯主上配置文件/etc/keepalived/keepalived.conf
[root@lynn-04 ~]# vim /etc/keepalived/keepalived.conf加入以下內(nèi)容:
global_defs {notification_email {aming@aminglinux.com}notification_email_from root@aminglinux.comsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL } vrrp_script chk_nginx {script "/usr/local/sbin/check_ng.sh"interval 3 } vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass aminglinux>com}virtual_ipaddress {192.168.130.100}track_script {chk_nginx} }定義主上監(jiān)控腳本/usr/local/sbin/check_ng.sh
[root@lynn-04 ~]# vim /usr/local/sbin/check_ng.sh寫(xiě)入下面內(nèi)容
#!/bin/bash #時(shí)間變量,用于記錄日志 d=`date --date today +%Y%m%d_%H:%M:%S` #計(jì)算nginx進(jìn)程數(shù)量 n=`ps -C nginx --no-heading|wc -l` #如果進(jìn)程為0,則啟動(dòng)nginx,并且再次檢測(cè)nginx進(jìn)程數(shù)量, #如果還為0,說(shuō)明nginx無(wú)法啟動(dòng),此時(shí)需要關(guān)閉keepalived if [ $n -eq "0" ]; then/etc/init.d/nginx startn2=`ps -C nginx --no-heading|wc -l`if [ $n2 -eq "0" ]; thenecho "$d nginx down,keepalived will stop" >> /var/log/check_ng.logsystemctl stop keepalivedfi fi更改主上/usr/local/sbin/check_ng.sh權(quán)限
[root@lynn-04 ~]# chmod 755 /usr/local/sbin/check_ng.sh啟動(dòng)主上keepalived
[root@lynn-04 ~]# systemctl start keepalived [root@lynn-04 ~]# ps aux |grep keepalived root 1741 0.0 0.1 120740 1404 ? Ss 10:46 0:00 /usr/sbin/keepalived -D root 1742 0.0 0.3 127476 3260 ? S 10:46 0:00 /usr/sbin/keepalived -D root 1745 0.0 0.3 131780 3116 ? S 10:46 0:00 /usr/sbin/keepalived -D root 1799 0.0 0.0 112676 988 pts/0 S+ 10:47 0:00 grep --color=auto keepalived為了區(qū)分主從的nginx需要把nginx的默認(rèn)頁(yè)做個(gè)標(biāo)記
[root@lynn-04 ~]# echo master > /data/wwwroot/default/index.html在另一臺(tái)機(jī)器使用從ip訪(fǎng)問(wèn)
得到下面結(jié)果
配置從機(jī)
查看從機(jī)ip
[root@lynn-06 ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.130.128 netmask 255.255.255.0 broadcast 192.168.130.255inet6 fe80::fef6:fd37:2682:fabc prefixlen 64 scopeid 0x20<link>ether 00:0c:29:af:03:e8 txqueuelen 1000 (Ethernet)RX packets 45666 bytes 48434560 (46.1 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 14753 bytes 1287938 (1.2 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1 (Local Loopback)RX packets 80 bytes 6256 (6.1 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 80 bytes 6256 (6.1 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0清空從上配置文件/etc/keepalived/keepalived.conf
[root@lynn-06 ~]# > /etc/keepalived/keepalived.conf編輯從上配置文件/etc/keepalived/keepalived.conf
[root@lynn-06 ~]# vim /etc/keepalived/keepalived.conf加入下面內(nèi)容
global_defs {notification_email {aming@aminglinux.com}notification_email_from root@aminglinux.comsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL } vrrp_script chk_nginx {script "/usr/local/sbin/check_ng.sh"interval 3 } vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass aminglinux>com}virtual_ipaddress {192.168.130.100}track_script {chk_nginx} }定義從上監(jiān)控腳本/usr/local/sbin/check_ng.sh
[root@lynn-06 ~]# vim /usr/local/sbin/check_ng.sh加入下面內(nèi)容
#時(shí)間變量,用于記錄日志 d=`date --date today +%Y%m%d_%H:%M:%S` #計(jì)算nginx進(jìn)程數(shù)量 n=`ps -C nginx --no-heading|wc -l` #如果進(jìn)程為0,則啟動(dòng)nginx,并且再次檢測(cè)nginx進(jìn)程數(shù)量, #如果還為0,說(shuō)明nginx無(wú)法啟動(dòng),此時(shí)需要關(guān)閉keepalived if [ $n -eq "0" ]; thensystemctl start nginxn2=`ps -C nginx --no-heading|wc -l`if [ $n2 -eq "0" ]; thenecho "$d nginx down,keepalived will stop" >> /var/log/check_ng.logsystemctl stop keepalivedfi fi更改從上/usr/local/sbin/check_ng.sh權(quán)限
[root@lynn-06 ~]# chmod 755 /usr/local/sbin/check_ng.sh啟動(dòng)從上keepalived
[root@lynn-06 ~]# systemctl start keepalived [root@lynn-06 ~]# ps aux |grep keepalived root 3589 0.0 0.1 120740 1400 ? Ss 11:03 0:00 /usr/sbin/keepalived -D root 3590 0.0 0.3 127476 3260 ? S 11:03 0:00 /usr/sbin/keepalived -D root 3591 0.0 0.3 131780 3124 ? S 11:03 0:00 /usr/sbin/keepalived -D root 3680 0.0 0.0 112676 988 pts/0 S+ 11:03 0:00 grep --color=auto keepalived為了區(qū)分主從的nginx需要把nginx的默認(rèn)頁(yè)做個(gè)標(biāo)記
[root@lynn-06 ~]# echo backup > /usr/share/nginx/html/index.html在另一臺(tái)機(jī)器使用從ip訪(fǎng)問(wèn)
得到下面結(jié)果
測(cè)試高可用
首先在主從keepalived都開(kāi)啟的情況下查看得到vip在主機(jī)上 使用另一臺(tái)機(jī)器通過(guò)vip訪(fǎng)問(wèn)得到master
然后在主機(jī)keepalived關(guān)閉的情況下查看得到vip在從機(jī)上 使用另一臺(tái)機(jī)器通過(guò)vip訪(fǎng)問(wèn)得到backup
再次開(kāi)啟主機(jī)的keepalived情況下查看得到vip又回到主機(jī)上 使用另一臺(tái)機(jī)器通過(guò)vip訪(fǎng)問(wèn)得到master
轉(zhuǎn)載于:https://blog.51cto.com/10963213/2095995
總結(jié)
以上是生活随笔為你收集整理的keepalived配置高可用集群的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [精讲-3]Offline Domain
- 下一篇: Android 撸起袖子,自己封装 Di