# 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 ```