* [ ] 我們有三臺master,必須要做負載均衡,我們用haproxy來做負載均衡,為了避免單點故障,我們用2臺haproxy加上keepalived來做高可用
* [ ] 安裝haproxy和keepalived
* [ ] apt-get install haproxy
* [ ] apt-get install keepalived
# 配置haproxy
### 安裝好了haproxy后,編輯haproxy的配置文件:
```
vim /etc/haproxy/cfg.conf
global
log 127.0.0.1 local0 info
maxconn 4096
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
defaults
log global
mode tcp
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
listen stats
bind *:9000
mode http
stats enable
stats hide-version
stats uri /stats
stats refresh 30s
stats realm Haproxy\ Statistics
stats auth admin:P@ssw0rd
frontend k8s-api
bind *:6443
mode tcp
option tcplog
default_backend k8s-api
backend k8s-api
mode tcp
option tcplog
option tcp-check
balance leastconn
default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
server k8s-master1 192.168.11.212:6443 check
server k8s-master2 192.168.11.213:6443 check
server k8s-master3 192.168.11.214:6443 check
```
# 兩臺haproxy的配置文件一樣我們通過keepalived來對haproxy做主從
啟動haproxy systemctl start haproxy
部署keealived,這里也給出配置文件
```
root@ubuntu:/etc/keepalived# ls
check_haproxy.sh keepalived.conf
#!/bin/sh
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
systemctl restart haproxy
fi
sleep 2
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
killall keepalived
fi
```
* * * * *
```
cat keepalived.conf
! Configuration File for keepalived
#global setting , notify email setting
global_defs {
#存在于同一個網段中,一組keepalived的各個節點都有不同的名字
#在全局設置中,我們還可以設置管理員的email信息等。
router_id LVS_V1
}
#這個是我們在上一小結講到的haproxy檢查腳本,我們保存在這個文件中(注意文件權限)
vrrp_script chkhaproxy {
script "/etc/keepalived/check_haproxy.sh"
#每10秒鐘,檢查一次
interval 10
}
#keepalived實例設置,是最重要的設置信息
vrrp_instance VI_1 {
#state狀態MASTER表示是主要工作節點。
#一個keepalived組中,最多只有一個MASTER節點,當然也可以沒有
state MASTER
#實例所綁定的網卡設備,我的網卡設備是ens33。您按照您自己的來
interface ens160
#同一個keepalived組,節點的設置必須一樣,這樣才會被識別
virtual_router_id 52
#節點優先級,BACKUP的優先級一定要比MASTER的優先級低
priority 100
#組播信息發送間隔,兩個節點設置必須一樣
advert_int 1
#實際的ens33上的固定ip地址
mcast_src_ip 192.168.11.215
#驗證信息,只有驗證信息相同,才能被加入到一個組中。
authentication {
auth_type PASS
auth_pass 1111
}
#虛擬地址和綁定的端口,如果有多個,就綁定多個
#dev 是指定浮動IP要綁定的網卡設備號
virtual_ipaddress {
192.168.11.230/24 dev ens160
}
#設置的檢查腳本
#關聯上方的“vrrp_script chkhaproxy”
track_script {
chkhaproxy
}
}
```
!注意
節點優先級,BACKUP的優先級一定要比MASTER的優先級低
priority 100
這里就是來區分haproxy主從的關鍵點一定要寫好
啟動服務:
systemctl start keepalived
檢查:
ip a 查看網卡是否出現了虛擬ip