隐藏VIP方法:对外隐藏,对内可见
kernel parameter
目标mac地址为全F,交换机触发广播
/proc/sys/net/ipv4/conf/*IF*/
arp_ignore:定义接受到ARP请求时的响应级别:
0:只要本地配置的有相应地址,就给予响应
1:仅在请求的目标(MAC)地址配置请求到达的接口上的时候,才给予响应;
arp_announce:定义将自己地址向外通告时的通告级别;
0:将本地任何接口上的任何地址向外通告
1:试图仅向目标网络通告与其网络匹配的地址;
2:仅向与本地接口上地址匹配的网络进行通告
四种静态:
rr:轮询
wrr:
dh:
sh:
动态调度方法:
lc:最少连接
wlc:加权最少连接
sed:最短期望延迟
nq:never queue
LBLC:基于本地的最少连接
DH:
LBLCR:基于本地的带复制功能的最少连接
ipvs内核模块
yum install ipvsadm -y
管理集群服务
添加: -A -t|u|f service-address [-s scheduler]
-t TCP协议的集群
-u UDP协议的集群
service-address:IP:port
-f FWM:防火墙标记
service-address: MARK Number
修改 -E
删除 -D -t|u|f service-address
ipvsadm -A -t 192.168.9.100:80 -s rr
管理集群服务中的RS
添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight]
-t|u|f service-address 事先定义好的某集群服务
-r server-address 某RS的地址,在NAT模型中,可使用IP:PORT实现端口映射;
[-g|i|m] LVS类型
-g DR
-i TUN
-m NAT
[-w weight] 定义服务器权重
修改 -e
删除 -d -t|u|f service-address -r server-address
查看 -L|l
-n 数字格式显示主机地址和端口
-stats 统计数据
-rate 速率
-timeout 显示tcp、tcpfin和udp的会话超时时长
-:c 显示当前的ipvs连接状况
删除所有集群服务
-C 清空ipvs规则
保存规则
-S
ipvsadm -S > /path/to/somefile
载入此前的规则
-R
ipvsadm -R < /path/from/somefile
配置 vip
ifconfig eth0:2 192.168.150.100/24
/24 = netmask 255.255.255.0
/16 = netmask 255.255.0.0
解除vip
ifconfig eth0:2 down
LVS:
node01:
ifconfig eth0:8 192.168.150.100/24
node02~node03:
1)修改内核
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
2)设置隐藏的vip
ifconfig lo:3 192.168.150.100 netmask 255.255.255.255
规避死循环
RS中的服务
node02~node03:
yum install httpd -y
service httpd start
vi /var/www/html/index.html
from 192.168.150.1x // x 在node02写2 在node03写3
LVS服务配置
node01:
yum install ipvsadm
ipvsadm -A -t 192.168.150.100:80 -s rr
ipvsadm -a -t 192.168.150.100:80 -r 192.168.150.12 -g -w 1
ipvsadm -a -t 192.168.150.100:80 -r 192.168.150.13 -g -w 1
ipvsadm -ln
验证:
浏览器访问 192.168.150.100 看到负载 疯狂F5
node01:
netstat -natp 结论看不到socket连接
node02~node03:
netstat -natp 结论看到很多socket连接
node01:
ipvsadm -lnc 查看偷窥记录本
state FIN_WAIT: 连接过,偷窥了所有的包
SYN_RECV: 基本上lvs都记录了,证明lvs没事,一定是后边网络层出问题