k8s 集群使用 haproxy+keepalived+nginx 实现k8s集群负载均衡

Kubernetes集群高可用:Haproxy+Keepalived+Nginx实现负载均衡与真实IP获取
本文详细指导了如何在Kubernetes集群中通过Keepalived、Haproxy和Nginx构建高可用架构,包括安装配置、VRRP负载均衡、ProxyProtocol获取真实IP,以及Nginx的配置策略。


高可用 Kubernetes 集群能够确保应用程序在运行时不会出现服务中断,这也是生产的需求之一,并且在私有网络环境中,使用固定IP对外提供服务,并且基于Kubernetes service 4层负载均衡可以在保证高用的情况下,又可以获取到客户端的真实IP,这里我们使用。keepalived+haproxy 来实现。通过使用Proxy Protocol 代理协议透传客户端IP,来实现。

集群架构:

示例集群有三个主节点,以及一个虚拟 IP 地址。本示例中的虚拟 IP 地址也可称为“浮动 IP 地址”。这意味着在节点故障的情况下,该 IP 地址可在节点之间漂移,从而实现高可用。

在这里插入图片描述

keepalived + haproxy 安装

Keepalived 提供 VRRP 实现,并允许您配置 Linux 机器使负载均衡,预防单点故障。HAProxy 提供可靠、高性能的负载均衡,能与 Keepalived 完美配合。

由于在所有集群上安装了 Keepalived 和 HAproxy,如果其中一个节点故障,虚拟 IP 地址(即浮动 IP 地址)将自动与另一个节点关联,使集群仍然可以正常运行,从而实现高可用。若扩展集群,可以继续 添加更多安装 Keepalived 和 HAproxy 的节点。

yum install -y haproxy keepalived

keepalived

master 配置

vim 编辑 /etc/keepalived/keepalived.conf


! Configuration File for keepalived

global_defs {
   
   
   notification_email {
   
   
        zhanglu90@126.com
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_1
   vrrp_skip_check_adv_addr
#  vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI-kube-master {
   
   
    state MASTER #需要将状态设置为(MASTER)
    interface eno1  #这个地方需要特别注意,一个服务器有很多虚拟网卡,而这个网卡是真实网卡,可以通过ifconfig 命令查看你服务器中的名字,我的服务器中ip地址对应的网卡名称就是eno1  ,这个不能写错
    virtual_router_id 51 #这个id可以是其他数字,但是该数字必须在master和node中要保持一致,也可以照我这个写,不需要修改的
    priority 100  #权重设置,数值大的选为master 节点
    advert_int 1
    authentication {
   
   
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
   
   
        10.41.39.206  # vip  #这个就是虚拟出来的ip了,简称VIP,需要确保集群环境中不能有ip与这个vip冲突,其次需要确定该vip能和集群中所有节点ping的通
    }
}

node 配置

vim 编辑 /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   
   
   notification_email {
   
   
        zhanglu90@126.com
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_1
   vrrp_skip_check_adv_addr
#   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI-kube-master {
   
   
    state BACKUP #此处需要设置为备份状态(BACKUP)
    interface eno1 #这个地方需要特别注意,一个服务器有很多虚拟网卡,而这个网卡是真实网卡,可以通过ifconfig 命令查看你服务器中的名字,我的服务器中ip地址对应的网卡名称就是eno1  ,这个不能写错
    virtual_router_id 51  #这个id可以是其他数字,但是该数字必须在master和node中要保持一致,也可以照我这个写,不需要修改的
    priority 80 #权重设置,数值大的选为master 节点 
    advert_int 1
    authentication {
   
   
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
   
   
        10.41.39.206 # vip  #这个就是虚拟出来的ip了,简称VIP,需要确保集群环境中不能有ip与这个vip冲突,其次需要确定该vip能和集群中所有节点ping的通
    }
}

启动keepalived并设置开机自启


#启动
systemctl start keepalived
 
#查看状态
systemctl status keepalived
 
#设置开机自启
systemctl enable keepalived

haproxy

「HAProxy」- 在 TCP Mode 下,从 Haproxy 向 Nginx 传递客户端真实网络地址

在这里插入图片描述

Haproxy配置介绍:

HaProxy配置(haproxy.cfg)中分为五部分内容(五大组件),可以根据需要选择进行配置。

五大组件:global、defaults、frontend、backend、listen

1、global:参数是进程级的,通常和操作系统(OS)相关。这些参数一般只设置一次,如果配置无误,就不需要再次配置进行修改。
2、defaults:配置默认参数的,这些参数可以被利用配置到frontend,backend,listen组件。
3、frontend:接收请求的前端虚拟节点,Frontend可以根据规则直接指定具体使用后端的 backend(可动态选择)。
4、backend:后端服务集

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值