Lvs服务

在Linux下用LVS和Ipvsadm做Web负载均衡,LVS是在linux操作系统基础上建立虚拟服务器,实现服务节点之间的负载均衡。它是基于linux内核实现的,2.6.X内核默认集成了lvs模块,LVS常用负载均衡的实现是基于ip协议的,所以一般称为IPVS。

实验环境将使用6.5的操作系统。

安装ipvsadm

		yum install -y ipvsadm

编辑策略

 ipvsadm -A -t 172.25.3.100:80 -s rr
 ipvsadm -a -t 172.25.3.100:80 -r 172.25.3.2:80 -g	
 ipvsadm -a -t 172.25.3.100:80 -r 172.25.3.3:80 -g

保存策略

 /etc/init.d/ipvsadm save
 或  systemctl restart ipvsadm

查看策略列表

	ipvsadm -l	或	ipvsadm -ln
	IP Virtual Server version 1.2.1 (size=4096)
	Prot LocalAddress:Port Scheduler Flags
	  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
	TCP  172.25.3.100:http rr
	  -> server2:http                 Route   1 250     0          0         
	  -> server3:http                 Route   1      	0          0  

在所有的服务器上添加VIP

[root@server1 ~]# ip addr add 172.25.3.100/24 dev eth0

[root@server2 ~]# ip addr add 172.25.3.100/32 dev eth0

[root@server3 ~]# ip addr add 172.25.3.100/32 dev eth

注:dr模式需要rs与vs的ip在同一网段(vlan)

测试:
物理机测试

curl 172.25.3.100

得到server2和server3的轮询
如果操作没有问题,但是不能产生轮询效果
在物理机中

	arp -an |grep 100

查看物理机的arp缓存

arp -an |grep 100
? (172.25.3.100) at 52:54:00:f5:88:b8 [ether] on br0
								^
							网卡地址

因为物理机上有arp缓存,如果一直显示server2 或server3不产生轮询,说明arp缓存的网卡地址属于server2或server3。清除缓存即可。

	arp -d 172.25.3.100		# 清除arp缓存的命令

为arptables网络的用户控制过滤的守护进程

arptables用法示例:
将源是a,目的是c的请求包发给b
arptables -A OUT -s a ! -d c -j mangle --mangle-ip-s b

在server2和server3上分别:

	 yum install -y arptables_jf
	 
	 arptables -A IN -d 172.25.3.100 -j DROP
	 
	 arptables -A OUT -s 172.25.3.100 -j mangle --mangle-ip-s 172.25.3.2
	 
	 /etc/init.d/arptables_jf save
	 或 systemctl restart arptables_if
	arptables -nL		## 查看列表

在server1:

		ipvsadm -C			## 清空ipvsadm策略表
		ipvsadm -nl
		modeprobe ipip
		ip addr del 172.25.3.100/24 dev eth0		## 删除eth0上的ip
		ip addr add 172.25.3.100/24 dev tunl0	## 在新增的tunl0上添加ip
		ip link set up tunl0		## 启用tuml0

重新编辑策略
 ipvsadm -A -t 172.25.3.100:80 -s rr
 ipvsadm -a -t 172.25.3.100:80 -r 172.25.3.2:80 -g	
 ipvsadm -a -t 172.25.3.100:80 -r 172.25.3.3:80 -g
 systemctl restart ipvsadm

在server2和server3:

		modeprobe ipip
		ip addr del 172.25.3.100/32 dev eth0		## 删除eth0上的ip
		ip addr add 172.25.3.100/32 dev tunl0	## 在新增的tunl0上添加ip
		ip link set up tunl0		## 启用tuml0

在物理机中

	curl server1

得到轮询结果,如果server2或者server3其中一台突然down了
curl结果为正常运行的另一台

你可能感兴趣的:(Linux企业服务)