keepalived+mysql backup服務器可ping通過vip但telnet vip+3306失敗問題

環境:

OS:CentOS 7_X64

數據庫:mysql-5.7

MASTER:192.168.119.23

BACKUP:192.168.119.24

VIP:192.168.119.138


keepalived+mysql搭建過程的詳細配置就不描述了,網上很多寫得很詳細的配置文檔自己可以去參考,我們直奔主題 。

這裏主要分享在下本人在搭建公司的keepavlied+mysql出現一個很奇怪的現象,當A服務器爲master主時邦定VIP 192.168.119.138,在A本機上可以正常ping 192.168.119.138 和 telnet 192.168.119.138 3306端口,此時在B服務器上ping 192.168.119.138也正常,但telnet 192.168.119.138 3306 時出現找不到路由的錯誤提示,同時檢查B服務器此時是沒有VIP 屬於正常的現象,可是telnet VIP+其他端口正常的。

經常反覆的測試發現,當A、B服務器同時運行keepalived時,作爲backup角色的服務器無法telnet 192.168.119.138 3306,將backup角色服務器上的keepalived關閉後,卻可以正常ping telnet。

問題還是在於配置文件,將keepalived.conf配置文件的LVS用不到調試算法lb_algo和轉發方式lb_kind去掉,正是這兩項導致backup服務器無法訪問mysql。正常的配置文件如下: 

[root@DB01 ~]# vi  /etc/keepalived/keepalived.conf

global_defs {

notification_email {

[email protected]

}

notification_email_from  [email protected]

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id MYSQL_HA      #標識,雙主相同

}

vrrp_instance VI_1 {

state BACKUP           #兩臺都設置BACKUP

interface eth0

virtual_router_id 51       #主備相同

priority 100           #優先級,backup設置50

advert_int 1

nopreempt             #不主動搶佔資源,只在master這臺優先級高的設置,backup不需設置

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.119.138

}

}

virtual_server 192.168.0.204 3306 {

delay_loop 2

#lb_algo rr              #LVS算法,用不到,我們就關閉了

#lb_kind DR              #就是這項導致上述的現象,LVS模式,如果不關閉,備用服務器不能通過VIP連接主MySQL

persistence_timeout 50  #同一IP的連接60秒內被分配到同一臺真實服務器

protocol TCP

real_server 192.168.119.23 3306 {   #檢測本地mysql,backup也要寫檢測本地mysql

weight 3

notify_down /usr/local/keepalived/mysql.sh    #當mysq服down時,執行此腳本,殺死keepalived實現切換,也可以加入其他命令或腳本。

TCP_CHECK {

connect_timeout 3    #連接超時

nb_get_retry 3       #重試次數

delay_before_retry 3 #重試間隔時間

}

}


雖然問題是解決的了,但沒搞明白爲什麼會這樣?我使用相同版本的mysql和keepalived在RHEL 6.0 X64環境下測試並沒有出現這問題。求高手出現解答。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章