天天看点

LVS实战

操作系统redhat 5.8(2.6.18-308.el5)

通过以下三个例子,理解LVS:

一、LVS基于NAT模型

二、LVS基于DR模型

三、PNMPP持久防火墙标记,利用防火墙定义80端口和443端口之间的烟亲关系

实验拓扑图如下:

LVS实战

实验环境准备:

三台服务器:

Director两块网卡

Director VIP:172.16.0.22(网卡连接方式Bridge)

Director DIP:192.168.10.1(网卡连接方式host-only)

RS1:192.168.0.11(网卡连接方式host-only)

RS2:192.168.0.12  (网卡连接方式host-only)

1、配置RS1,安装httpd

  1. #yum -y install httpd  
  2. #echo "<h1>RS1</h1>" >/var/www/html/index.html  
  3. #启动httpd服务:service httpd start  

2、配置RS2,安装httpd

  1. #yum -y install httpd  
  2. #echo "<h1>RS2</h1>" >/var/www/html/index.html  
  3. #启动httpd服务:service httpd start 

3、安装ipvsadm,定义集群并添加Real Server

  1. echo 1 >/proc/sys/net/ipv4/ip_forward  #打开路由转发功能  
  2. yum -y install ipvsadm          #安装ipvsadm  
  3. 添加规则  
  4. ipvsadm -A -t 172.16.0.22:80 -s rr   
  5. ipvsadm -a -t 172.16.0.22:80 -r 192.168.10.2 -m  
  6. ipvsadm -a -t 172.16.0.22:80 -r 192.168.10.3 -m  
  7. 保存规则:/etc/init.d/ipvsadm save 

4、测试

请在浏览器中输入http://172.16.0.22/

LVS实战

请再次刷新一下

LVS实战

使用ipvsadm查看一下连接的状态:

  1. [root@localhost ~]# ipvsadm -Lcn  
  2. IPVS connection entries  
  3. pro expire state       source             virtual            destination  
  4. TCP 01:55  TIME_WAIT   192.168.0.208:56673 172.16.0.22:80     192.168.10.3:80  
  5. TCP 00:07  CLOSE       192.168.0.208:56691 172.16.0.22:80     192.168.10.3:80  
  6. TCP 00:07  CLOSE       192.168.0.208:56694 172.16.0.22:80     192.168.10.2:80 
LVS实战

实验环境:

网卡使用桥接

DIP:172.16.0.22

VIP:172.16.0.100

RS1:172.16.0.23

RS2:172.16.0.24

1、配置RS1

  1. 修改RS1的内核参数  
  2. #echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore  
  3. #echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce  
  4. #echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
  5. #echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  
  6. 配置RS1的VIP地址并添加路由  
  7. #ifconfig lo:0 172.16.0.100 broadcast 172.16.0.100 netmask 255.255.255.255 up  
  8. #route add -host 172.16.0.100 dev lo:0  
  9. 使用elinks测试RS1的配置的VIP是否生效  
  10. [root@RS1 html]# elinks -dump http://172.16.0.23/index.html  
  11.                                       RS1  
  12. [root@RS1 html]# elinks -dump http://172.16.0.100/index.html  
  13.                                       RS1  
  14. 测试成功 

2、配置RS2

  1. 修改RS2的内核参数  
  2. #echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore  
  3. #echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce  
  4. #echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
  5. #echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  
  6. 配置RS2的VIP地址并添加路由  
  7. #ifconfig lo:0 172.16.0.100 broadcast 172.16.0.100 netmask 255.255.255.255 up  
  8. #route add -host 172.16.0.100 dev lo:0  
  9. 使用elinks测试RS2的配置的VIP是否生效  
  10. [root@RS2 html]#  elinks -dump http://172.16.0.24/index.html  
  11.                                       RS2  
  12. [root@RS2 html]#  elinks -dump http://172.16.0.100/index.html  
  13.                                       RS2  
  14. 测试成功 

3、配置Director Server

  1. 配置Director的VIP地址并添加路由  
  2. #ifconfig eth0:0 172.16.0.100 broadcast 172.16.0.100 netmask 255.255.255.255 up  
  3. #route add -host 172.16.0.100 dev eth0:0  
  4. 打开路由转发功能  
  5. #echo 1 >/proc/sys/net/ipv4/ip_forward  
  6. 定义集群服务并添加Real Server  
  7. #ipvsadm -A -t 172.16.0.100:80 -s rr  
  8. #ipvsadm -a -t 172.16.0.100:80 -r 172.16.0.23 -g  
  9. #ipvsadm -a -t 172.16.0.100:80 -r 172.16.0.24 -g 

请在浏览器中输入http://172.16.0.100/

LVS实战

刷新一下

LVS实战
  1. [root@localhost ~]# ipvsadm -Lcn  
  2. IPVS connection entries  
  3. pro expire state       source             virtual            destination  
  4. TCP 01:50  FIN_WAIT    192.168.0.208:57015 172.16.0.100:80    172.16.0.23:80  
  5. TCP 01:53  FIN_WAIT    192.168.0.208:57079 172.16.0.100:80    172.16.0.23:80  
  6. TCP 00:02  CLOSE       192.168.0.208:57032 172.16.0.100:80    172.16.0.24:80  
  7. TCP 01:53  FIN_WAIT    192.168.0.208:57081 172.16.0.100:80    172.16.0.23:80  
  8. TCP 01:52  FIN_WAIT    192.168.0.208:57042 172.16.0.100:80    172.16.0.24:80 

Director Sever:172.16.0.22

图跟上面一样采用DR模型

1、配置Director Server

  1. 配置Director的VIP地址并添加路由,并打开转发功能,步骤同上  
  2. 配置CA服务器  
  3. #vim /etc/pki/tls/openssl.cnf  
  4. #dir=/etc/pki/CA     
  5. #cd /etc/pki/CA  
  6. #mkdir certs newcerts crl  
  7. #touch index.txt  
  8. #echo 01 > serial  
  9. #(umask 077;openssl genrsa -out private/cakey.pem 2048)  
  10. #openssl req -x509 -new -key private/cakey.pem -out cacert.pem -days 365  
  11. 添加防火墙规则,定义80端口和443端口之间的烟亲关系  
  12. #iptables -t mangle -A PREROUTING -d 172.16.0.100 -p tcp --dport 80 -j MARK --set-mark 6  
  13. #iptables -t mangle -A PREROUTING -d 172.16.0.100 -p tcp --dport 443 -j MARK --set-mark 6  
  14. 定义集群服务并添加Real Server  
  15. #ipvsadm -A -f 6 -s rr  
  16. #ipvsadm -a -f 6 -r 172.16.0.23 -g  
  17. #ipvsadm -a -f 6 -r 172.16.0.24 -g 

2、配置RS1

  1. 需要修改内核参数和配置VIP并添加路由,步骤同上  
  2. 为httpd服务生成的密钥  
  3. #yum -y install mod_ssl  
  4. #mkdir /etc/httpd/ssl  
  5. #cd /etc/httpd/ssl/  
  6. #(umask 077;openssl genrsa -out httpd.key 2048)  
  7. #openssl req -x509 -new -key httpd.key -out httpd.csr -days 365  #请填写好你要访问的域名,这里写的是www.test.com  
  8. #CA签署证书(CA服务器上操作)  
  9. #scp httpd.cst 172.16.0.22:/tmp  
  10. #openssl ca -in httpd.csr -out httpd.crt -days 3665  
  11. #scp httpd.crt 172.16.0.23:/etc/httpd/ssl  
  12. #vim /etc/httpd/conf.d/ssl.conf  
  13. DocumentRoot "/var/www/html"  
  14. ServerName www.test.com:443  
  15. SSLCertificateFile /etc/httpd/ssl/httpd.crt  
  16. SSLCertificateKeyFile /etc/httpd/ssl/httpd.key  
  17. #service httpd restart  

3、配置RS2

  1. 需要修改内核参数和配置VIP并添加路由并使用elinks测试,步骤同上  
  2. 复制RS1的/etc/httpd/ssl目录和ssl.conf文件  
  3. #yum -y install mod_ssl  
  4. #scp -rp /etc/httpd/ssl 172.16.0.24:/etc/httpd/ssl  
  5. #scp /etc/httpd/conf.d/ssl.conf 172.16.0.23:/etc/httpd/conf.d/  
  6. #service httpd restart   

先测试80端口

LVS实战
LVS实战

测试443端口:注意观察上面浏览器有一把锁的标志

LVS实战
LVS实战

提示:

1、请在windows本地修改好你的hosts文件,以方便解析域名www.test.com---->172.16.0.100

2、客户端证书在CA上下载,并导入浏览器中

  1. [root@localhost ~]# ipvsadm -Lcn  
  2. IPVS connection entries  
  3. pro expire state       source             virtual            destination  
  4. TCP 01:03  FIN_WAIT    192.168.0.208:55308 172.16.0.100:443   172.16.0.23:443  
  5. TCP 01:03  FIN_WAIT    192.168.0.208:55312 172.16.0.100:443   172.16.0.23:443  
  6. TCP 01:45  FIN_WAIT    192.168.0.208:55349 172.16.0.100:80    172.16.0.23:80  
  7. TCP 01:21  FIN_WAIT    192.168.0.208:55339 172.16.0.100:443   172.16.0.23:443  
  8. TCP 01:03  FIN_WAIT    192.168.0.208:55307 172.16.0.100:443   172.16.0.24:443  
  9. TCP 01:46  FIN_WAIT    192.168.0.208:55355 172.16.0.100:80    172.16.0.23:80  
  10. TCP 01:46  FIN_WAIT    192.168.0.208:55354 172.16.0.100:80    172.16.0.24:80 

继续阅读