众所周知,早期LVS软件,需要通过命令行或脚本实现管理,而且没有针对LVS节点的健康检查功能。为了解决LVS的这些使用不便问题,Keepalived便诞生。
Keepalived服务的三大重要功能
- 管理VLS负载均衡
- 实现对LVS集群node健康检查
- 作为系统网络服务的高可用**
闲话不多说,直接上实例**
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
[[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地址作为优先网络接口。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
原文地址:http://blog.51cto.com/jungiewolf/2112651
时间: 2024-10-12 07:32:26