LVS持久连接的意义:
在固定时间内将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS;在指定时长内不再根据调度算法进行调度,会根据内存的ipvs的连接模版里的记录信息将同一个客户端的请求定向至同一个后端RS;
持久连接的类型:
1.PCC:持久客户端连接,将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS (只是根据Vip,所有服务都是集群服务,不同的服务都会被定向至同一个RS);
2.PPC:持久端口连接,将来自于同一个客户端发往某VIP的某端口的所有请求统统定向至同一个RS中 (根据Vip和端口号,不同的服务不会再被定向至同一个RS);
3.PFMC:持久防火墙标记连接,基于防火墙标记,将两个或两个以上的端口绑定为同一个服务(应用场景是http服务和https服务需要定向至同一个RS);
在电商网站中提供http服务和https服务时如何将同一客户端的VIP请求定向至同一个RS中???
1.第一种解决方案: 使用PCC,但是这种方法有一个缺点就是会将同一个客户端请求的所有集群服务定向至同一个RS;
2.第二种解决方案: 使用PFMC,可以将两个集群服务绑定为同一个服务,对于两个不同端口的请求定向至同一后端RS;
1.PPC的演示(这里是基于LVS-DR模型架构的,关于其配置不再赘述)
#ipvsadm -A -t 192.168.10.120:80 -s rr -p 120 ####使用持久连接,指定两分钟
#ipvsadm -a -t 192.168.10.120:80 -r 192.168.10.11 -g
#ipvsadm -a -t 192.168.10.120:80 -r 192.168.10.12 -g
#ipvsadm -L -n
2.在宿主机上进行测试看是否定向至同一台RS上(如果是的话,证明配置正确)
3.在Xshell中使用ssh 192.168.10.120命令访问Director,用ifconfig命令查看会发现ip是Director本机ip不是Vip;当我们对Vip的ssh服务进行访问时,而这个服务又没有定义成集群服务则会由Director直接响应;
4.添加ssh集群服务
#ipvsadm -A -t 192.168.10.120:22 -s rr -p 1200
#ipvsadm -a -t 192.168.10.120:22 -r 192.168.10.11 -g
#ipvsadm -a -t 192.168.10.120:22 -r 192.168.10.12 -g
#ipvsadm -L -n
再次测试(Xshell)
ssh 192.168.10.120
#ifconfig ####再次查看会看到这时的ip是192.168.10.12 RS2 并且已经实现持久连接;在指定时长内断开再连接还是RS2;
2.PCC的演示(这里是基于LVS-DR模型架构的,关于其配置不再赘述)
#ipvsadm -C
#ipvsadm -A -t 192.168.10.120:0 -s rr -p 120 ####0 指的是添加所有的集群服务
#ipvsadm -a -t 192.168.10.120:0 -r 192.168.10.11 -g
#ipvsadm -a -t 192.168.10.120:0 -r 192.168.10.12 -g
#ipvsadm -L -n
测试(Xshell)
ssh 192.168.10.120
#ifconfig ####再次查看会看到这时的ip是192.168.10.12 RS2 并且已经实现持久连接;在指定时长内断开再连接还是RS2;
3.PFMC的演示(这里是基于LVS-DR模型架构的,关于其配置不再赘述)
1.在所有的RS上配置ssl
#yum -y install mod_ssl
2.把Director当成CA在其上面进行配置
#cd /etc/pki/CA
#vim ../tls/openssl.cnf
[ req_distinguished_name ]
countryName_default = CN
stateOrProvinceName_default = HB
localityName_default = WUHAN
0.organizationName_default = COLLEGE
organizationalUnitName_default = Tech
#(umask 077 ; openssl genrsa 2048 > private/cakey.pem)
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
#touch index.txt serial crlnumber
#echo 01 > serial
3.在RS上建立ssl目录
#mkdir /etc/httpd/ssl
#cd /etc/httpd/ssl
#(umask 077; openssl genrsa 2048 > httpd.key)
#openssl req -new -key httpd.key -out httpd.csr
#scp httpd.csr 192.168.10.120:/tmp
4.在Director上签署证书颁发请求
#openssl ca -in /tmp/httpd.csr -out /tmp/httpd/crt
#scp /tmp/httpd.crt 192.168.10.12:/etc/httpd/ssl/
5.将RS2中的证书文件和私钥文件复制到其他的后端RS上
#cd /etc/httpd/ssl
#mkdir /etc/httpd/ssl ####在RS1上建立相应目录
#scp -p httpd.crt httpd.key 192.168.10.11:/etc/httpd/ssl/
#chmod 600 /etc/httpd/ssl/https.key
6.在各个RS上编辑ssl配置文件
#vim /etc/httpd/conf.d/ssl.conf
DocumentRoot "/var/www/html"
ServerName www.luochen.com:443
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
7.将修改后的ssl配置文件复制到后端各个节点上
#scp /etc/httpd/conf.d/ssl.conf 192.168.10.12:/etc/httpd/conf.d/
8.在所有节点上重启web服务
#servicehttpd restart
9.查看443端口是否被监听
#netstat -tnulp | grep 443
10.定义ssl集群服务
#ipvsadm -A -t 192.168.10.120:443 -s rr
#ipvsadm -a -t 192.168.10.120:443 -r 192.168.10.11 -g
#ipvsadm -a -t 192.168.10.120:443 -r 192.168.10.12 -g
#ipvsadm -L -n
11.在宿主机上测试
12.在Director上定义PFMC
#ipvsadm -C
#ipvsadm -t mangle -A PREROUTING -d 192.168.10.120 -p tcp -dport 80 -j MARK --set-mark 10
#ipvsadm -t mangle -A PREROUTING -d 192.168.10.120 -p tcp -dport 443 -j MARK --set-mark 10
#service ipvsadm save
#ipvsadm -A -f 10 -s rr
#ipvsadm -a -f 10 -r 192.168.10.11 -g
#ipvsadm -a -f 10 -r 192.168.10.12 -g
#ipvsadm -L -n
#service ipvsadm save
13.在宿主机上进行测试
14.修改集群服务,使用持久连接
#ipvsadm -E -f 10 -s rr -p 1200
#service ipvsadm save
15.最后再在宿主机上进行测试
PS:MARK的值是在0--99之间的任意一个整数值。。。。