docker下用keepalived+Haproxy實現高可用負載均衡集群


啟動keepalived后宿主機無法ping通用keepalived,報錯:

[root@localhost ~]# ping 172.18.0.15
PING 172.18.0.15 (172.18.0.15) 56(84) bytes of data.
From 172.18.0.1 icmp_seq=1 Destination Host Unreachable
From 172.18.0.1 icmp_seq=2 Destination Host Unreachable
From 172.18.0.1 icmp_seq=3 Destination Host Unreachable
From 172.18.0.1 icmp_seq=4 Destination Host Unreachable
From 172.18.0.1 icmp_seq=5 Destination Host Unreachable
From 172.18.0.1 icmp_seq=6 Destination Host Unreachable

解決方案:

大多數都是我把配置文件沒寫對,重寫配置文件,重啟服務;

這里檢查能否ping通,需要看服務內你的配置文件寫入的ip有沒有出現在docker的網卡上,具體方法是:

進入到docker服務內,不是在宿主機上哦,查看配置文件
root@8351443065ea:/etc/keepalived# cat keepalived.conf
vrrp_instance  VI_1 {
    state  MASTER
    interface  eth0
    virtual_router_id  100
    priority  100
    advert_int  1
    authentication {
        auth_type  PASS
        auth_pass  123456
    }
    virtual_ipaddress {
        172.18.0.201
    }
}
如果配置文件信息都是正確的,通過ip a命令會顯示如當前docker服務有的網卡
root@ec688a676a07:/# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
17: eth0@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default ;
 
很明顯沒有我配置文件中的172.18.0.201ip地址,代表配置文件未生效,大多數配置文件錯誤
 
停掉keepalived服務重新修改編輯后重啟
root@ec688a676a07:/# service keepalived stop 
[....] Stopping keepalived: keepalived. ok 
重啟服務
root@ec688a676a07:/# service keepalived start
[....] Starting keepalived: keepalived. ok 

再次查看docker服務的ip
root@ec688a676a07:/# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
17: eth0@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:12:00:07 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.18.0.7/16 scope global eth0
       valid_lft forever preferred_lft forever
這里出現了我的配置文件ip地址
    inet 172.18.0.201/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe12:7/64 scope link 
       valid_lft forever preferred_lft forever

在服務內直接ping這個ip,發現能ping通,切換宿主機,也能ping通,解決問題
[root@localhost ~]# ping 172.18.0.201
PING 172.18.0.201 (172.18.0.201) 56(84) bytes of data.
64 bytes from 172.18.0.201: icmp_seq=1 ttl=64 time=0.077 ms
64 bytes from 172.18.0.201: icmp_seq=2 ttl=64 time=0.064 ms

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM