lvs高级配置(持久连接、防火墙标记)
一、对于session的绑定
session绑定:lvs sh调度算法对某一特定服务;如果开始http访问需要认证转为https认证就有可能分配到另一台服务期。只能特定单独的服务,不支持高级调度算法。
lvs persistence:lvs的持久连接
二、功能:
无论ipvs使用何种调度方法,其都能实现将来自于同一个Client的请求始终定向至第一次调度时挑选出的RS;比sh高级的是可以使用高级调度方法。可以定义持久时长:时间超时用户未离开,自动延长时间。当用户退出后,等待一定的时间计时器超时后从持久连接模板中删除记录条目,之后的连接采用选择的调度方式调度,重启持久连接。
持久连接模板:独立于算法 sourceip rs timer
三、持久连接的实现方式:
1、每端口持久:PPC,单服务持久调度,可以定义持久时长。时间超时用户未离开,自动延长时间。
例如:
[root@director ~]# ipvsadm -A -t 192.168.3.1:443 -s rr -p
[root@director ~]# ipvsadm -a -t 192.168.3.1:443 -r 192.168.2.3:443 -g
[root@director ~]# ipvsadm -a -t 192.168.3.1:443 -r 192.168.2.4:443 -g
[root@director ~]# ipvsadm -A -t 192.168.3.1:80 -s rr
[root@director ~]# ipvsadm -a -t 192.168.3.1:80 -r 192.168.2.3:80 -g
[root@director ~]# ipvsadm -a -t 192.168.3.1:80 -r 192.168.2.4:80 –g
2、每FWM持久:PFWMC,单FWM持久调度,单防火墙标记持久连接,不区分服务。
PORT AFFINITY
例如:
[root@director ~]# ipvsadm -E -f 10 -s rr -p
[root@director ~]# ipvsadm -A -t 192.168.3.1:22 -s rr
[root@director ~]# ipvsadm -a -t 192.168.3.1:22 -r 192.168.2.3:22 -g
[root@director ~]# ipvsadm -a -t 192.168.3.1:22 -r 192.168.2.4:22 –g
3、每客户端持久:PCC,单客户端持久调度,把所有的服务定义为集群服务,director都调度到一台Real server
例如:
[root@director ~]# ipvsadm -C
[root@director ~]# ipvsadm -A -t 192.168.3.1:0 -s rr -p
[root@director ~]# ipvsadm -a -t 192.168.3.1:0 -r 192.168.2.3 -g
[root@director ~]# ipvsadm -a -t 192.168.3.1:0 -r 192.168.2.4 –g
director会将用户的任何请求都识别为集群服务,并向RS进行调度
TCP:1-65535
UDP: 1-65535
四、FWM,防火墙标记
在mangle表中的PREROUTING上定义:
-j MARK –set-mark 10
ipvs: -A -f 10
通过FWM定义集群的方式:
(1) 在director上netfilter的mangle表的PREROUTING定义用于”打标”的规则
~]# iptables -t mangle -A PREROUTING -d $vip -p $protocol –dports $port -j MARK –set-mark #
$vip: VIP地址
$protocol:协议
$port: 协议端口
例如:
[root@director ~]# iptables -t mangle -A PREROUTING -d 192.168.3.1 -p tcp -m multiport –dports 80,443 -j MARK –set-mark 10
(2) 基于FWM定义集群服务:
~]# ipvsadm -A -f # -s scheduler
例如:
[root@director ~]# ipvsadm -A -f 10 -s rr
[root@director ~]# ipvsadm -a -f 10 -r 192.168.2.3 -g
[root@director ~]# ipvsadm -a -f 10 -r 192.168.2.4 –g
功用:将共享一组RS的集群服务统一进行定义;
验证拓扑:
一、初始配置
1、director:
[root@director ~]# yum -y install ipvsadm
[root@director ~]# ifconfig eth1 11.100.45.9/24
[root@director ~]# route add default gw 11.100.45.254
[root@director ~]# ifconfig eth2 192.168.2.2/24
[root@director ~]# ifconfig lo:0 192.168.3.1/32 broadcast 192.168.3.1
[root@director ~]# route add -host 192.168.3.1 dev lo:0
2、server1:
[root@server1 ~]# ifconfig eth2 192.168.2.3/24
[root@server1 ~]# ifconfig eth1 11.100.45.4/24
[root@server1 ~]# route add default gw 11.100.45.254
[root@server1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@server1 ~]# echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore
[root@server1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@server1 ~]# echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announce
[root@server1 ~]# ifconfig lo:0 192.168.3.1/32 broadcast 192.168.3.1 up
[root@server1 ~]# route add -host 192.168.3.1 dev lo:0
[root@realserver1 ~]# yum -y install httpd
[root@server1 ~]# yum -y install mod_ssl
[root@realserver1 ~]# service httpd start
二、配置http、https
1、server2:
[root@realserver2 ~]# ifconfig eth2 192.168.2.4/24
[root@realserver2 ~]# ifconfig eth1 11.100.45.7/24
[root@realserver2 ~]# route add default gw 11.100.45.254
[root@realserver2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@realserver2 ~]# echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore
[root@realserver2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@realserver2 ~]# echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announce
[root@realserver2 ~]# ifconfig lo:0 192.168.3.1/32 broadcast 192.168.3.1 up
[root@realserver2 ~]# route add -host 192.168.3.1 dev lo:0
[root@realserver2 ~]# yum -y install httpd
[root@server2 ~]# yum -y install mod_ssl
[root@realserver2 ~]# service httpd start
2、ca:
server1:
[root@server1 ~]# mkdir /etc/httpd/ssl -pv
[root@server1 CA]# touch index.txt
[root@server1 CA]# echo 01 > serial
[root@server1 CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)
[root@server1 CA]# openssl req -new -x509 -key private/cakey.pem -days 3650 -out cacert.pem
[root@server1 CA]# (umask 077;openssl genrsa -out www.cpe.com.key 2048)
[root@server1 CA]# openssl req -new -key www.cpe.com.key -days 365 -out www.cpe.com.csr
[root@server1 CA]# openssl ca -in www.cpe.com.csr -out www.cpe.com.crt
[root@server1 CA]# cp -a www.cpe.com.* /etc/httpd/ssl/
[root@server1 CA]# ssh root@192.168.2.4 mkdir -pv /etc/httpd/ssl
[root@server1 CA]#scp /etc/httpd/ssl/ root@192.168.2.4:/etc/httpd/ssl/
[root@server1 CA]# vim /etc/httpd/conf.d/ssl.conf
DocumentRoot “/var/www/html”
ServerName www.cpe.com:443
SSLCertificateFile /etc/httpd/ssl/www.cpe.com.crt
SSLCertificateKeyFile /etc/httpd/ssl/www.cpe.com.key
[root@server1 CA]# scp /etc/httpd/conf.d/ssl.conf root@192.168.2.4:/etc/httpd/conf.d/ssl.conf
三、lvs调度测试
lvs:
[root@director ~]# yum -y install ipvsadm
[root@director ~]# ipvsadm -A -t 192.168.3.1:80 -s rr
[root@director ~]# ipvsadm -a -t 192.168.3.1:80 -r 192.168.2.3:80 -g
[root@director ~]# ipvsadm -a -t 192.168.3.1:80 -r 192.168.2.4:80 -g
创建lvs调度:
1.非持久连接fw标记.
[root@director ~]# iptables -t mangle -A PREROUTING -d 192.168.3.1 -p tcp -m multiport –dports 80,443 -j MARK –set-mark 10
[root@director ~]# ipvsadm -C
[root@director ~]# ipvsadm -A -f 10 -s rr
[root@director ~]# ipvsadm -a -f 10 -r 192.168.2.3 -g
[root@director ~]# ipvsadm -a -f 10 -r 192.168.2.4 -g
2.改为fwmark持久连接,增加ssh调度,ssh轮训,而http,https是持久调度的
[root@director ~]# ipvsadm -E -f 10 -s rr -p
[root@director ~]# ipvsadm -A -t 192.168.3.1:22 -s rr
[root@director ~]# ipvsadm -a -t 192.168.3.1:22 -r 192.168.2.3:22 -g
[root@director ~]# ipvsadm -a -t 192.168.3.1:22 -r 192.168.2.4:22 -g
3.验证基于客户端调度(单个客户段所有的服务被调度到同一台real server上了)
[root@director ~]# ipvsadm -C
[root@director ~]# ipvsadm -A -t 192.168.3.1:0 -s rr -p
[root@director ~]# ipvsadm -a -t 192.168.3.1:0 -r 192.168.2.3 -g
[root@director ~]# ipvsadm -a -t 192.168.3.1:0 -r 192.168.2.4 -g
4.基于端口的持久连接(http进行论调,而https进行持久连接)
[root@director ~]# ipvsadm -A -t 192.168.3.1:443 -s rr -p
[root@director ~]# ipvsadm -a -t 192.168.3.1:443 -r 192.168.2.3:443 -g
[root@director ~]# ipvsadm -a -t 192.168.3.1:443 -r 192.168.2.4:443 -g
[root@director ~]# ipvsadm -A -t 192.168.3.1:80 -s rr
[root@director ~]# ipvsadm -a -t 192.168.3.1:80 -r 192.168.2.3:80 -g
[root@director ~]# ipvsadm -a -t 192.168.3.1:80 -r 192.168.2.4:80 -g