backup:192.168.133.130 (lamp,沒有nginx服務(wù))
兩臺機器都安裝keepalived
執(zhí)行yum install -y keepalived
為了方便做實驗
檢查兩臺機器的selinux,iptables兩個防火墻情況,selinux需要關(guān)閉,iptables需要關(guān)閉firewalld
對backup機器安裝nginx服務(wù)
yum install -y nginx master機器配置
服務(wù)工具準(zhǔn)備好以后,就配置keepalived 默認(rèn)的配置文件路徑在
/etc/keepalived/keepalived.conf
global_defs { notification_email { //郵件 aming@aminglinux.com } notification_email_from root@aminglinux.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_nginx { script "/usr/local/sbin/check_ng.sh" //檢查服務(wù)是否正常,通過腳本實現(xiàn),檢查服務(wù)健康狀態(tài) interval 3 //檢查時間 } vrrp_instance VI_1 { state MASTER //定義master相關(guān) interface ens33 //通過那個網(wǎng)站使用vrrp協(xié)議,配置時,需注意你的網(wǎng)卡配置文件是否是哪個。因為系統(tǒng)ens并不是固定的。 virtual_router_id 51 //定義路由器ID ,配置的時候和從機器一致 priority 100 //權(quán)重, advert_int 1 authentication { //認(rèn)證相關(guān)信息 auth_type PASS auth_pass aminglinux>com } virtual_ipaddress { //定義一個公有IP(VIP) 192.168.188.100 //更改為192.168.133.100 } track_script { chk_nginx } }
virtual_ipaddress:簡稱VIP,這個vip,兩臺機器,一個主,一個從,正常的情況是主在服務(wù),主宕掉了,從起來了,從啟動服務(wù),從啟動nginx以后,,啟動以后,訪問那個IP呢?把域名解析到那個IP上呢?假如解析到主上,主宕掉了,所以這個,需要定義一個公有IP(主上用的IP,從上也用的IP);這個IP是隨時可以換掉,去配置的
定義一個check的腳本
#!/bin/bash #時間變量,用于記錄日志 d=`date –date today %Y%m%d_%H:%M:%S` #計算nginx進程數(shù)量 n=`ps -C nginx –no-heading|wc -l` #如果進程為0,則啟動nginx,并且再次檢測nginx進程數(shù)量, #如果還為0,說明nginx無法啟動,此時需要關(guān)閉keepalived if [ $n -eq "0" ]; then /etc/init.d/nginx start n2=`ps -C nginx –no-heading|wc -l` if [ $n2 -eq "0" ]; then echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log systemctl stop keepalived //停止keepalived,涉及到一個“腦裂”知識 fi fi “腦裂” 在高可用(HA)系統(tǒng)中,當(dāng)聯(lián)系2個節(jié)點的“心跳線”斷開時,本來為一整體、動作協(xié)調(diào)的HA系統(tǒng),就分裂成為2個獨立的個體。 由于相互失去了聯(lián)系,都以為是對方出了故障。兩個節(jié)點上的HA軟件像“裂腦人”一樣,爭搶“共享資源”、爭起“應(yīng)用服務(wù)”,就會發(fā)生嚴(yán)重——或者共享資源被瓜分、2邊“服務(wù)”都起不來了;或者2邊“服務(wù)”都起來了,但同時讀寫“共享存儲”,導(dǎo)致數(shù)據(jù)損壞
腳本創(chuàng)建完以后還要調(diào)整權(quán)限;如果不調(diào)整權(quán)限的話,文件就沒有辦法自動加載
啟動keepalived
systemctl start keepalived
檢查服務(wù)啟動狀態(tài)
[root@aminglinux-02 bin]# ps aux |grep keepalived root 2552 0.0 0.0 111708 1308 ? Ss 12:34 0:00 /usr/sbin/keepalived -D root 2553 0.0 0.1 111708 2560 ? S 12:34 0:00 /usr/sbin/keepalived -D root 2554 0.0 0.0 111708 1528 ? S 12:34 0:00 /usr/sbin/keepalived -D root 2564 0.0 0.0 112664 976 pts/0 S 12:34 0:00 grep –color=auto keepalived [root@aminglinux-02 bin]# ps aux |grep nginx root 1233 0.0 0.0 45484 1256 ? Ss 10:44 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 1235 0.0 0.2 47972 4152 ? S 10:44 0:00 nginx: worker process nobody 1236 0.0 0.2 47972 3896 ? S 10:44 0:00 nginx: worker process root 2566 0.0 0.0 112664 972 pts/0 R 12:35 0:00 grep –color=auto nginx
先停止nginx 看看是否會自動啟動
[root@aminglinux-02 bin]# date 2017年 09月 04日 星期一 12:37:31 CST [root@aminglinux-02 bin]# /etc/init.d/nginx stop Stopping nginx (via systemctl): [ 確定 ] [root@aminglinux-02 bin]# !ps ps aux |grep nginx root 2627 0.0 0.0 45484 1276 ? Ss 12:38 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 2631 0.0 0.2 47972 3912 ? S 12:38 0:00 nginx: worker process nobody 2632 0.0 0.2 47972 3912 ? S 12:38 0:00 nginx: worker process root 2640 0.0 0.0 112664 968 pts/0 R 12:38 0:00 grep –color=auto nginx
通過時間信息,可以查看到,在停止nginx之后,因為check_ng的檢測腳本又重新把nginx自動啟動起來了
查看當(dāng)前的網(wǎng)卡情況
[root@aminglinux-02 bin]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:c4:13:b8 brd ff:ff:ff:ff:ff:ff inet 192.168.133.131/24 brd 192.168.133.255 scope global ens32 valid_lft forever preferred_lft forever inet 192.168.133.100/32 scope global ens32 valid_lft forever preferred_lft forever inet6 fe80::6e6a:61ff:f17c:5942/64 scope link valid_lft forever preferred_lft forever
發(fā)現(xiàn)網(wǎng)卡多了一個ip,這個就是vip ,高可用專用的IP,用于讓從機器解析web服務(wù)的IP
backup 機器配置
配置backup機器的keepalived配置
global_defs { notification_email { aming@aminglinux.com } notification_email_from root@aminglinux.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_nginx { script "/usr/local/sbin/check_ng.sh" interval 3 } vrrp_instance VI_1 { state BACKUP //這個。和master不一樣的名字 interface ens32 virtual_router_id 51 //和主機器 一直 priority 90 //比主機器小的數(shù)值 advert_int 1 authentication { auth_type PASS auth_pass aminglinux>com } virtual_ipaddress { 192.168.133.100 //公用IP } track_script { chk_nginx } }
配置check 檢測腳本
#時間變量,用于記錄日志 d=`date –date today %Y%m%d_%H:%M:%S` #計算nginx進程數(shù)量 n=`ps -C nginx –no-heading|wc -l` #如果進程為0,則啟動nginx,并且再次檢測nginx進程數(shù)量, #如果還為0,說明nginx無法啟動,此時需要關(guān)閉keepalived if [ $n -eq "0" ]; then systemctl start nginx //啟動命令不一樣,因為從是yum安裝的,所以使用的systemctl命令啟動 n2=`ps -C nginx –no-heading|wc -l` if [ $n2 -eq "0" ]; then echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log systemctl stop keepalived fi fi
更改腳本權(quán)限
chmod 755 /usr/local/sbin/check_ng.sh
啟動keepalived
systemctl start keepalived
檢測 keepalived 啟動狀況
[root@localhost ~]# ps aux |grep keepalived root 3728 0.0 0.0 111708 1304 ? Ss 12:51 0:00 /usr/sbin/keepalived -D root 3729 0.0 0.1 111708 2556 ? S 12:51 0:00 /usr/sbin/keepalived -D root 3730 0.0 0.0 111708 1640 ? S 12:51 0:00 /usr/sbin/keepalived -D root 3798 0.0 0.0 112664 980 pts/0 S 12:51 0:00 grep –color=auto keepalived
現(xiàn)在主和從的keepalived都配置好了,主和從機器上都nginx,那么如何區(qū)分這個nginx
查看主機器,先的nginx配置文件,的default主機配置
[root@aminglinux-02 bin]# cat /usr/local/nginx/conf/vhost/aaa.com.conf server { listen 80 default_server; server_name aaa.com; index index.html index.htm index.php; root /data/wwwroot/default; location ~ .php$ { include fastcgi_params; fastcgi_pass unix:/tmp/aming.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name; } }
這個就是默認(rèn)的虛擬主機,對默認(rèn)的索引頁做個配置
vim /data/wwwroot/default/index.html //內(nèi)容如下
Master Master This is the default site.
查看從機器,因為從機器是yum安裝的
所以默認(rèn)的索引頁在
vim /usr/share/nginx/html/index.html //修改為
Backup Backup
這是在瀏覽器訪問主機器的頁面為
在瀏覽器訪問從機器
訪問VIP 地址的時候
因為,keepalived服務(wù)器啟用,頁面優(yōu)先調(diào)用的服務(wù)是主機器上的頁面,所以這是訪問到的頁面是主機器的默認(rèn)索引頁
測試高可用
模擬,主機器宕機環(huán)境,最快,最簡單直接的方法,就是直接關(guān)閉keepalived服務(wù) 嘗試關(guān)閉主機上kepalived服務(wù)
[root@aminglinux-02 bin]# ls /etc/sh [root@aminglinux-02 bin]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:c4:13:b8 brd ff:ff:ff:ff:ff:ff inet 192.168.133.131/24 brd 192.168.133.255 scope global ens32 valid_lft forever preferred_lft forever inet 192.168.133.100/32 scope global ens32 valid_lft forever preferred_lft forever inet6 fe80::6e6a:61ff:f17c:5942/64 scope link valid_lft forever preferred_lft forever [root@aminglinux-02 bin]# systemctl stop keepalived [root@aminglinux-02 bin]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:c4:13:b8 brd ff:ff:ff:ff:ff:ff inet 192.168.133.131/24 brd 192.168.133.255 scope global ens32 valid_lft forever preferred_lft forever inet6 fe80::6e6a:61ff:f17c:5942/64 scope link valid_lft forever preferred_lft forever.
查看日志
[root@aminglinux-02 bin]# tail /var/log/messages Sep 4 12:38:55 aminglinux-02 Keepalived_vrrp[2606]: VRRP_Instance(VI_1) setting protocol VIPs. Sep 4 12:38:55 aminglinux-02 Keepalived_vrrp[2606]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens32 for 192.168.133.100 Sep 4 12:38:55 aminglinux-02 Keepalived_healthcheckers[2605]: Netlink reflector reports IP 192.168.133.100 added Sep 4 12:39:00 aminglinux-02 Keepalived_vrrp[2606]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens32 for 192.168.133.100 Sep 4 13:17:51 aminglinux-02 Keepalived[2604]: Stopping Keepalived v1.2.13 (05/25,2017) Sep 4 13:17:51 aminglinux-02 systemd: Stopping LVS and VRRP High Availability Monitor… Sep 4 13:17:51 aminglinux-02 Keepalived_vrrp[2606]: VRRP_Instance(VI_1) sending 0 priority Sep 4 13:17:51 aminglinux-02 Keepalived_vrrp[2606]: VRRP_Instance(VI_1) removing protocol VIPs. Sep 4 13:17:51 aminglinux-02 Keepalived_healthcheckers[2605]: Netlink reflector reports IP 192.168.133.100 removed Sep 4 13:17:51 aminglinux-02 systemd: Stopped LVS and VRRP High Availability Monitor.
關(guān)閉以后VIP地址馬上就釋放出去了
查看從機器
[root@localhost html]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:7d:ea:88 brd ff:ff:ff:ff:ff:ff inet 192.168.133.130/24 brd 192.168.133.255 scope global ens32 valid_lft forever preferred_lft forever inet6 fe80::daff:1b44:6a0f:1211/64 scope link valid_lft forever preferred_lft forever [root@localhost html]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:7d:ea:88 brd ff:ff:ff:ff:ff:ff inet 192.168.133.130/24 brd 192.168.133.255 scope global ens32 valid_lft forever preferred_lft forever inet 192.168.133.100/32 scope global ens32 valid_lft forever preferred_lft forever inet6 fe80::daff:1b44:6a0f:1211/64 scope link valid_lft forever preferred_lft forever
查看日志
[root@localhost html]# tail /var/log/messages Sep 4 13:01:01 localhost systemd: Started Session 15 of user root. Sep 4 13:01:01 localhost systemd: Starting Session 15 of user root. Sep 4 13:10:01 localhost systemd: Started Session 16 of user root. Sep 4 13:10:01 localhost systemd: Starting Session 16 of user root. Sep 4 13:17:52 localhost Keepalived_vrrp[3730]: VRRP_Instance(VI_1) Transition to MASTER STATE Sep 4 13:17:53 localhost Keepalived_vrrp[3730]: VRRP_Instance(VI_1) Entering MASTER STATE Sep 4 13:17:53 localhost Keepalived_vrrp[3730]: VRRP_Instance(VI_1) setting protocol VIPs. Sep 4 13:17:53 localhost Keepalived_vrrp[3730]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens32 for 192.168.133.100 Sep 4 13:17:53 localhost Keepalived_healthcheckers[3729]: Netlink reflector reports IP 192.168.133.100 added Sep 4 13:17:58 localhost Keepalived_vrrp[3730]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens32 for 192.168.133.100
因為主機器宕機,從機器很快的就加入了vip地址
這個時候訪問vip地址的時候,看到的頁面是
從機器上的默認(rèn)索引頁,證明整個實驗成功
更多關(guān)于云服務(wù)器,域名注冊,虛擬主機的問題,請訪問三五互聯(lián)官網(wǎng):m.shinetop.cn