K8S二进制部署高可用集群-1.22[二]
本节前言:
本节关键字:KeepAlived、LVS;
本节为部署Keepalived及LVS,并作一些相关的配置;为什么本处先部署负载均衡器?这是由于K8S集群的配置过程中,需要使用到负载均衡器的"VIP"[192.168.100.40],而在K8S的组件部署过程中,博主希望可以实时检查K8S组件部署的正确性,所以,本示例先部署了负载均衡器部分;
关于负载均衡的方案,博主选择了"Keepalived"+"LVS",没什么原因,因为博主刚刚好懂这个,另外,LVS在四层方面的数据转发性能,没什么可以说的,基本是最NB的~当然使用这个方案,如果你要应用至生产环境,那么你可能还需要了解很多东西,仅就一篇博文,显然包含不了那么多的内容;另外,如果你在公有云上搭建高可用集群,建议你使用云供应商的负载均衡服务,一是减少集群维护难度,二是并不是所有的云供应商都支持"VIP"这个功能!
另外,基于LVS的特性及示例网络的网段地址,限制了K8S组件的一些配置值,这些配置值的原因,博主尽量在博文中说明……
一、负载均衡器部署
本处的负载均衡使用了两个节点,避免的了单点故障;
安装Keepalived与LVS[注:LVS的包就是"ipvsadm"]:
1 2 3 4 5 |
# 安装Keepalived与LVS yum install keepalived ipvsadm -y # 创建Keepalive的一些目录[实际不需要创建,这是博主以前KEEPALIVE的一些配置中的步骤] mkdir -p /etc/keepalived/{conf.d,sh} |
创建KEEPALIVED主节点的"keepalived.conf"配置文件,操作目标[192.168.100.44]:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# [192.168.100.44] cat > /etc/keepalived/keepalived.conf << "EOF" ! Configuration File for keepalived # 必须的第一行 global_defs { # 全局定义 router_id LVS_DR01 # 标识信息[默认使用本地主机的名称][不同主机不应该相同] } # KEEPALIVED配置 vrrp_instance LVS_DR { # 定义VRRP实例名称[主备服务器上以此名称进行关联][待验证] state MASTER # 定义服务器启动时的初始角色[启动后由"priority"决定][从服务器"BACKUP"] interface eth0 # 心跳检测所使用的接口 mcast_src_ip 192.168.100.44 # 指定心跳包的源IP advert_int 5 # 心跳广播检测间隔 virtual_router_id 50 # 定义"虚拟路由器ID"[主备服务器共同组成一个虚拟路由器,其ID为"50"][1-255] priority 150 # 优先级[数值越大优先级越高][MASTER服务一般配置比从服务器高50] authentication { # 启用认证[官方建议"PASS"模式] auth_type PASS # 认证方式:密码认证 auth_pass adminroot888 # 认证密码 } virtual_ipaddress { # 定义VIP的配置 192.168.100.40/24 dev eth0 } } # LVS配置 virtual_server 192.168.100.40 6443 { # 等同"ipvsadm -A -t 192.168.100.40:6443 -s rr" delay_loop 10 # 对RS服务器健康检查的间隔[默认"60"秒] protocol TCP # 等同"ipvsadm"的"-t"选项 lvs_sched rr # 等同"ipvsadm"的"-s"选项[定义调度算法] lvs_method DR # 等同"ipvsadm"的"-g"选项[定义LVS的转发模式] #persistence_timeout 3600 # 等同"ipvsadm"的"-p"选项[IPVS的持久化] real_server 192.168.100.41 6443 { # 等同"ipvsadm -a -t 192.168.100.41:6443 -r 192.168.100.40 -w 1" weight 1 # 等同"ipvsadm"的"-w"选项[定义RS的权重] TCP_CHECK { # 定义了使用"TCP_CHECK"这一模式进行健康检查 connect_timeout 3 } } real_server 192.168.100.42 6443 { weight 1 TCP_CHECK { connect_timeout 3 } } real_server 192.168.100.43 6443 { weight 1 TCP_CHECK { connect_timeout 3 } } } EOF |
创建KEEPALIVED从节点的"keepalived.conf"配置文件;操作目标[192.168.100.45]:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# [192.168.100.45] cat > /etc/keepalived/keepalived.conf << "EOF" ! Configuration File for keepalived # 必须的第一行 global_defs { # 全局定义 router_id LVS_DR02 # 标识信息[默认使用本地主机的名称][不同主机不应该相同] } # KEEPALIVED配置 vrrp_instance LVS_DR { # 定义VRRP实例名称[主备服务器上以此名称进行关联][待验证] state BACKUP # 定义服务器启动时的初始角色[启动后由"priority"决定][从服务器"BACKUP"] interface eth0 # 心跳检测所使用的接口 mcast_src_ip 192.168.100.45 # 指定心跳包的源IP advert_int 5 # 心跳广播检测间隔 virtual_router_id 50 # 定义"虚拟路由器ID"[主备服务器共同组成一个虚拟路由器,其ID为"50"][1-255] priority 100 # 优先级[数值越大优先级越高][MASTER服务一般配置比从服务器高50] authentication { # 启用认证[官方建议"PASS"模式] auth_type PASS # 认证方式:密码认证 auth_pass adminroot888 # 认证密码 } virtual_ipaddress { # 定义VIP的配置 192.168.100.40/24 dev eth0 } } # LVS配置 virtual_server 192.168.100.40 6443 { # 等同"ipvsadm -A -t 192.168.100.40:6443 -s rr" delay_loop 10 # 对RS服务器健康检查的间隔[默认"60"秒] protocol TCP # 等同"ipvsadm"的"-t"选项 lvs_sched rr # 等同"ipvsadm"的"-s"选项[定义调度算法] lvs_method DR # 等同"ipvsadm"的"-g"选项[定义LVS的转发模式] #persistence_timeout 3600 # 等同"ipvsadm"的"-p"选项[IPVS的持久化] real_server 192.168.100.41 6443 { # 等同"ipvsadm -a -t 192.168.100.41:6443 -r 192.168.100.40 -w 1" weight 1 # 等同"ipvsadm"的"-w"选项[定义RS的权重] TCP_CHECK { # 定义了使用"TCP_CHECK"这一模式进行健康检查 connect_timeout 3 } } real_server 192.168.100.42 6443 { weight 1 TCP_CHECK { connect_timeout 3 } } real_server 192.168.100.43 6443 { weight 1 TCP_CHECK { connect_timeout 3 } } } EOF |
启动Keepalived服务[192.168.100.44 - 45],以能看到正常运行为正确部署的依据;
1 2 |
# KEEPALIVED服务器启动 systemctl enable --now keepalived && systemctl status keepalived |
为所有K8S集群的MASTER节点绑定一个在环回口上的"VIP"[192.168.100.40];操作目标[192.168.100.41 - 43]:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# 1、创建一个环回子接口,并将"VIP"192.168.100.40绑定至子接口上 cat > /etc/sysconfig/network-scripts/ifcfg-lo_10 << "EOF" DEVICE=lo:10 NAME=lo_10 IPADDR=192.168.100.40 NETMASK=255.255.255.255 ONBOOT=yes EOF # 2、调整服务器上的"ARP查询"与"ARP响应"的策略[内核参数]; # 这几个内核参数原理十分复杂,有兴趣的读者可自行网络搜索相关信息; cat > /etc/sysctl.d/k8s_keepalive.conf << "EOF" net.ipv4.conf.lo.arp_ignore=1 net.ipv4.conf.lo.arp_announce=2 net.ipv4.conf.all.arp_ignore=1 net.ipv4.conf.all.arp_announce=2 EOF # 3、立即将对应的内核参数应用至系统 sysctl -p /etc/sysctl.d/k8s_keepalive.conf # 4、重启网络使环回口的配置生效[网络重启由DOCKER的转发规则会出错,所要需要重启DOCKER]; # 实际本处博主更建议直接"reboot"一下 systemctl restart network # 重启网络使环回口的配置生效 systemctl restart docker # 重启DOCKER使用DOCKER的"ip_forward"规则重新生成 |
测试KEEPALIVED+LVS的服务是否正常运行:
1 2 3 4 5 6 7 8 9 10 11 |
# 1、分别在[192.168.100.41 - 43]上执行 # 运行DOCKER的NGINX容器检查负载均衡器是否正常生效 docker run --rm -itd --name lvs-nginx -p 6443:80 nginx # 2、使用浏览器访问"http://192.168.100.40:6443"[成功] # 你可以分别停止NGINX的容器或KEEPALIVED的服务来进行测试 # 3、测试成功后,删除用于测试的NGINX容器 docker stop lvs-nginx |
关于KEEPALIVE+LVS的部署配置至此结束~~
结、
关于KEEPALIVED+LVS,实际也有很多知识点,有兴趣的读者可自行至网上了解更多,下一节将是关于"ETCD"的二进制部署。本篇完,读者可点击以下链接进入下一章或返回上一章;
K8S二进制部署高可用集群-1.22[二]:等您坐沙发呢!