热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

9.k8s主控节点部署L4高可用反向代理服务

VIP、keepalive、L4反向代理node10、node11、node12相关资料:Keepalived之——KeepalivedNginx实现高可用Web负载

VIP、keepalive、L4反向代理
node10、node11、node12



相关资料:
Keepalived之——Keepalived + Nginx 实现高可用 Web 负载均衡
高可用实践——Keepalived踩坑记录
Keepalived原理



k8s主控节点-部署L4反向代理服务


安装nginx


nginx 4层代理配置


nginx http段中是7L代理配置,注意不要配置到http段下
vi /etc/nginx/nginx.conf


stream {upstream kube-apiserver {server 172.10.10.21:6443 max_fails=3 fail_timeout=30s;server 172.10.10.22:6443 max_fails=3 fail_timeout=30s;}server {listen 7443;proxy_connect_timeout 2s;proxy_timeout 900s;proxy_pass kube-apiserver;}
}

node11和node12上分别配置4L代理,负载node21和node22的kube-apiserver


keepalived


编写检查脚本

vi /etc/keepalived/check_port.sh

#!/bin/bash
CHK_PORT=$1
if [ -n "$CHK_PORT" ];thenPORT_PROCESS=`ss -lnt|grep $CHK_PORT|wc -l`if [ $PORT_PROCESS -eq 0 ];thenecho "Port $CHK_PORT Is Not Used,End."exit 1fi
elseecho "Check Port Cant Be Empty!"
fi

该脚本用于keepalived调用,通过ss命令查看7443端口是否监听,判断上文nginx是否正常


安装keepalived

yum install keepalived


配置

vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {## 标识本节点的字条串,通常为 hostnamerouter_id 172.10.10.12
}
vrrp_script chk_nginx {script "/etc/keepalived/check_port.sh 7443"interval 2weight -20
}
## 定义虚拟路由, VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 251mcast_src_ip 172.10.10.12priority 90advert_int 1authentication {auth_type PASSauth_pass 11111111}track_script {chk_nginx}virtual_ipaddress {172.10.10.10}
}

注意state参数,主节点配置成MASTER,备节点配置成BACKUP
vrrp_script chk_nginx 配置一个名为chk_nginx的脚本,在后续vrrp_instance虚拟路由中配置使用
上数配置,正常情况下MASTER服务器接管VIP成为【主】,当M服务器宕机后,BACKUP服务器接管VIP成为【主】,已达到灾备的效果,如果M服务器再次恢复正常,那么M服务器会重新抢回VIP成为【主】 B服务器变成【备】。
若需VIP不随意飘动需配置nopreempt参数
vrrp_instance下配置项:nopreempt设置当前节点为非抢占式的
资料:Keepalived 设置master故障恢复后不重新抢回VIP(解决nopreempt无效)

systemctl start keepalived 启动keepalived
nginx reload


演示

在这里插入图片描述

说明:


  1. 通过node10访问nginx(node11和node12)
  2. 初始时,node11为[主],流量流向node11
  3. node11停掉nginx后,node12抢占VIP,流量流向node12
  4. node11再次启动nginx,此时VIP不会被node11抢占,因为此案例node11和node12的priority都设置成90了
  5. node12停掉nginx后,node11才会抢占VIP,获取流量

推荐阅读
author-avatar
PHP白姐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有