ü 负载均衡(Load Balance)集群提供了一种廉价、有效、透明的方法,来扩展网络设备和服务器的负载、带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
ü 单台计算机无法承受大规模的并发访问或数据流量了,此时需要搭建负载均衡集群把流量分摊到多台节点设备上分别处理,即减少用户等待响应的时间又提升了用户体验;
ü 7*24小时的服务保证,任意一个或多个有限后端节点设备宕机,不能影响整个业务的运行。
n 工作在网络模型的7层,可以针对http应用做一些分流的策略,比如针对域名、目录结构,Nginx单凭这点可利用的场合就远多于LVS了。
n 最新版本的Nginx也支持4层TCP负载,曾经这是LVS比Nginx好的地方。
n Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一,相反LVS对网络稳定性依赖比较大。
n Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来。LVS的配置、测试就要花比较长的时间了,LVS对网络依赖比较大。
那为什么要用lvs呢?
ü 简单一句话,当并发超过了Nginx上限,就可以使用LVS了。
ü 日1000-2000W PV或并发请求1万以下都可以考虑用Nginx。
ü 大型门户网站,电商网站需要用到LVS。
1.2LVS介绍
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,可以在UNIX/LINUX平台下实现负载均衡集群功能。该项目在1998年5月由章文嵩博士组织成立,是中国国内最早出现的自由软件项目之一。
LVS官网:http://www.linuxvirtualserver.org/index.html
相关中文资料:
LVS项目介绍 http://www.linuxvirtualserver.org/zh/lvs1.html
LVS集群的体系结构 http://www.linuxvirtualserver.org/zh/lvs2.html
LVS集群中的IP负载均衡技术 http://www.linuxvirtualserver.org/zh/lvs3.html
LVS集群的负载调度 http://www.linuxvirtualserver.org/zh/lvs4.html
早在2.2内核时, IPVS就已经以内核补丁的形式出现。
从2.4.23版本开始,IPVS软件就合并到Linux内核的常用版本的内核补丁的集合。
从2.4.24以后IPVS已经成为Linux官方标准内核的一部分。
ü LVS无需安装
ü 安装的是管理工具,第一种叫ipvsadm,第二种叫keepalive
ü ipvsadm是通过命令行管理,而keepalive读取配置文件管理
ü 后面我们会用Shell脚本实现keepalive的功能
1.3LVS集群搭建
主机名 | IP地址 | 软件 | 系统版本 |
lb03 | 10.0.0.15 | lvs keepalived | CentOS Linux release 7.4.1708 |
lb04 | 10.0.0.16 | lvs keepalived | CentOS Linux release 7.4.1708 |
web03 | 10.0.0.18 | tomcat | CentOS Linux release 7.4.1708 |
web04 | 10.0.0.17 | tomcat | CentOS Linux release 7.4.1708 |
主机说明
[root@lb03 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@lb03 ~]# uname -a
Linux lb03 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@lb03 ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@lb03 ~]# getenforce
Disabled
web环境说明
可以curl出以下结果的环境
[root@lb03 ~]# curl 10.0.0.17
web03
[root@lb03 ~]# curl 10.0.0.18
web04
web服务器的搭建参照: Tomcat: http://www.cnblogs.com/clsn/p/7904611.html
Nginx: http://www.cnblogs.com/clsn/p/7750615.html
安装管理工具
yum -y install ipvsadm
查看当前LVS状态默认为潜伏状态,顺便激活LVS内核模块。
ipvsadm #查看也是激活
查看系统的LVS模块。
[root@lb03 ~]# lsmod|grep ip_vs
ip_vs_wrr 12697 1
ip_vs 141092 3 ip_vs_wrr
nf_conntrack 133387 1 ip_vs
libcrc32c 12644 3 xfs,ip_vs,nf_conntrack
配置LVS负载均衡服务(在lb03操作)
步骤1:在eth0网卡绑定VIP地址(ip)
步骤2:清除当前所有LVS规则(-C)
步骤3:设置tcp、tcpfin、udp链接超时时间(--set)
步骤4:添加虚拟服务(-A),-t指定虚拟服务的IP端口,-s 指定调度算法 调度算法见man ipvsadm, rr wrr 权重轮询 -p 指定超时时间
步骤5:将虚拟服务关联到真实服务上(-a) -r指定真实服务的IP端口 -g LVS的模式 DR模式 -w 指定权重
步骤6:查看配置结果(-ln)
命令集:
ip addr add 10.0.0.13/24 dev eth0
ipvsadm -C
ipvsadm --set 30 5 60
ipvsadm -A -t 10.0.0.13:80 -s wrr -p 20
ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.17:80 -g -w 1
ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.18:80 -g -w 1
ipvsadm -ln
检查结果:
[root@lb03 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.0.0.13:80 wrr persistent 20
-> 10.0.0.17:80 Route 1 0 0
-> 10.0.0.18:80 Route 1 0 0
参数参考:man ipvsadm
1.3.4 在web服务器配置操作(web03,web04)
步骤1:在lo网卡绑定VIP地址(ip) (原因:要接收VIP的数据包,如果没有VIP,会丢弃)
步骤2:修改内核参数抑制ARP响应
命令集:
ip addr add 10.0.0.13/32 dev lo (32位掩码:原因:不影响其他服务)
cat >>/etc/sysctl.conf<<EOF #抑制ARP响应(只要在DR模式下就开启ARP抑制)
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
EOF
sysctl -p
至此LVS集群配置完毕!
浏览器访问:
命令行测试:在为加入LVS的主机上测试
[root@lb04 ~]# curl 10.0.0.13
web03
问题:浏览器访问发现没有负载均衡?
LVS是宏观上的负载均衡,并发少的话轮询不明显,可以使用多个客户端访问测试。
抓包查看结果:
问题:使用wireshark抓包,发现通信的是Windows的IP和lb03的80端口,但是为什么查看lb03发现没有80端口?
也是有80端口的,但是在内核层次,它是一个虚拟服务,看不到而已。
LVS本身也实现了内核转发功能
arp解析查看:
[root@lb04 ~]# arp -n
Address HWtype HWaddress Flags Mask Iface
10.0.0.254 ether 00:50:56:e9:9f:2c C eth0
10.0.0.18 ether 00:0c:29:ea:ca:55 C eth0
10.0.0.13 ether 00:0c:29:de:7c:97 C eth0
172.16.1.15 ether 00:0c:29:de:7c:a1 C eth1
10.0.0.17 ether 00:0c:29:4a:ac:4a C eth0
1.4负载均衡(LVS)相关名词
术语说明:
DS:Director Server。指的是前端负载均衡器节点。
RS:Real Server。后端真实的工作服务器。
VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址。
DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
RIP:Real Server IP,后端服务器的IP地址。
CIP:Client IP,访问客户端的IP地址。
DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器将响应后的处理结果直接返回给客户端用户。
效率高:1.只到2层,只针对DR模式(局域网)
2.LB只将用户请求发送到后台,web处理完不会返回给BL,而是直接给用户
DR技术可极大地提高集群系统的伸缩性。但要求调度器LB与真实服务器RS都有一块物理网卡连在同一物理网段上,即必须在同一局域网环境。
DR模式一般都需要外网卡:内网网关容易形成瓶颈(可以走运营商的硬件网关)
DR直接路由模式说明:
文字解释 | a)通过在调度器LB上修改数据包的目的MAC地址实现转发。注意,源IP地址仍然是CIP,目的IP地址仍然是VIP。 b)请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此,并发访问量大时使用效率很高,比Nginx代理模式强于此处。 c)因DR模式是通过MAC地址的改写机制实现转发的,因此,所有RS节点和调度器LB只能在同一个局域网中。需要注意RS节点的VIP的绑定(lo:vip/32)和ARP抑制问题。 d)强调下:RS节点的默认网关不需要是调度器LB的DIP,而应该直接是IDC机房分配的上级路由器的IP(这是RS带有外网IP地址的情况),理论上讲,只要RS可以出网即可,不需要必须配置外网IP,但走自己的网关,那网关就成为瓶颈了。 e)由于DR模式的调度器仅进行了目的MAC地址的改写,因此,调度器LB无法改变请求报文的目的端口。LVS DR模式的办公室在二层数据链路层(MAC),NAT模式则工作在三层网络层(IP)和四层传输层(端口)。 f)当前,调度器LB支持几乎所有UNIX、Linux系统,但不支持windows系统。真实服务器RS节点可以是windows系统。 g)总之,DR模式效率很高,但是配置也较麻烦。因此,访问量不是特别大的公司可以用haproxy/Nginx取代之。这符合运维的原则:简单、易用、高效。日1000-2000W PV或并发请求1万以下都可以考虑用haproxy/Nginx(LVS的NAT模式) h)直接对外的访问业务,例如web服务做RS节点,RS最好用公网IP地址。如果不直接对外的业务,例如:MySQL,存储系统RS节点,最好只用内部IP地址。 |
注:要了解LVS的几种模式,重点是DR模式,以及工作原理
1.5在web端的操作有什么含义?
既然要让RS能够处理目标地址为vip的IP包,首先必须要让RS能接收到这个包。
在lo上配置vip能够完成接收包并将结果返回client。
不可以,将VIP设置在eth0网卡上,会影响RS的arp请求,造成整体LVS集群arp缓存表紊乱,以至于整个负载均衡集群都不能正常工作。
① arp协议说明
ARP协议,全称"Address Resolution Protocol",中文名是地址解析协议,使用ARP协议可实现通过IP地址获得对应主机的物理地址(MAC地址)。
ARP协议要求通信的主机双方必须在同一个物理网段(即局域网环境)!
为了提高IP转换MAC的效率,系统会将解析结果保存下来,这个结果叫做ARP缓存。
Windows查看ARP缓存命令 arp -a
Linux查看ARP缓存命令 arp -n
Linux解析IP对应的MAC地址 arping -c 1 -I eth0 10.0.0.6
ARP缓存表是把双刃剑
a) 主机有了arp缓存表,可以加快ARP的解析速度,减少局域网内广播风暴。因为arp是发广播解析的,频繁的解析也是消耗带宽的,尤其是机器多的时候。
b) 正是有了arp缓存表,给恶意黑客带来了攻击服务器主机的风险,这个就是arp欺骗攻击。
c) 切换路由器,负载均衡器等设备时,可能会导致短时网络中断。因为所有的客户端ARP缓存表没有更新
②服务器切换ARP问题
当集群中一台提供服务的lb01机器宕机后,然后VIP会转移到备机lb02上,但是客户端的ARP缓存表的地址解析还是宕机的lb01的MAC地址。从而导致,即使在lb02上添加VIP,也会发生客户端无法访问的情况。
解决办法是:当lb01宕机,VIP地址迁移到lb02时,需要通过arping命令通知所有网络内机器更新本地的ARP缓存表,从而使得客户机访问时重新广播获取MAC地址。
这个是自己开发服务器高可用脚本及所有高可用软件必须考虑到的问题。
ARP广播进行新的地址解析
arping -I eth0 -c 1 -U VIP #格式
arping -I eth0 -c 1 -U 10.0.0.13
测试命令
ip addr del 10.0.0.13/24 dev eth0 #lb03删除VIP
ip addr add 10.0.0.13/24 dev eth0 #lb04添加VIP
ip addr show eth0 查看确认VIP已存在
arping -I eth0 -c 1 -U 10.0.0.13 #服务器主动发送广播更新客户端的ARP缓存表
windows查看arp -a
接口: 10.0.0.1 --- 0x12
Internet 地址 物理地址 类型
10.0.0.13 00-0c-29-de-7c-97 动态
10.0.0.15 00-0c-29-de-7c-97 动态
10.0.0.16 00-0c-29-2e-47-20 动态
10.0.0.17 00-0c-29-4a-ac-4a 动态
10.0.0.18 00-0c-29-ea-ca-55 动态
③arp_announce和arp_ignore详解
# 配置的内核参数
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
lvs在DR模式下需要关闭arp功能
arp_announce
对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制:
确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口
数值 | 含义 |
0(默认) | 在任意网络接口(eth0,eth1,lo)上的任何本地地址 |
1 | 尽量避免不在该网络接口子网段的本地地址做出arp回应. 当发起ARP请求的源IP地址 是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口 上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理. |
2 | 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试 选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中 包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口 或其他的有可能接受到该ARP回应的网络接口来进行发送. |
arp_ignore定义
对目标地定义对目标地址为本地IP的ARP询问不同的应答模式0
数值 | 含义 |
0(默认值) | 回应任何网络接口上对任何本地IP地址的arp查询请求 |
1 | 只回答目标IP地址是来访网络接口本地地址的ARP查询请求 |
2 | 只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内 |
3 | 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应 |
4-7 | 保留未使用 |
8 | 不回应所有(本地地址)的arp查询 |
抑制RS端arp前的广播情况
抑制RS端arp后广播情况
1.6 LVS集群的工作模式
DR(Direct Routing)直接路由模式 NAT(Network Address Translation) TUN(Tunneling)隧道模式 FULLNAT(Full Network Address Translation) |
TUN和FULLNAT模式这里不做过多简绍.
通过网络地址转换,调度器LB重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器,真实服务器的响应报文处理之后,返回时必须要通过调度器,经过调度器时报文的源地址被重写,再返回给客户,完成整个负载调度过程。
收费站模式---来去都要经过LB负载均衡器。
NAT方式的实现原理和数据包的改变过程:
(a). 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP (b). PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链 (c). IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP (d). POSTROUTING链通过选路,将数据包发送给Real Server (e). Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP (f). Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP |
LVS-NAT模型的特性
l RS应该使用私有地址,RS的网关必须指向DIP
l DIP和RIP必须在同一个网段内
l 请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈
l 支持端口映射
l RS可以使用任意操作系统
l 缺陷:对Director Server压力会比较大,请求和响应都需经过director server
NAT模式配置方法:分别有ipvs和lvs+keepalived俩种方法
1.6.2 ipvs的配置方法:
lvs服务器上配置:
ip addr add 10.0.0.13/24 dev eth0 label eth0:0 #只在lb01上配置即可
ipvsadm -C
ipvsadm --set 30 5 60
ipvsadm -A -t 10.0.0.13:80 -s rr -p 20
ipvsadm -a -t 10.0.0.13:80 -r 172.16.1.203:80 -m
ipvsadm -a -t 10.0.0.13:80 -r 172.16.1.204:80 -m
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lb01配置:
#ipvsadm -A -t 10.0.0.13:80 -s rr
#ipvsadm -a -t 10.0.0.13:80 -r 172.16.1.203:80 -m
#ipvsadm -a -t 10.0.0.13:80 -r 172.16.1.204:80 -m
lb02配置:
#ipvsadm -A -t 10.0.0.13:80 -s rr
#ipvsadm -a -t 10.0.0.13:80 -r 172.16.1.203:80 -m
#ipvsadm -a -t 10.0.0.13:80 -r 172.16.1.204:80 -m
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
RS配置:
/etc/sysconfig/network-scripts/ifcfg-eth1
GATEWAY=172.16.1.13
1.6.2 lvs+keepalived配置方法:
ip addr add 10.0.0.13/24 dev eth0 label eth0:0 #只在lb01上配置即可
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
lb01配置:
! Configuration File for keepalived
global_defs {
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.13/24 dev eth0 label eth0:1
}
}
vrrp_instance VI_2 {
state MASTER
interface eth1
virtual_router_id 52
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1112
}
virtual_ipaddress {
172.16.1.13/24 dev eth1 label eth1:1
}
}
virtual_server 10.0.0.13 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 172.16.1.203 80 {
weight 1
TCP_CHECK {
connect_timeout 8
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 172.16.1.204 80 {
weight 1
TCP_CHECK {
connect_timeout 8
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
lb02配置:
/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL1
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.13/24 dev eth0 label eth0:1
}
}
vrrp_instance VI_2 {
state BACKUP
interface eth1
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1112
}
virtual_ipaddress {
172.16.1.13/24 dev eth1 label eth1:1
}
}
virtual_server 10.0.0.13 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 172.16.1.203 80 {
weight 1
TCP_CHECK {
connect_timeout 8
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 172.16.1.204 80 {
weight 1
TCP_CHECK {
connect_timeout 8
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
RS上配置:
/etc/sysconfig/network-scripts/ifcfg-eth1
GATEWAY=172.16.1.13
1.8 lVS+Keepalived方案实现
1. 添加VIP
2. 添加LVS配置
3. 高可用(VIP漂移)
4. web服务器健康检查
yum -y install keepalived
# 检查软件是否安装
[root@lb03 ~]# rpm -qa keepalived
keepalived-1.3.5-1.el7.x86_64
lb03上keepalied配置文件
1 [root@lb03 ~]# cat /etc/keepalived/keepalived.conf
2 global_defs {
3 router_id LVS_01
4 }
5
6 vrrp_instance VI_1 {
7 state MASTER
8 interface eth0
9 virtual_router_id 51
10 priority 150
11 advert_int 1
12 authentication {
13 auth_type PASS
14 auth_pass 1111
15 }
16 virtual_ipaddress {
17 10.0.0.13/24
18 }
19 }
20
21 virtual_server 10.0.0.13 80 {
22 delay_loop 6 #服务轮询延时时间
23 lb_algo wrr #指定算法为权重轮询算法
24 lb_kind DR #模式为DR
25 nat_mask 255.255.255.0
26 persistence_timeout 50
27 protocol TCP
28
29 real_server 10.0.0.17 80 {
30 weight 1
31 TCP_CHECK {
32 connect_timeout 8
33 nb_get_retry 3
34 delay_before_retry 3
35 connect_port 80
36 }
37 }
38
39 real_server 10.0.0.18 80 {
40 weight 1
41 TCP_CHECK {
42 connect_timeout 8
43 nb_get_retry 3
44 delay_before_retry 3
45 connect_port 80
46 }
47 }
48 }
lb04的Keepalied配置文件
1 [root@lb04 ~]# cat /etc/keepalived/keepalived.conf
2 global_defs {
3 router_id LVS_02
4 }
5
6 vrrp_instance VI_1 {
7 state BACKUP
8 interface eth0
9 virtual_router_id 51
10 priority 100
11 advert_int 1
12 authentication {
13 auth_type PASS
14 auth_pass 1111
15 }
16 virtual_ipaddress {
17 10.0.0.13/24
18 }
19 }
20 virtual_server 10.0.0.13 80 {
21 delay_loop 6
22 lb_algo wrr
23 lb_kind DR
24 nat_mask 255.255.255.0
25 persistence_timeout 50
26 protocol TCP
27
28 real_server 10.0.0.17 80 {
29 weight 1
30 TCP_CHECK {
31 connect_timeout 8
32 nb_get_retry 3
33 delay_before_retry 3
34 connect_port 80
35 }
36 }
37
38 real_server 10.0.0.18 80 {
39 weight 1
40 TCP_CHECK {
41 connect_timeout 8
42 nb_get_retry 3
43 delay_before_retry 3
44 connect_port 80
45 }
46 }
47 }
keepalived persistence_timeout参数意义 LVS Persistence 参数的作用
http://blog.csdn.net/nimasike/article/details/53911363
[root@lb03 ~]# systemctl restart keepalived.service
# 检查lvs状态
[root@lb03 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.0.0.13:80 wrr persistent 50
-> 10.0.0.17:80 Route 1 0 0
-> 10.0.0.18:80 Route 1 0 0
# 检查虚拟ip
[root@lb03 ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:de:7c:97 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.15/24 brd 10.0.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.0.0.13/24 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fede:7c97/64 scope link
valid_lft forever preferred_lft forever
(在web03/web04同时操作下面步骤)
步骤1:在lo网卡绑定VIP地址(ip)
步骤2:修改内核参数抑制ARP响应
ip addr add 10.0.0.13/32 dev lo #加入开机自启
cat >>/etc/sysctl.conf<<EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
EOF
sysctl -p
注意:web服务器上的配置为临时生效,可以将其写入rc.local文件,注意文件的执行权限。
使用curl命令进行测试,如果没问题,则配置完成!
[root@lb04 ~]# curl 10.0.0.13
web03
1.9 常见LVS负载均衡高可用解决方案
? 开发类似keepalived的脚本,早期的办法,现在不推荐使用。
? heartbeat+lvs+ldirectord脚本配置方案,复杂不易控制,不推荐使用
? RedHat工具piranha,一个web界面配置LVS。
? LVS-DR+keepalived方案,推荐最优方案,简单、易用、高效。
原文:http://blog.51cto.com/13055758/2090713