keepalived+haproxy安裝(高可用)

keepalived是定一個沒有機器再用的ip(也就是ping不通的地址),做虛擬ip,這個ip下面綁定幾個真實node的ip,當請求這個虛擬ip的時候就會被轉發(fā)到某個子ip機器上,來實現(xiàn)高可用。


Haproxy是類似于nginx的轉發(fā)的軟件。當你請求我這里一個端口,我把他轉發(fā)到幾個其他的機器的端口。


上面兩個配合使用,keepalived定義一個虛擬ip,當請求過來后到某一個當選的節(jié)點,然后這個節(jié)點把請求再轉發(fā)到這幾個節(jié)點上,來實現(xiàn)高可用。



yum install -ykeepalived

vim /etc/keepalived/keepalived.conf

修改方法(參考文件在最下面):

-------------------------------------------------------------------

關鍵的是virtual_ipaddress? 這里需要寫一個虛擬ip地址 找一個你ping 不同的也就是不用的,建議在同一網(wǎng)段,也就是差距不大的比較靠近的如:我的節(jié)點是172.20.0.68,我找了一個這個范圍靠后的172.20.0.251

易錯點interface? 目前ip地址所在的網(wǎng)口

Priority??????? 權限依次排列不能超過250

State?? ??????? 一個MASTER 其他都是BACKUP

K8s的每個master節(jié)點都要部署

---------------------------------------------------------------

啟動語句:

systemctl daemon-reload && systemctl enable keepalived && systemctl start keepalived && systemctl status keepalived

啟動后,在master節(jié)點輸入ip address? 查看是否有172.20.0.251/32(注意只有一個節(jié)點能競爭到,其他的節(jié)點就沒有,你可以重啟該節(jié)點,你就會在別的節(jié)點ip address 下看到)

重啟語句:

systemctldaemon-reload && systemctl enable keepalived && systemctlrestart keepalived && systemctl status keepalived


yum install -yhaproxy

vim/etc/haproxy/haproxy.cfg

參考修改:

-------------------------------------------------------------

bind 后面的填入代表了匹配所有發(fā)送到該端口的數(shù)據(jù)包?*:19900?? 但是我們需要它來轉發(fā)虛擬ip的數(shù)據(jù)包時,發(fā)往真實地址的數(shù)據(jù)包就不適合被接受所以需要寫成172.20.0.251:19900? 但是這樣需要添加一個配置?讓節(jié)點忽略不需要的數(shù)據(jù)包

cat <? /etc/sysctl.d/k8s.conf

net.ipv4.ip_nonlocal_bind = 1

EOF

sysctl --system


易錯點

Frontend下面的default_backend 需要和backend 一一對應同名

我這里配置了兩個端口轉發(fā)規(guī)則,一般要一個16443就好,19900不需要

對應的6443是自己的master節(jié)點

K8s的每個master節(jié)點都要部署

------------------------------------------------------------

啟動語句:

systemctl daemon-reload && systemctl enable haproxy && systemctl start haproxy && systemctl status haproxy

重啟語句

systemctl daemon-reload && systemctl enable haproxy && systemctl restart haproxy && systemctl status haproxy


keepalived.conf

?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?!

! Configuration File for keepalived

global_defs {

? router_id LVS_k8s

}

vrrp_script CheckK8sMaster {

? ? script "killall -0 haproxy"

? ? interval 2

}

vrrp_instance VI_1 {

? ? state MASTER

? ? interface macvlan

? ? virtual_router_id 51

? ? # 主節(jié)點權重最高 依次減少

? ? priority 150

? ? advert_int 1

? ? #修改為本地IP

? ? #mcast_src_ip 172.20.0.68

? ? authentication {

? ? ? ? auth_type PASS

? ? ? ? auth_pass 1111

? ? }

? ? virtual_ipaddress {

? ? ? ? 172.20.0.251

? ? }

? ? track_script {

? ? ? ? CheckK8sMaster

? ? }

}

?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?!

haproxy.cfg

?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?!

global

? ? log? ? ? ? 127.0.0.1 local2

? ? chroot? ? ? /var/lib/haproxy

? ? pidfile? ? /var/run/haproxy.pid

? ? maxconn? ? 4000

? ? user? ? ? ? haproxy

? ? group? ? ? haproxy

? ? daemon

? ? # turn on stats unix socket

? ? stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------

# common defaults that all the 'listen' and 'backend' sections will

# use if not designated in their block

#---------------------------------------------------------------------

defaults

? ? mode? ? ? ? ? ? ? ? ? ? http

? ? log? ? ? ? ? ? ? ? ? ? global

? ? option? ? ? ? ? ? ? ? ? httplog

? ? option? ? ? ? ? ? ? ? ? dontlognull

? ? option http-server-close

? ? option forwardfor? ? ? except 127.0.0.0/8

? ? option? ? ? ? ? ? ? ? ? redispatch

? ? retries? ? ? ? ? ? ? ? 3

? ? timeout connect? ? ? ? 10s

? ? timeout client? ? ? ? ? 1m

? ? timeout server? ? ? ? ? 1m

? ? timeout http-keep-alive 10s

? ? timeout check? ? ? ? ? 10s

? ? maxconn? ? ? ? ? ? ? ? 3000

#---------------------------------------------------------------------

# kubernetes apiserver frontend which proxys to the backend

#---------------------------------------------------------------------

frontend kubernetes-apiserver

? ? mode? ? ? ? ? ? ? ? tcp

? ? bind? ? ? ? ? ? ? ? 172.20.0.251:16443

? ? option? ? ? ? ? ? ? tcplog

? ? default_backend? ? ? kubernetes-apiserver

#---------------------------------------------------------------------

# round robin balancing between the various backends

#---------------------------------------------------------------------

backend kubernetes-apiserver

? ? mode? ? ? ? tcp

? ? balance? ? roundrobin

? ? server? sz-pg-oam-k8snode-010 172.20.0.71:6443 check

#? ? server? sz-pg-oam-k8snode-009 172.20.0.70:6443 check

? ? server? sz-pg-oam-k8snode-007 172.20.0.68:6443 check

#---------------------------------------------------------------------

# kubernetes apiserver frontend which proxys to the backends

#---------------------------------------------------------------------

frontend ipallocator-server

? ? mode? ? ? ? ? ? ? ? tcp

? ? bind? ? ? ? ? ? ? ? *:19900

? ? option? ? ? ? ? ? ? tcplog

? ? default_backend? ? ? ipallocator-server

#---------------------------------------------------------------------

# round robin balancing between the various backends

#---------------------------------------------------------------------

backend ipallocator-server

? ? mode? ? ? ? tcp

? ? balance? ? roundrobin

? ? server? k8snode-010 172.20.0.71:9900 check

#? ? server? k8snode-009 172.20.0.70:9900 check

? ? server? k8snode-007 172.20.0.68:9900 check

#---------------------------------------------------------------------

# collection haproxy statistics message

#---------------------------------------------------------------------

listen stats

? ? bind? ? ? ? ? ? ? ? *:1080

? ? stats auth? ? ? ? ? admin:awesomePassword

? ? stats refresh? ? ? ? 5s

? ? stats realm? ? ? ? ? HAProxy\ Statistics

? ? stats uri? ? ? ? ? ? /admin?statseck

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容