Linux之lvs负载均衡【DR模式】

lvs

1.开3台虚拟机,在调度器上配置好yum源,这里是server1,在另外两台rs上安装httpd
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.0.250/rhel6.5/x86_64/dvd/LoadBalancer
gpgcheck=0

2.安装ipvsadm,编写调度策略
yum install -y ipvsadm
ipvsadm -l ##查看策略,size=4096()
lsmod ##查看内核模块
lsmod |grep ip_vs
ip_vs 125220 0

######DR模式######

#3.添加策略
ipvsadm -A -t 172.25.0.100:80 -s rr ##调度策略,rr轮询,ipvsadm --help看到,共10种调度算法
ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.2:80 -g ##后端两个rs
ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.3:80 -g

ipvsadm -l 查看策略
/etc/init.d/ipvsadm save ##保存策略

给调度器添加vip:
ip addr add 172.25.0.100/24 dev eth0

然后在物理机上测试访问,发现不能返回结果,但是ipvsadm -l可以看到调度是成功的
所以需要给rs上也添加vip

‘因为数据的走向是 client -> vs -> rs -> client’

server2和server3上:
ip addr add 172.25.0.100/32 dev eth0 ##子网掩码为32是因为这个ip不对外,只有自己用

再次测试,成功调度

#在物理机上,arp -an | grep 100 , 可以看到默认缓存的是server1的mac地址
#用arp -d 172.25.0.100清除缓存,再次访问时,可能就不轮询,因为可能缓存了某台rs的mac地址
#这样对rs来说不安全,因为直接访问到了后端rs
#访问量过大可能会宕机

##解决方法1:
##添加arptable策略解决##
arptables是用户空间工具,用来管理 linux内核中的ARP规则表.这些规则用来
检查ARP帧.arptables类似于iptables,但没有那么复杂.iptables工作于ip层,
用于对ip包进行管理.arptables工作与arp协议层,用于对arp数据帧进行管理.
arptables可以像iptables那样对arp数据帧进行各种规则设置,可以ACCEPT,
DROP等
在两台rs(server2和server3)上安装arptables:
yum install -y arptables_jf

arptables -L ##查看策略

arptables -A IN -d 172.25.0.100 -j DROP ##添加策略,让目的地址为172.25.0.100的访问不能到达rs
-d, --destination [!] address[/mask]目的地址
-j, --jump target跳到目标

arptables -A OUT -s 172.25.0.100 -j mangle --mangle-ip-s 172.25.0.2 ##让返回的数据来自server2

/etc/init.d/arptables_jf save ##保存策略

‘正常访问’

##解决方法2:
##配置内核参数
##arp_ignore和arp_announce参数都和ARP协议相关,主要用于控制系统返回arp响应和发送arp请求时的动作。这两个参数很重要,特别是在LVS的DR场景下,它们的配置直接影响到DR转发是否正

arp_ignore参数的作用是控制系统在收到外部的arp请求时,是否要返回arp响应
1:只响应目的IP地址为接收网卡上的本地地址的arp请求
arp_announce的作用是控制系统在对外发送arp请求时,如何选择arp请求数据包的源IP地址
2:忽略IP数据包的源IP地址,选择该发送网卡上最合适的本地地址作为arp请求的源IP地址
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p

展开阅读全文

没有更多推荐了,返回首页