* [ ] 我们有三台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