标签:如何 work pvs ipad auto lse 工具 功能 target
环境搭建:客户端:172.20.23.20
路由器:
172.20.23.30/16
192.168.23.30/24
10.0.0.1/16
LVS:
VIP --10.0.0.100/16
DIP --192.168.23.100/24
后端服务器:
RS1 --192.168.23.36
RS2 --192.168.23.37
网络环境搭建:
客户端路由设置:
[root@www19:36:15~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.20.23.30 0.0.0.0 UG 100 0 0 eth0
172.20.0.0 0.0.0.0 255.255.0.0 U 100 0 0 eth0
LVS服务器路由设置:
[root@www19:38:19network-scripts]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.0.0 U 100 0 0 eth0
192.168.23.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1
后端服务器路由设置:
[root@apache119:29:53~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.23.30 0.0.0.0 UG 100 0 0 eth0
192.168.23.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
后端服务器因为都需要绑定VIP,所以我们不得不进行防止arp广播处理!
处理方式:调整内核参数
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
也可以写入配置文件/etc/sysctl.conf
net.ipv4.conf.all.apr_ignore = 1
net.ipv4.conf.all.arp_announce = 2
处理完成之后我们开始绑定VIP,为了使用稳定我们要选择lo网卡作为绑定对象!
绑定方式:
ip a a 10.0.0.100/32 dev lo
ifconfig lo 10.0.0.100/32
想要永久有效需要自行编辑配置文件:
例如:利用网卡别名
[root@apache119:49:07network-scripts]#cat ifcfg-lo:1
DEVICE=lo:1
IPADDR=10.0.0.100
NETMASK=255.255.255.255
NETWORK=127.0.0.0
# If you‘re having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
LVS调度器规则设定:
[root@www19:39:48network-scripts]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.0.0.100:80 rr
-> 192.168.23.36:80 Route 1 0 3
-> 192.168.23.37:80 Route 1 0 2
https使用时,必须使用同一私钥和证书:
快速生成测试证书:
/etc/pki/tls/certs目录下
Makefile文件中修改加密选项
#/usr/bin/openssl genrsa -aes128 $(KEYLEN) > $@
/usr/bin/openssl genrsa $(KEYLEN) > $@
执行make httpd.crt --直接生成私钥和证书
生成的证书拷贝到/etc/httpd/conf.d/ssl/
然后配置ssl.conf文件
然后复制设个RS主机的所有配置文件到所有RS主机之上!
然后重新生成ipvsadm规则!
测试访问:
curl -k https://10.0.0.100
注意:
要使用相同的秘钥和证书
利用iptables规则实现标签会话:
有标签的就认为是同一服务
-f:firewall MARK 标记 一个
利用防火墙打标签:
iptables -t mangle -A PREROUTING -d VIP -p tcp -m multiport --dports 80,443 -j MARK --set-mark [n]
具体使用:
iptables -t mangle -A PREROUTING -d 10.0.0.100 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 5
防火墙生成策略:
[root@www22:01:50~]#iptables -t mangle -nvL
Chain PREROUTING (policy ACCEPT 54 packets, 3564 bytes)
pkts bytes target prot opt in out source destination
0 0 MARK tcp -- * * 0.0.0.0/0 10.0.0.100 multiport dports 80,443 MARK set 0x5
在lvs服务器中打标:
ipvsadm -A -f [n]
实际应用:
ipvsadm -A -f 5 -s rr
ipvsadm -a -f 5 -r 192.168.23.33 -g
ipvsadm -a -f 5 -r 192.168.23.34 -g
持久连接实现方式
每端口持久(PPC):每个端口对应定义为一个集群服务,每集群服务单独调度
每防火墙标记持久(PFWMC):基于防火墙标记定义集群服务;可实现将多个端口上的应用统一调度,即所谓的port Affinity
每客户端持久(PCC):基于0端口(表示所有服务)定义集群服务,即将客户端对所有应用的请求都调度至后端主机,必须定义为持久模式
持久连接:默认360秒
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
-p:后面设置时间
[root@www20:11:11network-scripts]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
FWM 5 rr persistent 360
-> 192.168.23.36:0 Route 1 0 2
-> 192.168.23.37:0 Route 1 0 6
客户端测试:
[root@www20:10:57~]#for i in {1..1000};do curl -k https://10.0.0.100; sleep 1 ;done
hello world
hello world
hello world
自制后端服务器自制脚本:
[root@www22:28:25~]#cat lvs.sh
#!/bin/bash
while true; do
if curl 192.168.23.33 &> /dev/null; then
true
sleep 1
else
ipvsadm -d -f 5 -r 192.168.23.33
exit 2
fi
if curl 192.168.23.34 &> /dev/null; then
true
sleep 1
else
ipvsadm -d -f 5 -r 192.168.23.34
exit 3
fi
done
LVS健康性检测工具:
ldirectord工具:
检测方式:
(a) 网络层检测,icmp
(b) 传输层检测,端口探测
(c) 应用层检测,请求某关键资源
RS全不用时:backup server, sorry server
包名:
ldirectord-3.9.6-0rc1.1.1.x86_64.rpm
文件:
/etc/ha.d/ldirectord.cf 主配置文件
/usr/share/doc/ldirectord-3.9.6/ldirectord.cf 配置模版
/usr/lib/systemd/system/ldirectord.service 服务
/usr/sbin/ldirectord 主程序
/var/log/ldirectord.log 日志
/var/run/ldirectord.ldirectord.pid pid文件
主配置文件初始为空需要cp模板文件!
配置文件详解:
checktimeout=3
--后端RS主机3秒之内没有反应就踢出
fallback=127.0.0.1:80
--所有后端主机全部宕机后启用
autoreload=yes
--自动加载-更改配置无须重启
logfile="/var/log/ldirectord.log"
--日志文件
quiescent=no
--后端主机宕机时的处理办法yes--调整权重为0--no为删除
配置ipvsadm规则:
virtual=10.0.0.100:80 --VIP
real=192.168.23.33:80 gate 1 --RIP
real=192.168.23.34:80 gate 2 --RIP
service=http --服务
scheduler=wrr --算法
#persistent=600 --持久连接
#netmask=255.255.255.255
protocol=tcp --协议
checktype=negotiate
checkport=80 --检查端口
request="index.html" --检测方式-看页面
receive="hello" --出现字样
virtualhost=www.x.y.z --虚拟主机
启动服务:
systemctl start ldirectord
如何实现标签功能:
1 防火墙标记:
iptables -t mangle -A PREROUTING -d 10.0.0.100 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 10
2 配置文件更改:
virtual=10
real=192.168.23.36 gate
real=192.168.23.37 gate
# real=192.168.6.6:80 gate
fallback=127.0.0.1 gate
service=http
scheduler=rr
#persistent=600
#netmask=255.255.255.255
#protocol=tcp
checktype=negotiate
checkport=80
request="index.html"
receive="hello"
virtualhost=www.x.y.z
标签:如何 work pvs ipad auto lse 工具 功能 target
原文地址:http://blog.51cto.com/13878078/2318589