天天看點

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 

繼續閱讀