LVS持久連接 ppc+pcc+防火牆標記

                             LVS持久連接 ppc+pcc+防火牆標記html

若是一個大型的網站使用了LVS進行負載均衡,咱們看到的網站是由幾個內部的相同網站羣集而來的,因爲http是一種無狀態的協議,每次請求完畢後就會自動斷開,而若是內部羣集的網站,是使用輪詢等方法時,若是一個用戶在第一個server中購買了一個商品以後,在下次請求時可能會輪詢到server2,這時候,咱們在第一個server中購買的商品就會消失,這顯然不是咱們想要的,也多是在購買端口以後,在付費的時候出現問題,咱們都是使用80端口訪問網站而使用443端口進行付費的,而80端口與443端口的轉換,也不能經過普通的鏈接來設置,這裏咱們就須要使用LVS持久連接來達到咱們想要的結果。數據庫

LVS持久連接有三種類型:vim

     pcc (persistent client connections) :持久的客戶端鏈接安全

     ppc (persistent port connections)  :持久的端口鏈接服務器

     persistent netfilter marked packet persistence :防火牆標記的鏈接負載均衡

咱們舉三個例子對這三種鏈接都作一下說明。ssh

如今的三個示例都是以DR模型爲基礎tcp

示例1    基於客戶的持久連接 pccide

   要求:uer1訪問server1測試

         user2訪問server2

Director配置

   [root@localhost ~]# ipvsadm –C

    [root@localhost ~]# ipvsadm -A -t 192.168.2.11:0 -s rr -p

[root@localhost ~]# ipvsadm -a -t 192.168.2.11:0 -r 192.168.2.20 -g

[root@localhost ~]# ipvsadm -a -t 192.168.2.11:0 -r 192.168.2.30 –g

      DR的基礎上咱們只須要修改這一處那可,下面就能夠測試

         user1上測試

你能夠對其進行刷新,可是老是出現server2的網頁

咱們能夠在director上查看一下匹配效果

[root@localhost ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.2.11:0 rr persistent 360

  -> 192.168.2.30:0               Route   1      0          7        

  -> 192.168.2.20:0               Route   1      0          0        

[root@localhost ~]#

從上面的匹配能夠看出,網頁老是訪問的192.168.2.30的網頁,也就是server2,沒有對server1進行訪問,上面的360指的是持久鏈接的時間是360秒。

咱們再在user2上訪問一下

刷新也是同樣的server1的內容

看一下director中的匹配狀況

[root@localhost ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.2.11:0 rr persistent 360

  -> 192.168.2.30:0               Route   1      0          7        

  -> 192.168.2.20:0               Route   1      0          6 

Server1訪問的沒有改變,仍爲7,可是server20增長到了6,也就是隻有usre2的訪問量,這樣就作到了在必定的時間內,每一個用戶只與一臺server相鏈接。

示例2 基於端口的持久鏈接 ppc

      若是羣集的內部分別有http服務和ssh服務,咱們想要使用VIP地址來訪問http服務器時,系統能夠定位到http服務器,訪問ssh時,系統定位到ssh服務器,那麼咱們就要使用基於端口的持久鏈接。以下例

      要求:讓client訪問網頁時轉到server1的主頁,使用ssh時轉到server2上的ssh服務上。

      director上進行配置

          [root@localhost ~]# ipvsadm –C

          [root@localhost ~]# ipvsadm -A -t 192.168.2.11:80 -s rr -p

[root@localhost ~]# ipvsadm -A -t 192.168.2.11:22 -s rr -p

[root@localhost ~]# ipvsadm -a -t 192.168.2.11:80 -r 192.168.2.20 -m

[root@localhost ~]# ipvsadm -a -t 192.168.2.11:22 -r 192.168.2.30 –m

      client上對其進行測試

         測試網頁:

結果能夠看到是server1中的網頁

測試ssh

      能夠看到經過訪問192.168.2.11進入了系統192.168.2.30

 

示例3 基於防火牆標記持久鏈接

       在日常的購物時咱們都是直接使用http來進行鏈接的,也就是使用80端口,爲了安全性,在付費的時候都會使用https也就是443端口,來進行安全付費,而若是你在server1上進行了物品的購買,而在付費的時候,要創建新的鏈接,那麼服務器在可能被鏈接到server2https服務上,這顯然是不行的,咱們要在和贓物一個相同數據庫中進行付費的操做,才能找到本身所購得的商品,而顯然咱們要讓鏈接再次進行時,必定要鏈接到購物的那個server1,這就須要基於防火牆標記來實現了,它能夠依據標記將贓物和付費的兩位鏈接都鏈接到同一個服務器中,這就達到了咱們的要求。

       要求:在相同的服務器上進行購物與付費

      咱們要先給server1server2設置https鏈接

         Server1server2各作以下配置

注:兩個服務器都要作https

          [root@localhost ~]# cd /etc/pki

[root@localhost pki]# vim tls/openssl.cnf

修改以下部分

           

           

保存退出

     建立須要的文件

[root@localhost pki]# cd CA/

[root@localhost CA]# mkdir certs crl newcerts

[root@localhost CA]# touch index.txt serial

[root@localhost CA]# echo "01" > serial

CA認證中心建立密鑰

[root@localhost CA]# openssl genrsa 1024 > private/cakey.pem

生成證書

如今來爲http服務應用ssl加密

 [root@localhost ~]# mkdir /etc/httpd/certs

[root@localhost ~]# cd /etc/httpd/certs

http建立私鑰

  [root@localhost certs]# openssl genrsa 1024 > httpd.key

  生成請求文件

請求證書

[root@localhost certs]# openssl ca -in httpd.csr -out httpd.pem

 安裝mod_ssl

[root@localhost certs]# cd /mnt/cdrom/Server/

[root@localhost Server]# rpm -ivh distcache- 1.4.5 -14.1.i386.rpm

[root@localhost Server]# rpm -ivh mod_ssl- 2.2.3 -31.el5.i386.rpm

[root@localhost pki]# cd /etc/httpd/conf.d/

[root@localhost conf.d]# vim ssl.conf    修改以下

SSLCertificateFile /etc/httpd/certs/httpd.pem

SSLCertificateKeyFile /etc/httpd/certs/httpd.key

SSLCACertificateFile /etc/pki/CA/cacert.pem

重啓服務器

[root@localhost conf.d]# service httpd restart

Stopping httpd:                                            [  OK  ]

Starting httpd:                                            [  OK  ]

Server1server2都作了以下配置以後,開始在director上開始作基於防火牆標記持久鏈接

 [root@localhost ~]# ipvsadm –C

[root@localhost ~]# iptables -F -t mangle

[root@localhost ~]# iptables -t mangle -A PREROUTING -d 192.168.2.11 -p tcp --dport 80 -j MARK --set-mark 10

[root@localhost ~]# iptables -t mangle -A PREROUTING -d 192.168.2.11 -p tcp --dport 443 -j MARK --set-mark 10

[root@localhost ~]# ipvsadm -A -f 10 -s rr -p 1800

[root@localhost ~]# ipvsadm -a -f 10 -r 192.168.2.20 -g

[root@localhost ~]# ipvsadm -a -f 10 -r 192.168.2.30 –g

 

測試:

 使用http鏈接

  使用https鏈接

 

 

測試成功

相關文章
相關標籤/搜索