haproxy+keepalive+ingress的k8s高可用


文档参见:https://www.cnblogs.com/yanjieli/p/10601819.html

1.架构图

 

 

1.1通过haproxy负载均衡的指向两台nginx-ingress(域名)爆露端口的服务器,并监听nginx-ingress(域名)爆露的80端口,即上面的102和103。

   若需要监听其他服务端口,需要在haproxy内配置对应的service爆露的端口及服务器地址。

[root@node01 ~]# cat /etc/haproxy/haproxy.cfg
global
        # log /dev/log    local0
        # log /dev/log    local1 notice
        # chroot /var/lib/haproxy
        # stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon
        nbproc 1

defaults
        log     global
        timeout connect 5000
        timeout client  10m
        timeout server  10m

# ingress-nginx-conftorer 80 访问入口
listen ingress-node
        bind 0.0.0.0:80
        mode tcp
        option tcplog
        balance roundrobin
        server 192.168.3.30 192.168.3.30:32084 check inter 2000 fall 2 rise 2 weight 1
        server 192.168.3.30 192.168.3.30:32084 check inter 2000 fall 2 rise 2 weight 1
        server 192.168.3.30 192.168.3.30:32084 check inter 2000 fall 2 rise 2 weight 1

  

1.2 keepalive配置vip-200,主备服务器分别是102和103。即vip正常指向102,如果102出现问题会自动切换到103。

     当外部服务通过域名或vip访问时,系统会自动通过keepalive转到102,然后在102上寻找nginx-ingress(域名)爆露的80端口,通过域名访问k8s内部服务。

      或通过指定的端口查找对应爆露端口的service服务,访问内部服务。

      访问服务都是通过haproxy监听端口,然后负载均衡的访问到各个服务中。

[root@haproxy-master scripts]# cat /etc/keepalived/keepalived.conf
global_defs {  ##全局定义, 还可以设置发送邮件等功能
   router_id haproxy-master  # 路由ID,标识本节点的字符串,邮件通知时会用到
}

# 自定义VRRP实例健康检查脚本 keepalived只能做到对自身问题和网络故障的监控,Script可以增加其他的监控来判定是否需要切换主备
vrrp_script chk_haproxy
{
     script "/etc/keepalived/scripts/haproxy_check.sh"  #心跳检测脚本,检测haproxy是否启动
     interval 2   #检测脚本执行的间隔,单位是秒
     timeout 2
     fall 3
}

# VRRP实例:定义对外提供服务的VIP区域及其相关属性
vrrp_instance haproxy {
state MASTER    #指定keepalived的角色,MASTER为主,BACKUP为备
    interface ens33   #节点固有IP(非VIP)的网卡,用来发VRRP包
    virtual_router_id 20     #虚拟路由编号,主从要一致
    priority  150    #优先级,数值越大,获取处理请求的优先级越高,主从之间最好差50
    authentication {         auth_type PASS         auth_pass 20     }  #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
    virtual_ipaddress {
192.168.1.200    #定义虚拟ip(VIP)
    }

# 自定义健康检查脚本
    track_script {
         chk_haproxy    # 配置上面自定义的vrrp脚本调用名
    }
    notify_master "/etc/keepalived/scripts/haproxy_master.sh"   #记录切换为主节点的信息
}

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM