# haproxy和keepalived部署
```
apt-get install haproxy
#配置文件
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
```
# keepalived部署
```
apt-get install keepalived
配置文件:
root@ubuntu:/etc/keepalived# ls
check_haproxy.sh keepalived.conf
#vim check_haproxy.sh
#!/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
#chmod +x check_haproxy.sh
# vim 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
ps -ef | grep keepalived
netstat -anptu | grep :6443
注意:如果该虚拟ip的端口没有起来,node节点的kubelet组件无法连接到master的kube-apiserver组件,无法启动kubelet服务。
启动服务后,尝试用master节点和node节点去Ping一下该虚拟ip,看是否可以互相通信。否则,检查keepalived的端口。
root@a4:/etc/keepalived# netstat -ntpul | grep :6443
tcp 0 0 0.0.0.0:6443 0.0.0.0:* LISTEN 3428/haproxy
```