A機器,安裝keepalived [root@hanfeng ~]# yum install -y keepalived B機器,安裝keepalived [root@hf-01 ~]# yum install -y keepalived
A機器源碼安裝nginx (PS:有時初始化的時候,會看到沒法初始化,是由於缺乏一些包yum install -y gcc) B機器yum安裝nginx [root@hf-01 ~]# yum install -y epel-release [root@hf-01 ~]# yum install -y nginx [root@hf-01 ~]# systemctl start nginx [root@hf-01 ~]# ps aux |grep nginx root 2825 0.0 0.2 123300 2100 ? Ss 11:40 0:00 nginx: master process /usr/sbin/nginx nginx 2826 0.0 0.3 123764 3120 ? S 11:40 0:00 nginx: worker process root 2828 0.0 0.0 112656 992 pts/0 R+ 11:40 0:00 grep --color=auto nginx [root@hf-01 ~]#
A機器更改配置文件 [root@hanfeng ~]# ls /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf [root@hanfeng ~]# > !$ //直接清空文件內容了 > /etc/keepalived/keepalived.conf [root@hanfeng ~]# cat /etc/keepalived/keepalived.conf [root@hanfeng ~]# vim /etc/keepalived/keepalived.conf //去文件地址去下載內容 將拷貝的內容複製進去 只須要改網卡名字和飄逸IP爲192.168.133.100 ####################### # 全局配置 ####################### global_defs { //global_defs 全局配置標識 notification_email { //notification_email用於設置報警郵件地址 han1118feng@163.com //能夠設置多個,每行一個 } notification_email_from root@aminglinux.com //設置郵件發送地址 smtp_server 127.0.0.1 //設置郵件的smtp server地址 smtp_connect_timeout 30 //設置鏈接smtp sever超時時間 router_id LVS_DEVEL } ###################### # VRRP配置 ###################### vrrp_script chk_nginx { script "/usr/local/sbin/check_ng.sh" //檢查服務是否正常,經過寫腳本實現,腳本檢查服務健康狀態 interval 3 //檢查的時間間斷是3秒 } vrrp_instance VI_1 { //VRRP配置標識 VI_1是實例名稱 state MASTER //定義master相關 interface eno16777736 //經過vrrp協議去通訊、去發廣播。配置時,需注意本身的網卡名稱 virtual_router_id 51 //定義路由器ID ,配置的時候和從機器一致 priority 100 //權重,主角色和從角色的權重是不一樣的 advert_int 1 //設定MASTER與BACKUP主機質檢同步檢查的時間間隔,單位爲秒 authentication { //認證相關信息 auth_type PASS //這裏認證的類型是PASS auth_pass aminglinux>com //密碼的形式是一個字符串 } virtual_ipaddress { //設置虛擬IP地址 (VIP),又叫作漂移IP地址 192.168.74.100 //更改成192.168.74.100 } track_script { //加載腳本 chk_nginx } } 保存退出
A機器定義監控腳本 [root@hanfeng ~]# vim /usr/local/sbin/check_ng.sh #!/bin/bash #時間變量,用於記錄日誌 d=`date --date today +%Y%m%d_%H:%M:%S` #計算nginx進程數量 n=`ps -C nginx --no-heading|wc -l` #若是進程爲0,則啓動nginx,而且再次檢測nginx進程數量, #若是還爲0,說明nginx沒法啓動,此時須要關閉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 fi fi 保存退出
[root@hanfeng ~]# chmod 755 /usr/local/sbin/check_ng.sh [root@hanfeng ~]#
[root@hanfeng ~]# systemctl start keepalived [root@hanfeng ~]# ps aux |grep keepalived root 2970 0.0 0.1 121324 1404 ? Ss 07:14 0:00 /usr/sbin/keepalived -D root 2971 0.0 0.2 123396 2356 ? S 07:14 0:00 /usr/sbin/keepalived -D root 2972 0.0 0.2 123396 2384 ? S 07:14 0:00 /usr/sbin/keepalived -D root 2974 0.0 0.0 112672 988 pts/1 R+ 07:14 0:00 grep --color=auto keepalived [root@hanfeng ~]#
[root@hanfeng ~]# ps aux |grep nginx root 3004 0.0 0.2 123372 2108 ? Ss 07:18 0:00 nginx: master process /usr/sbin/nginx nginx 3005 0.0 0.3 123836 3148 ? S 07:18 0:00 nginx: worker process root 3007 0.0 0.0 112672 984 pts/1 R+ 07:19 0:00 grep --color=auto nginx [root@hanfeng ~]#
[root@hanfeng ~]# /etc/init.d/nginx stop Stopping nginx (via systemctl): [ 肯定 ] [root@hanfeng ~]#
[root@hanfeng ~]# ps aux |grep nginx root 6238 0.0 0.0 20996 628 ? Ss 08:07 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 6242 0.0 0.3 23440 3212 ? S 08:07 0:00 nginx: worker process nobody 6243 0.0 0.3 23440 3212 ? S 08:07 0:00 nginx: worker process root 6263 0.0 0.0 112676 980 pts/0 R+ 08:07 0:00 grep --color=auto nginx [root@hanfeng ~]#
[root@hanfeng ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:c7:05:28 brd ff:ff:ff:ff:ff:ff inet 192.168.74.130/24 brd 192.168.74.255 scope global dynamic eno16777736 valid_lft 1158sec preferred_lft 1158sec inet 192.168.133.100/32 scope global eno16777736 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fec7:528/64 scope link valid_lft forever preferred_lft forever [root@hanfeng ~]#
[root@hf-01 ~]# yum install -y epel-release [root@hf-01 ~]# yum install -y nginx
首先清空B機器keepalived裏面自帶的配置文件 [root@hf-01 ~]# > /etc/keepalived/keepalived.conf [root@hf-01 ~]# cat !$ cat /etc/keepalived/keepalived.conf [root@hf-01 ~]# 而後複製配置文件並粘貼進去,更改虛擬IP和主同樣的 [root@hf-01 ~]# vim /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" interval 3 } vrrp_instance VI_1 { state BACKUP //這裏 和master不同的名字 interface eno16777736 //網卡和當前機器一致,不然沒法啓動keepalived服務 virtual_router_id 51 //和主機器 保持一致 priority 90 //權重,要比主機器小的數值 advert_int 1 authentication { auth_type PASS auth_pass aminglinux>com } virtual_ipaddress { 192.168.74.100 //這裏更改成192.168.74.100 } track_script { chk_nginx } } 保存退出
[root@hf-01 ~]# vim /usr/local/sbin/check_ng.sh #時間變量,用於記錄日誌 d=`date --date today +%Y%m%d_%H:%M:%S` #計算nginx進程數量 n=`ps -C nginx --no-heading|wc -l` #若是進程爲0,則啓動nginx,而且再次檢測nginx進程數量, #若是還爲0,說明nginx沒法啓動,此時須要關閉keepalived if [ $n -eq "0" ]; then systemctl start nginx 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 保存退出
[root@hf-01 ~]# chmod 755 /usr/local/sbin/check_ng.sh [root@hf-01 ~]#
[root@hf-01 ~]# systemctl start keepalived [root@hf-01 ~]# ps aux |grep keep root 2814 0.0 0.1 121324 1396 ? Ss 07:10 0:00 /usr/sbin/keepalived -D root 2815 0.0 0.2 121324 2740 ? S 07:10 0:00 /usr/sbin/keepalived -D root 2816 0.0 0.2 121324 2324 ? S 07:10 0:00 /usr/sbin/keepalived -D root 2827 0.0 0.0 112672 980 pts/0 R+ 07:10 0:00 grep --color=auto keep [root@hf-01 ~]#
[root@hanfeng ~]# 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/champ.sock; #fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name; } } [root@hanfeng ~]# cat /data/wwwroot/default/index.html This is the default sete. [root@cham002 ~]# vim /data/wwwroot/default/index.html master This is the default sete. [root@cham002 ~]#
[root@hf-02~]# cat /usr/share/nginx/html/index.html [root@hf-02 ~]# vim /usr/share/nginx/html/index.html backup backup.
![輸入圖片說明](https://static.oschina.net/uploads/img/201801/28233716_ovDw.png "backup機器訪問IP")
[root@hanfeng ~]# systemctl stop keepalived [root@hanfeng ~]#
[root@hanfeng ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:c7:05:28 brd ff:ff:ff:ff:ff:ff inet 192.168.74.130/24 brd 192.168.74.255 scope global dynamic eno16777736 valid_lft 1219sec preferred_lft 1219sec inet6 fe80::20c:29ff:fec7:528/64 scope link valid_lft forever preferred_lft forever [root@hanfeng ~]#
[root@hf-01 ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ff:fe:93 brd ff:ff:ff:ff:ff:ff inet 192.168.74.129/24 brd 192.168.74.255 scope global eno16777736 valid_lft forever preferred_lft forever inet 192.168.74.100/32 scope global eno16777736 valid_lft forever preferred_lft forever inet 192.168.74.150/24 brd 192.168.74.255 scope global secondary eno16777736:0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:feff:fe93/64 scope link valid_lft forever preferred_lft forever [root@hf-01 ~]#
[root@hf-01 ~]# tail /var/log/messages Jan 29 08:20:39 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:39 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:39 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:39 hanfeng avahi-daemon[568]: Registering new address record for 192.168.74.100 on eno16777736.IPv4. Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eno16777736 for 192.168.74.100 Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 [root@hf-01 ~]#
瀏覽器訪問vip,會看到已經變成backup機器上的了php
在master機器(即A機器)啓動keepalived服務,會看到vip這個IP馬上回來了html
[root@hanfeng ~]# systemctl start keepalived [root@hanfeng ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:c7:05:28 brd ff:ff:ff:ff:ff:ff inet 192.168.74.130/24 brd 192.168.74.255 scope global dynamic eno16777736 valid_lft 1577sec preferred_lft 1577sec inet 192.168.74.100/32 scope global eno16777736 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fec7:528/64 scope link valid_lft forever preferred_lft forever [root@hanfeng ~]#
[root@hf-01 ~]# tail /var/log/messages Jan 29 08:20:39 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:39 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:39 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:39 hanfeng avahi-daemon[568]: Registering new address record for 192.168.74.100 on eno16777736.IPv4. Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eno16777736 for 192.168.74.100 Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 [root@hf-01 ~]# tail /var/log/messages Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:20:44 hanfeng Keepalived_vrrp[7886]: Sending gratuitous ARP on eno16777736 for 192.168.74.100 Jan 29 08:30:01 hanfeng systemd: Started Session 49 of user root. Jan 29 08:30:01 hanfeng systemd: Starting Session 49 of user root. Jan 29 08:30:51 hanfeng Keepalived_vrrp[7886]: VRRP_Instance(VI_1) Received advert with higher priority 100, ours 90 Jan 29 08:30:51 hanfeng Keepalived_vrrp[7886]: VRRP_Instance(VI_1) Entering BACKUP STATE Jan 29 08:30:51 hanfeng Keepalived_vrrp[7886]: VRRP_Instance(VI_1) removing protocol VIPs. Jan 29 08:30:51 hanfeng avahi-daemon[568]: Withdrawing address record for 192.168.74.100 on eno16777736. [root@hf-01 ~]#
##總結mysql