进学阁

业精于勤荒于嬉,行成于思毁于随

0%

负载均衡器构建(三)

实现方式:

基于Keepalived 和 HAproxy实现负载均衡器的高可用。

上图是我们的部署架构,包含三个主节点,三个工作节点,两个用于负载均衡的节点,以及一个虚拟 IP 地址,虚拟 IP 地址也可称为“浮动 IP 地址”。这意味着在节点故障的情况下,该 IP 地址可在节点之间漂移,从而实现高可用。

配置负载均衡器:

Keepalived 提供 VRRP 实现,并允许您配置 Linux 机器使负载均衡,预防单点故障。HAProxy 提供可靠、高性能的负载均衡,能与 Keepalived 完美配合。

由于 lb1 和 lb2 上安装了 Keepalived 和 HAproxy,如果其中一个节点故障,虚拟 IP 地址(即浮动 IP 地址)将自动与另一个节点关联,使集群仍然可以正常运行,从而实现高可用。若有需要,也可以此为目的,添加更多安装 Keepalived 和 HAproxy 的节点。

安装Keepalived和HAproxy

1
yum install -y keepalived haproxy psmisc

检查是否安装成功

1
2
3
yum list installed | grep keepalived
yum list installed | grep haproxy
yum list installed | grep psmisc

配置haproxy

  1. 在两台用于负载均衡的机器上运行以下命令以配置 Proxy(两台机器的 Proxy 配置相同)
1
vim /etc/haproxy/haproxy.cfg
  1. 以下是示例配置,供您参考(请注意 server 字段。请记住 6443 是 apiserver 端口)
  2. 保存文件并运行以下命令以重启 HAproxy。
1
systemctl restart haproxy
  1. 使 HAproxy 在开机后自动运行:
1
systemctl enable haproxy
  1. 确保另外一台机器也配置了HAproxy

配置Keepalived

两台机器上必须都安装 Keepalived,但在配置上略有不同。

  1. 运行以下命令以配置 Keepalived。
1
vim /etc/keepalived/keepalived.conf
  1. 以下为slb1 master的配置,仅供参考

配置解读:

  • state,priority:设置节点的初始状态及优先级,Master要高于BACKUP至少50
  • interface:设置网卡信息,当LVS接管时,将会把IP地址添加到该网卡上,可通过ifconfig查看
  • unicast_src_ip:源IP地址,即配置当前机器的IP
  • unicast_peer:目标地址,即配置所有作为负载均衡器中的其他节点IP
  • virtual_ipaddress:设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
  • authentication:认证信息,auth_type有PASS和AH两种,同一个vrrp_instance下,MASTER和BACKUP的密码必须一致才能正常通信
  • virtual_router_id:设置VRID标记,主从Keepalived此属性必须设置成一致,否则VIP无法漂移
  1. 在/etc/keepalived/路径下创建设置检测脚本check_haproxy.sh同时授予可执行权限
1
chmod +x check_haproxy.sh
  1. 保存文件并运行以下命令以重启 Keepalived。
1
systemctl restart keepalived
  1. 使 Keepalived 在开机后自动运行:
1
systemctl enable keepalived
  1. 保证另外一台机器slb2 也安装配置好keepalived,操作过程跟上面一样,注意修改以下几处
1
2
3
4
5
6
7
8
9
10
11
12
#源主机IP,当前服务器ip
unicast_src_ip 源主机IP地址

#目标主机IP集合,另外一台slb服务器ip
unicast_peer {
ip1
}

#设置VIP
virtual_ipaddress {
172.30.xx.xx # The VIP address
}

修改主备机器的优先级

1
2
state BACKUP  # 指定实例初始状态,实际的MASTER和BACKUP是选举决定的。
priority 100 # 设置优先级,优先级高的会被竞选为Master,Master要高于BACKUP至少50

指定主备(MASTER、BACKUP)时注意,指定一台默认MASTER,其余为BACKUP。Master的priority 要高于BACKUP的priority ,其中BACKUP的priority 至少50

验证高可用

在开始创建 Kubernetes 集群之前,请确保已经测试了高可用。验证过程如下:

  1. 在机器slb1上,运行以下命令:
  2. 如上所示,虚拟IP已经成功添加,模拟此节点故障
1
systemctl stop haproxy keepalived

注意:由于我们在keepalived检测脚本中设置了检测功能,若HAproxy失效会自动重启HAproxy,所以验证的时候需要将keepalived停掉

  1. 再次检查浮动 IP 地址,您可以看到该地址在 slb1 上消失了。
  2. 如果配置成功,该虚拟 IP 会漂移到另一台机器 (slb2) 上。在 slb2 上运行以下命令,这是预期的输出:
  3. 此时我们重新启动slb1上的 keepalived,虚拟IP会被Master抢占,可通过在备机上查看keepalived状态和haproxy状态通过日志可以看出虚拟IP被优先级高的机器抢走,同时在Master节点查看ip信息,确认虚拟IP漂移成功
  4. 如上所示,外部负载均衡高可用已经配置成功。