安裝 下載(https://www.keepalived.org/download.html) wget https://www.keepalived.org/software/keepalived-2.1.5.tar.gz tar -xvf keepalived-2.1.5.tar.gz -C /usr/local/src cd /usr/local/src/keepalived-2.1.5 ./configure --prefix=/ #安裝一般不能一帆風順,一般會缺少OpenSSL #1.在線安裝:yum install -y openssl openssl-devel #2.離線安裝:參考離線安裝openssl.md make && make install 修改配置 /etc/keepalived/keepalived.conf #node117 ! Configuration File for keepalived global_defs { router_id lb01 } vrrp_script chk_msql { script "/etc/keepalived/check_mysql.sh" interval 3 timeout 9 fall 2 rise 2 weight -20 } vrrp_instance VI_1 { state BACKUP interface ens192 virtual_router_id 125 mcast_src_ip 192.168.6.117 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_msql } virtual_ipaddress { 192.168.6.125 } } #node118 ! Configuration File for keepalived global_defs { router_id lb01 } vrrp_script chk_msql { script "/etc/keepalived/check_mysql.sh" interval 3 timeout 9 fall 2 rise 2 weight -20 } vrrp_instance VI_1 { state BACKUP interface ens192 virtual_router_id 125 mcast_src_ip 192.168.6.118 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_msql } virtual_ipaddress { 192.168.6.125 } } #check_mysql.sh #!/bin/bash #MYSQL=mysql #MYSQL_HOST=localhost #MYSQL_USER=root MYSQL_PASSWORD=xiaoWEI0923! #$MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD -e "show status;" >/dev/null 2>&1 mysql -uroot -p$MYSQL_PASSWORD -e "show status;" >/dev/null 2>&1 #$mysqlclient --host=$host --port=$port --user=$user --password=$password -e "show databases;" > /dev/null 2>&1 if [ $? == 0 ] then echo " $host mysql login successfully " exit 0 else #echo " $host mysql login faild" #/etc/init.d/keepalived stop exit 2 fi #check_nginx.sh #!/bin/bash A=`ps -C nginx --no-header | wc -l` if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf sleep 2 if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then #systemctl stop keepalived echo "nginx exit" exit 2 fi fi echo "nginx running..." exit 0 啟動 systemctl enable keepalived.service systemctl start keepalived.service # 可通過status查看相關錯誤 systemctl status keepalived.service 測試 1.ip addr查看虛擬ip綁定到了哪台機器(假如為A機器) 2.停止A機器keepalived,確認ip綁定到了另一台機器(B機器) 3.啟動A機器keealived,停止B機器上keepavlived,ip綁定到A機器 4.同樣方式測試mysql,停止A機器mysql,ip綁定到了B 4.恢復A機器mysql,停止B機器mysql,ip綁定到了A 另一種配置方法 #通過端口區分不同業務 ! Configuration File for keepalived global_defs { router_id 001 } vrrp_instance VI_1 { state MASTER interface ens192 virtual_router_id 125 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.6.125 } track_script { nginx_check } } vrrp_script nginx_check { script "/etc/keepalived/scripts/check_n.sh" interval 1 weight -20 } virtual_server 192.168.6.125 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 protocol TCP real_server 192.168.6.117 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.6.118 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }