LVS实战

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

通过以下三个例子,理解LVS:
一、LVS基于NAT模型
二、LVS基于DR模型
三、PNMPP持久防火墙标记,利用防火墙定义80端口和443端口之间的烟亲关系

 

一、LVS基于NAT模型
实验拓扑图如下:

实验环境准备:

三台服务器:

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. 添加规则  
  5. ipvsadm -A -t 172.16.0.22:80 -s rr   
  6. ipvsadm -a -t 172.16.0.22:80 -r 192.168.10.2 -m  
  7. ipvsadm -a -t 172.16.0.22:80 -r 192.168.10.3 -m  
  8.  
  9. 保存规则:/etc/init.d/ipvsadm save 

4、测试
请在浏览器中输入
http://172.16.0.22/

请再次刷新一下

使用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基于DR模型

实验拓扑图如下:
 

 

实验环境:

网卡使用桥接
DIP:172.16.0.22
VIP:172.16.0.100

网卡使用桥接
RS1:172.16.0.23
VIP:172.16.0.100

网卡使用桥接
RS2:172.16.0.24
VIP:172.16.0.100

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.  
  7. 配置RS1的VIP地址并添加路由  
  8. #ifconfig lo:0 172.16.0.100 broadcast 172.16.0.100 netmask 255.255.255.255 up  
  9. #route add -host 172.16.0.100 dev lo:0  
  10.  
  11. 使用elinks测试RS1的配置的VIP是否生效  
  12. [root@RS1 html]# elinks -dump http://172.16.0.23/index.html  
  13.                                       RS1  
  14. [root@RS1 html]# elinks -dump http://172.16.0.100/index.html  
  15.                                       RS1  
  16.  
  17. 测试成功 

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.  
  7. 配置RS2的VIP地址并添加路由  
  8. #ifconfig lo:0 172.16.0.100 broadcast 172.16.0.100 netmask 255.255.255.255 up  
  9. #route add -host 172.16.0.100 dev lo:0  
  10.  
  11. 使用elinks测试RS2的配置的VIP是否生效  
  12. [root@RS2 html]#  elinks -dump http://172.16.0.24/index.html  
  13.                                       RS2  
  14. [root@RS2 html]#  elinks -dump http://172.16.0.100/index.html  
  15.                                       RS2  
  16. 测试成功 

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. 打开路由转发功能  
  6. #echo 1 >/proc/sys/net/ipv4/ip_forward  
  7.  
  8. 定义集群服务并添加Real Server  
  9. #ipvsadm -A -t 172.16.0.100:80 -s rr  
  10. #ipvsadm -a -t 172.16.0.100:80 -r 172.16.0.23 -g  
  11. #ipvsadm -a -t 172.16.0.100:80 -r 172.16.0.24 -g 

4、测试

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

刷新一下

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

  
  
  
  
  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 

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

实验环境:
网卡使用桥接
Director Sever:172.16.0.22
VIP:172.16.0.100

网卡使用桥接
RS1:172.16.0.23
VIP:172.16.0.100

网卡使用桥接
RS2:172.16.0.24
VIP:172.16.0.100

图跟上面一样采用DR模型

 

1、配置Director Server

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

2、配置RS1

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

3、配置RS2

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

4、测试

先测试80端口

 

刷新一下

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

刷新一下

提示:
1、请在windows本地修改好你的hosts文件,以方便解析域名www.test.com---->172.16.0.100
2、客户端证书在CA上下载,并导入浏览器中

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

  
  
  
  
  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 

LVS连接类型: 
PCC持久客户端连接
ipvsadm -A -t 172.16.0100.1:0 -s rr -p 1800
PPC持久端口连接
ipvsadm -A -t 172.16.0.100:80 -s rr
ipvsadm -A -t 172.16.0.100:23 -s rr

总结:做实验的时候可以利用ipvsadm改变调度算法和实现负载均衡的三种方式,进行不断测试

你可能感兴趣的:(LVS,集群,DR,ipvsadm,linux集群)