码迷,mamicode.com
首页 > Web开发 > 详细

Kubernets二进制安装(8)之部署四层反向代理

时间:2020-04-05 00:48:45      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:tab   defs   内容   net   empty   ups   图片   ISE   x86_64   

四层反向代理集群规划

主机名 角色 IP地址
mfyxw10.mfyxw.com 4层负载均衡(主) 192.168.80.10
mfyxw20.mfyxw.com 4层负载均衡(从) 192.168.80.20

keepalived中的两种模式

(1)master->backup模式
一旦主库宕机,虚拟ip会自动漂移到从库,当主库修复后,keepalived启动后,还会把虚拟ip抢占过来,即使设置了非抢占模式(nopreempt)抢占ip的动作也会发生。
(2)backup->backup模式
当主库宕机后虚拟ip会自动漂移到从库上,当原主库恢复和keepalived服务启动后,并不会抢占新主的虚拟ip,即使是优先级高于从库的优先级别,也不会发生抢占。为了减少ip漂移次数,通常是把修复好的主库当做新的备库。

1.安装Nignx做反向代理

#在mfyxw10主机上安装nginx
[root@mfyxw10 ~]# yum -y install nginx

#在mfyxw20主机上安装nginx
[root@mfyxw10 ~]# yum -y install nginx

技术图片

2.提供反向代理配置

#把如下内容放在/etc/nginx/nginx.conf配置文件的http段外,mfyxw10和mfyxw20主机都需要放
stream {
    upstream kube-apiserver {
        server 192.168.80.10:6443     max_fails=3 fail_timeout=30s;
        server 192.168.80.20:6443     max_fails=3 fail_timeout=30s;
    }
    server {
        listen 7443;
        proxy_connect_timeout 2s;
        proxy_timeout 900s;
        proxy_pass kube-apiserver;
    }
}

技术图片

3.检查配置文件是否有误并启动nginx服务

[root@mfyxw10 ~]#nginx -t
[root@mfyxw10 ~]#systemctl enable --now nginx
[root@mfyxw10 ~]#systemctl status nginx

[root@mfyxw20 ~]#nginx -t
[root@mfyxw20 ~]#systemctl enable --now nginx
[root@mfyxw20 ~]#systemctl status nginx

技术图片

4.安装keepalived高可用

#在mfyxw10主机上安装keepalived高可用软件
[root@mfyxw10 ~]#yum -y install keepalived

#在mfyxw20主机上安装keepalived高可用软件
[root@mfyxw20 ~]#yum -y install keepalived

5.提供keepalievd监听脚本

在mfyxw10和mfyxw20主机上分别提供keepalived监控端口脚本并赋予可执行权限,截图以mfyxw10主机为例

[root@mfyxw10 ~]#cat > /etc/keepalived/check_port.sh << EOF
#!/bin/bash
#keepalived 监控端口脚本
#使用方法:
#在keepalived的配置文件中
#vrrp_script check_port {#创建一个vrrp_script脚本,检查配置
#    script "/etc/keepalived/check_port.sh 6379" #配置监听的端口
#    interval 2 #检查脚本的频率,单位(秒)
#}
CHK_PORT=\$1
if [ -n "\$CHK_PORT" ];then
        PORT_PROCESS=\`ss -lnt|grep \$CHK_PORT|wc -l\`
        if [ \$PORT_PROCESS -eq 0 ];then
                echo "Port \$CHK_PORT Is Not Used,End."
                exit 1
        fi
else
        echo "Check Port Cant Be Empty!"
fi
EOF

#赋予可执行权限
[root@mfyxw10 ~]#chmod +x /etc/keepalived/check_port.sh

技术图片

6.提供keepalived配置文件,用于做为主

在mfyxw10主机上提供keepalived配置文件,并设备此机器的keepalived为主

[root@mfyxw10 ~]#cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived
global_defs {
   router_id 192.168.80.10  

}

vrrp_script chk_nginx {
    script "/etc/keepalived/check_port.sh 7443"
    interval 2
    weight -20
}

vrrp_instance VI_1 {
    state BACKUP  #经测试设置为MASTER,nopreempt无法生效,设置为BACKUP可生效,但是二台都要设置nopreempt
    interface ens33    #此接口要填写你的网卡接口的名称
    virtual_router_id 251
    priority 100
    advert_int 1
    mcast_src_ip 192.168.80.10 
    nopreempt

    authentication {
        auth_type PASS
        auth_pass 11111111
    }
    track_script {
         chk_nginx
    }
    virtual_ipaddress {
        192.168.80.100      #此IP是VIP地址
    }
}
EOF

温馨提示:

    router_id: 运行keepalived机器的一个标识,一般设置为本地IP地址也行
    mcast_src_ip: 发送多播包的地址,如果不设置默认使用绑定网卡的primary ip,一般设置为本机的IP地址
    nopreempt:通常如果master服务死掉后backup会变成master,但是当master服务又好了的时候master此时会抢占                    VIP,这样就会发生两次切换对业务繁忙的网站来说是不好的。所以我们要在配置文件加入nopreempt 非抢                占,但是这个参数只能用于state 为backup,故我们在用HA的时候最好master和backup的state都设置成                backup 让其通过priority来竞争。
    state MASTER: 标记该节点是master还是backup
    interface 接口名称:配置VIP绑定的网卡,这是使用和外网通信的网卡
    virtual_router_id ID号: 取1-255之间的值,主备需要相同,这样才能成为一个组
    priority 数字:权重,数值高的主机是master,这是影响主备的关键
    nopreempt: 非抢占模式,需要设置state为backup
    advert_int 1: 主备之间通讯的间隔秒数,用于判断主节点是否存活
    authentication {
       auth_type PASS  #进行安全认证的方式,PASS或者AH方式,推荐PASS
       auth_pass 111   #PASS的密码
    }
    virtual_ipaddress {
       IP地址: 设置VIP地址,最多可以写20个,keepalived启动后会自动配置该处VIP
    }
    

技术图片

7.提供keepalived配置文件,用于做为备

在mfyxw20主机上提供keepalived配置文件,并设备此机器的keepalived为备

[root@mfyxw20 ~]#cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived
global_defs {
	router_id 192.168.80.20
}
vrrp_script chk_nginx {
	script "/etc/keepalived/check_port.sh 7443"
	interval 2
	weight -20
}
vrrp_instance VI_1 {
	state BACKUP
	interface ens33    #此接口要填写你的网卡接口的名称
	virtual_router_id 251
	mcast_src_ip 192.168.80.20
	priority 90
	advert_int 1
	nopreempt
	authentication {
		auth_type PASS
		auth_pass 11111111
	}
	track_script {
		chk_nginx
	}
	virtual_ipaddress {
		192.168.80.100
	}
}
EOF

技术图片

8.启动keepalived服务并检查

在mfyxw10主机上操作

[root@mfyxw10 ~]# systemctl enable --now keepalived
[root@mfyxw10 ~]# nginx -s reload
[root@mfyxw10 ~]# netstat -luntp | grep 7443
[root@mfyxw10 ~]# ip addr

技术图片

在mfyxw20主机上操作

[root@mfyxw20 ~]# systemctl enable --now keepalived
[root@mfyxw20 ~]# nginx -s reload
[root@mfyxw20 ~]# netstat -luntp | grep 7443
[root@mfyxw20 ~]# ip addr

技术图片

9.模拟网络故障

在mfyxw10主机上,把keepalived服务停用,看vip地址是否漂移到备机mfyxw20上

[root@mfyxw10 ~]#systemctl stop keepalived
[root@mfyxw10 ~]#ip addr

技术图片

在mfyxw20主机上查看vip地址是否已经在此机器上

[root@mfyxw20 ~]#ip addr

技术图片

模拟mfyxw10主机的keepalived服务已经启动,查看是否从备机mfyxw20上的vip地址漂移回来到主上,那是因为,在keepalived的配置文件中都已经设置了nopreempt并且state都设置为BACKUP

[root@mfyxw10 ~]#systemctl start keepalived
[root@mfyxw10 ~]#ip addr

技术图片

10.keepalived遇到的问题

1.systemctl无法彻底停掉keepalived

在使用yum安装keepalived(版本为keepalived-1.3.5-16.el7.x86_64)的时候,使用systemctl stop keepalive会出来如何问题,这样会导致无法正常stop掉keepalived进程,再次启动时虽然可以启动,但进程状态里面会提示:Can’t open PID file /var/run/keepalived.pid (yet?) after start

技术图片

解决方法

vi /lib/systemd/system/keepalived.service
KillMode=process   #只杀掉程序的主进程,不管打开的子进程   将此行注释掉即可

技术图片

Kubernets二进制安装(8)之部署四层反向代理

标签:tab   defs   内容   net   empty   ups   图片   ISE   x86_64   

原文地址:https://www.cnblogs.com/Heroge/p/12635312.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!