OpenShift集群资源列表
| 主机名 |
类型 |
IP |
| 相关节点IP |
|
|
| master0 |
master |
192.168.0.2 |
| master1 |
master |
192.168.0.3 |
| master2 |
master |
192.168.0.4 |
| infra0 |
infra |
192.168.0.5 |
| infra1 |
infra |
192.168.0.6 |
| vip地址分配 |
|
|
| master-vip |
vip |
192.168.0.250 |
| infra-vip |
vip |
192.168.0.251 |
部署Master API负载均衡器作为集群内外访问的入口
- 在三个Master节点安装KeepAlived与LVS
1 2
| $ ansible masters -m package -a 'name=keepalived state=present' $ ansible masters -m package -a 'name=ipvsadm state=present'
|
- 选择master0作为VIP的Master节点
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| $ cat /etc/keepalived/keepalived.conf global_defs { #指定keepalived在发生切换时需要发送email到的对象 notification_email { receiver@example.com #邮件接收者 } notification_email_from sender@example.com #邮件发送者 smtp_server 127.0.0.1 #邮件服务器地址,如未安装,使用本地 smtp_connect_timeout 30 router_id LVS_DEVEL }
#IP漂移协议 vrrp_instance VI_1 { state MASTER #指定A节点为主节点 备分机上设置为BACKUP即可 interface eth0 #绑定IP漂移的网络接口,在该接口上绑定VIP virtual_router_id 51 #VRRP组名,三个节点的设置必须一样 priority 100 #优先级,同一个 vrrp_instance 的 MASTER 优先级必须比 BACKUP 高 advert_int 1 #MASTER 与 BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒 authentication { # 设置认证 auth_type PASS #认证方式,支持 PASS 和 HA auth_pass 1111 #证密码为明文,同一 vrrp 实例 MASTER 与 BACKUP 使用相同的密码才能正常通信 } virtual_ipaddress { #虚拟IP地址(VIP),可以有多个地址,每个地址占一行 192.168.0.250 #绑定VIP } }
#只接收8443端口过来的请求 virtual_server 192.168.232.206 8443 { delay_loop 6 # 服务健康检查周期,6秒 lb_algo wlc # 负载均衡调度算法,一般用wrr、rr、wlc lb_kind DR # 负载均衡转发规则。一般包括DR,NAT,TUN 3种 nat_mask 255.255.255.0 persistence_timeout 50 #会话保持时间。把用户请求请求间隔在未超过保持时间时,一直分发到某个服务节点 protocol TCP
#RS服务器1 real_server 192.168.0.2 8443 { weight 1 #健康检查 TCP_CHECK { # 通过TcpCheck判断RealServer的健康状态 connect_timeout 10 # 连接超时时间 nb_get_retry 3 # 重连次数 delay_before_retry 3 # 重连时间间隔 connect_port 8443 # 检测端口 } }
#RS服务器2 real_server 192.168.0.3 8443 { weight 1 #健康检查 TCP_CHECK { # 通过TcpCheck判断RealServer的健康状态 connect_timeout 10 # 连接超时时间 nb_get_retry 3 # 重连次数 delay_before_retry 3 # 重连时间间隔 connect_port 8443 # 检测端口 } } #RS服务器2 real_server 192.168.0.4 8443 { weight 1 #健康检查 TCP_CHECK { # 通过TcpCheck判断RealServer的健康状态 connect_timeout 10 # 连接超时时间 nb_get_retry 3 # 重连次数 delay_before_retry 3 # 重连时间间隔 connect_port 8443 # 检测端口 } } }
|
KeepAlive健康检查类型有五种:TCP_CHECK/HTTP_GET/SSL_GET/MISC_CHECK/SMTP_CHECK
- TCP_CHECK:TCP端口是否能通
1 2 3 4 5 6
| TCP_CHECK { # 通过TcpCheck判断RealServer的健康状态 connect_timeout 10 # 连接超时时间 nb_get_retry 3 # 重连次数 delay_before_retry 3 # 重连时间间隔 connect_port 6500 # 检测端口 }
|
- HTTP_GET:请求HTTP URL的Code是否为200
1 2 3 4 5 6 7 8 9
| HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 }
|
- SSL_GET:请求HTTPS URL的Code是否为200
1 2 3 4 5 6 7 8 9
| SSL_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 }
|
- MISC_CHECK:脚本运行的返回码是否为0
1 2 3 4 5
| MISC_CHECK { misc_path "/etc/keepalived/misc_check.sh https://192.168.0.2:6500/check_status" # 外部程序或者脚本的路径和参数 misc_timeout 10 # 脚本执行的超时时间 misc_dynamic #动态权重标志。脚本返回0则检测成功权重不变,返回1表示失败权重设置为0 }
|
- SMTP_CHECK:SMTP健康检查器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| SMTP_CHECK { # 用于smtp HELO请求的可选字符串 helo_name hello host { # 默认值为真实服务器的IP connect_ip 192.168.0.3 # 默认值为25 connect_port 25 } # 连接超时时间 connect_timeout 5 # 重试失败检查的次数 retry 3 # 重试前延迟秒 delay_before_retry <INTEGER> }
|