18.1 集羣介紹
18.2 keepalived介紹
18.3/18.4/18.5 用keepalived配置高可用集羣
擴展
heartbeat和keepalived比較http://blog.csdn.net/yunhua_lee/article/details/9788433
DRBD工做原理和配置 http://502245466.blog.51cto.com/7559397/1298945
mysql+keepalived http://lizhenliang.blog.51cto.com/7876557/1362313html
B機器yum安裝nginx [root@yong-02 ~]# yum install -y nginx
A機器更改配置文件 [root@yong-01 ~]# ls /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf [root@yong-01 ~]# > !$ > /etc/keepalived/keepalived.conf [root@yong-01 ~]# vim !$ vim /etc/keepalived/keepalived.conf //去文件地址去下載內容 將拷貝的內容複製進去 只須要改網卡名字和IP192.168.180.100 ####################### # 全局配置 ####################### global_defs { //global_defs 全局配置標識 notification_email { //notification_email用於設置報警郵件地址 yyli2008@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 ens33 //經過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.180.100 //更改成192.168.180.100 } track_script { //加載腳本 chk_nginx } }
A機器定義監控腳本 [root@yong-01 ~]# 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@yong-01 ~]# chmod 755 /usr/local/sbin/check_ng.sh
[root@yong-01 ~]# systemctl start keepalived [root@yong-01 ~]# ps aux |grep keep root 4979 0.0 0.0 118608 1384 ? Ss 23:14 0:00 /usr/sbin/keepalived -D root 4980 0.0 0.1 127468 3288 ? S 23:14 0:00 /usr/sbin/keepalived -D root 4982 0.0 0.1 127340 2820 ? S 23:14 0:00 /usr/sbin/keepalived -D root 6125 0.0 0.0 112676 984 pts/0 R+ 23:23 0:00 grep --color=auto keep
[root@yong-01 ~]# ps aux |grep nginx root 4648 0.0 0.0 24792 760 ? Ss 22:55 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 4649 0.0 0.0 25188 1720 ? S 22:55 0:00 nginx: worker process root 6187 0.0 0.0 112676 984 pts/0 R+ 23:24 0:00 grep --color=auto nginx
[root@yong-01 ~]# /etc/init.d/nginx stop Stopping nginx (via systemctl): [ 肯定 ] [root@yong-01 ~]# ps aux |grep nginx root 6270 0.0 0.0 24792 756 ? Ss 23:24 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 6274 0.0 0.0 25188 1212 ? S 23:24 0:00 nginx: worker process root 6282 0.0 0.0 112676 984 pts/0 R+ 23:24 0:00 grep --color=auto nginx
[root@yong-01 ~]# 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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:29:2b:60 brd ff:ff:ff:ff:ff:ff inet 192.168.180.134/24 brd 192.168.180.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.180.100/32 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::8004:45b5:96c5:3ca5/64 scope link valid_lft forever preferred_lft forever
首先清空B機器keepalived裏面自帶的配置文件 [root@yong-02 ~]# >/etc/keepalived/keepalived.conf [root@yong-02 ~]# vim /etc/keepalived/keepalived.conf 而後複製配置文件並粘貼進去,更改虛擬IP和主同樣的 global_defs { notification_email { yyli2008@163.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 ens33 //網卡和當前機器一致,不然沒法啓動keepalived服務 virtual_router_id 51 //和主機器 保持一致 priority 90 //權重,要比主機器小的數值 advert_int 1 authentication { auth_type PASS auth_pass aminglinux>com } virtual_ipaddress { 192.168.180.100 //這裏更改成192.168.180.100 } track_script { chk_nginx } }
[root@yong-02 ~]# 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@yong-02 ~]# chmod 755 /usr/local/sbin/check_ng.sh
[root@yong-02 ~]# systemctl start keepalived [root@yong-02 ~]# ps aux |grep keepalived root 2507 0.0 0.0 118608 1384 ? Ss 23:34 0:00 /usr/sbin/keepalived -D root 2508 0.0 0.1 122804 2376 ? S 23:34 0:00 /usr/sbin/keepalived -D root 2509 0.0 0.1 122804 2420 ? S 23:34 0:00 /usr/sbin/keepalived -D root 2515 0.0 0.0 112676 984 pts/0 R+ 23:34 0:00 grep --color=auto keepalived
[root@yong-01 ~]# mv /usr/local/nginx/html/index.html /usr/local/nginx/html/index.html.bak [root@yong-01 ~]# vim /usr/local/nginx/html/index.html master This is the default sete.
[root@yong-02 ~]# mv /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.bak [root@yong-02 ~]# vim /usr/share/nginx/html/index.html backup backup.
[root@yong-01 ~]# systemctl stop keepalived
[root@yong-01 ~]# 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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:29:2b:60 brd ff:ff:ff:ff:ff:ff inet 192.168.180.134/24 brd 192.168.180.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::8004:45b5:96c5:3ca5/64 scope link valid_lft forever preferred_lft forever
[root@yong-02 ~]# 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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:36:a2:be brd ff:ff:ff:ff:ff:ff inet 192.168.180.135/24 brd 192.168.180.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.180.100/32 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.180.136/24 brd 192.168.180.255 scope global secondary ens33:0 valid_lft forever preferred_lft forever inet6 fe80::c44:f02d:4192:8d42/64 scope link valid_lft forever preferred_lft forever
[root@yong-02 ~]# tail /var/log/messages Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100
瀏覽器訪問vip,會看到已經變成backup機器上的了mysql
在master機器(即A機器)啓動keepalived服務,會看到vip這個IP馬上回來了linux
[root@yong-01 ~]# systemctl start keepalived [root@yong-01 ~]# 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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:29:2b:60 brd ff:ff:ff:ff:ff:ff inet 192.168.180.134/24 brd 192.168.180.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.180.100/32 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::8004:45b5:96c5:3ca5/64 scope link valid_lft forever preferred_lft forever
[root@yong-02 ~]# tail /var/log/messages Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100
##總結nginx