lvs
ipvs (用于调度,工作在内核层)
ipvsadm (是ipvs的管理工具)
keepalived (实现管理ipvs和高可用)
lvs名词术语
1:vip 虚拟ip
2:rip 后端真实服务器ip
3:cip 客户端ip
lvs工作模式
1:nat模式
2:tun模式
3:dr模式,又叫单臂路由 原理:改写请求报文的目标mac地址,由rip将结果直接返回给cip,(注意:需要LB与slave之间在同一物理网段,即属于局域网)
4:fullnat模式
这里以dr模式讲解,适用于返回数据大的情景,如流媒体,实现这个模式关键的是
1:要在slave机器上的lo网卡上绑定vip,目的是不让数据包过来之后被丢弃
2:slave上抑制arp
cip –> vip –> rip –> cip
安装实现
lsmod |grep ip_vs #检查模块是否被加入到内核
yum install ipvsadm #安装ipvs的管理工具
keepalived的安装细节见haproxy负载均衡那篇文章https://wsfnk.com/archives/62.html
这里只给出具体的配置
vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
acassen@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface enp0s8
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24 dev enp4s0
#这里的dev enp4s0一定要注意,是与后端slave同一网段的那张网卡
#如果不指定网卡设备,默认将vip设置在心跳网卡上,那么你就等着蒙蔽吧,这坑我踩过
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 5
protocol TCP
real_server 192.168.1.101 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.1.102 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
文章目录
检查lvs是否启动命令: ipvsadm -ln
slave端设置
- lo:0配vip
- 抑制arp
编写脚本实现slave端的设置
vim yz_arp.sh
#! /bin/sh
# descript : start real server DR
VIP=192.168.1.100
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of RealServer DR"
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up
/sbin/route add -host $VIP dev lo:0
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS of RealServer DR"
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage : $0 {start|stop}"
exit 1
esac
给脚本执行权限,并运行
chmod +x yz_arp.sh
/root/yz_arp.sh start
压力测试语句
for((i=1;i<=100;i++));do curl 192.168.1.100 >> /dev/null; done
在搭建lvs负载均衡时踩过的坑
- 后端slave忘记设置路由网关
- 前段lvs-M与lvs-B忘记设置网关
- 我的笔记本有一张以太网,一张无线网卡,最初我的业务承载网卡是走的无线网卡,而无线网卡连接的是无线路由器,这里就将网络拓扑变得复杂
- 导致,三台slave服务器,只能一台使用,我说的是一台开启arp抑制,其他不做配置的情况下,若是全部开启arp抑制,则三台都不行
- 所以:若是用虚拟机连接路由器做实验,请务必使用以太网卡
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论