Keepalived管理LVS负载均衡实战

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Keepalived管理LVS负载均衡实战相关的知识,希望对你有一定的参考价值。

技术分享图片
众所周知,早期LVS软件,需要通过命令行或脚本实现管理,而且没有针对LVS节点的健康检查功能。为了解决LVS的这些使用不便问题,Keepalived便诞生。
Keepalived服务的三大重要功能

  1. 管理VLS负载均衡
  2. 实现对LVS集群node健康检查
  3. 作为系统网络服务的高可用**

    闲话不多说,直接上实例**


LB端Keepalived配置

 [[email protected] keepalived]# ip addr del 10.0.0.3/24 dev eth0 label eth0:0 
[[email protected] keepalived]# ipvsadm -C
修改keepalived主配置文件
[[email protected] keepalived]# cat keepalived.conf+lvs_master 
! Configuration File for keepalived
global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3/24 dev eth0 label eth0:1
    }
}
#ipvsadm -A -t 10.0.0.3:80 -s wrr ?LVS命令配置示例与Keepalived对比
virtual_server 10.0.0.3 80 { ?-lvs中的VIP
    delay_loop 6 ?延迟
    lb_algo rr ?轮询调度算法
    lb_kind DR ?直接路由模式
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP ?调度协议
#ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 1 ?LVS命令配置示例与Keepalived对比
      real_server 10.0.0.7 80 {
      weight 1
      TCP_CHECK {
      connect_timecout 5
      nb_get_retry 3
      delay_before_retry 3
      connect_port 80
     }
}
#ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -g -w 1 ?LVS命令配置示例与Keepalived对比
      real_server 10.0.0.8 80 {
      weight 1
      TCP_CHECK {
      connect_timecout 5
      nb_get_retry 3
      delay_before_retry 3
      connect_port 80
     }
  }
}
[[email protected] ~]# /etc/init.d/keepalived restart ?重启keepalived

Real server节点实例也一起奉上

[[email protected] ~]# lsmod |grep ip_vs
ip_vs_wrr               2179  0 
ip_vs                 126534  2 ip_vs_wrr
libcrc32c               1246  1 ip_vs
ipv6                  335589  277 ip_vs
[[email protected] ~]# ip addr add 10.0.0.3/32 dev lo label lo:0

[ro[email protected] ~]# echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
[[email protected] ~]# echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce 
[[email protected] ~]# echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
[[email protected] ~]# echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

遇到的问题:
lsmod |grep ip_vs 查询时没反馈如下图
技术分享图片
解决办法:
[[email protected] ~]# ipvsadm或modprode ip_vs
如果ln没有发现内核,那是因为Kernels-devel没安装
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


Arp抑制说明
arp_ignore 定义对目标地址为本地IP的ARP询问不同的应答模式
0-默认值:回应任何网络接口上对任何本地IP地址的arp查询请求。
1-只目标IP地址是来访网络接口本地地址的ARP查询请求
2-只回答目标IP地址是来访网络接口本地地址的arp查询请求,且来访IP必须在该网络接口的子网段
arp_announce 对网络接口上,本地IP地址发出的ARP回应,作出相应级别的限制
0-默认值在任意网络接口(eth0,eth1,lo)上的任何本地地址
1-尽量避免不在该网络接口子网段的本地地址做出arp回应,当大气arp请求的源IP地址是被设置应该经过由路由达到次网络接口的时候很有用。此时会检查来访IP是否为所有接口上的子网段内IP之一。如果该来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理。
2-对查询目标使用最适当的本地地址,在此模式下将忽略这个IP数据包的源地址并尝试选择能与该地址通信的本地地址,首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址。如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送,限制了使用本地的vip地址作为优先网络接口。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

以上是关于Keepalived管理LVS负载均衡实战的主要内容,如果未能解决你的问题,请参考以下文章

实战 LVS+Keepalived 实现负载均衡和高可用

LVS负载均衡群集——keepalived+DR模式(实战!)

Keepalived+LVS实战案例: 单主架构实现WEB负载均衡及可用

Keepalived + LVS 实现负载均衡

Keepalived+LVS实战案例: 双主架构实现WEB和MariaDB负载均衡及高可用

负载均衡集群LVS实战篇