LVS
LVS集群采用三层结构,主要组成部分为:
A:负载调度器(load balancer),它是整个集群对外的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为是来自一个IP地址(VIP)上。
B:服务器池(server pool),是一组真正执行客户请求的服务器。
C:共享存储(shared storage),它为服务器池提供一个共享的存储区,这样容易使服务器池提供相同的服务。
ipvs(IP Virtual Server),是运行在LVS下的提供负载均衡的一种技术
LVS-DR模式:
client –> VS –> RS –> client,DR模式将VS的mac地址修改至RS的mac地址
配置
准备三台主机server1,server2,server3
server1:
ip addr add 172.25.36.100/24 dev eth0 ##在eth0网卡上添加vip172.25.36.100
ipvscadm -A -t 172.25.36.100:80 -s rr ##添加一个service-address为172.25.36.100的80端口,调度器调度为rr轮询
ipvsadm -a -t 172.25.36.100:80 -r 172.25.36.2:80 -g ##添加一个RS给172.25.36.2,模式为gatawaying(DR,direct routing)
ipvsadm -a -t 172.25.36.100:80 -r 172.25.36.3:80 -g ##同上
/etc/init.d/ipvsadm save ##保存所添加的表单
ipvsadm -l ##查看表单
server2与server3上(http port与server1中ipvsadm 表中所添加的port一致):
/etc/init.d/httpd start
ip addr add 172.25.36.100/32 dev eth0 ##在eth0网卡添加rip172.25.36.100
yum install -y arptables_jf ##处理与arp协议有关的包
arptables -A IN -d 172.25.36.100 -j DROP ##将RS接受到的36.100丢弃(影响client所广播的172.25.36.100直接跳过vs到rs),将目标是172.25.36.100的包丢掉
arptables -A OUT -s 172.25.36.100 -j mangle --mangle-ip-s 172.25.36.2 ##将源是172.25.36.100的请求包发给172.25.36.2
/etc/init.d/arptables_jf save ##将arp策略保存
/etc/init.d/arptables_jf start ##启动arp服务
arptables -nL ##查看arptables表
测试(于真机上):
curl 172.25.2.100
arp -an 172.25.36.100 | grep 100 ##查看主机mac地址
arp -d 172.25.36.100 ##清除缓存
测试后得到的mac地址为sever1的地址,即client –> VS –> RS –>client