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改變調度算法和實現負載均衡的三種方式,進行不斷測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章