LVS分类有三种nat(地址转换)、rd(直接路由)和tun(隧道)
其中nat最多可以用于10台的集群,而RD和TUN可以用于100以上的,不过TUN隧道会占用隧道资源,所以RD是现在企业最常用的LVS
工作原理:
由外面用户访问Load balancer的VIP的时候,Load balacer会根据算法决定转发给集群中的哪台服务器,转发前修改请求包的目的的MAC地址,源IP和目的IP都不变,然后发送给服务器,服务器接收了之后根据7层协议把包拆分分析给直接回复用户,所以这里需要服务器能有访问外网的权限。
问题
由于只修改了MAC地址没有修改IP,服务器可以收到请求包,可是当拆分到网络层的时候,因为IP不是服务器的IP,所以这时候服务器不会响应用户的请求,这时候,需要在服务器上配置一个回环地址,因为回环地址只能本机可见,所以不会和Load balacer发生冲突,这个地址就是VIP,这样的话服务器就可以拆分网络层就可以响应用户了,可是问题来了 ,如果有人在ARP中发信息说IP为VIP的MAC地址是多少,那所有服务器都会回复它,这时候就分不清哪个是真正的VIP的MAC地址啦,所以这时候需要对ARP回复设置,服务器都需要设置不能回复询问回环地址的ARP请求,这样就不会有问题了。
yum -y install make gcc gcc-c++ libaio
虚拟机如果本来只有一个网上的话 再加入网卡,可以看以下方法
https://www.cnblogs.com/yaohong/p/7253222.html
lsmod |grep ip_vs 查看是否有LVS的模块
yum install ipvsadm 没有就安装
ipvsadm 加载模块
lsmod |grep ip_vs
模块加载成功执行以上命令会有以下信息
ip_vs 140944 0
设置VIP的IP
ifconfig eno16777736:150 192.168.136.150(外网IP) netmask 255.255.255.0 up
ipvsadm -C
ipvsadm --set 30 5 60
ipvsadm -A -t 192.168.136.150:80 -s wrr -p 20
ipvsadm -a -t 192.168.136.150:80 -r 192.168.136.129:80 -g -w 1 #192.168.136.129为服务器IP
ipvsadm -a -t 192.168.136.150:80 -r 192.168.136.130:80 -g -w 1 #192.168.136.130为服务器IP
ipvsadm -L -n 查看是否设置成功
删除方法
ipvsadm -D -t 192.168.136.150:80 -s wrr -p 20
ipvsadm -d -t 192.168.136.150:80 -r 192.168.136.130:80
在real server设置
yum install httpd -y
echo "slaver1" >/var/www/html/index.html
ifconfig lo:150 192.168.136.150 netmask 255.255.255.255 up
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
arp_ignore
0默认值,回应任何网络接口上对任何本地IP地址的ARP查询请求
1 只回答目标IP地址是来访网络接口本地地址的ARP查询请求
用浏览器去访问VIP可以看
转载于:https://blog.51cto.com/izhouyu/2179000