構建高可用LVS + keepalived+httpd和雙主模型的keepalived方案

↑構建高可用LVS + keepalived+httpd和雙主模型的keepalived方案↑

標籤:web服務器 拓撲圖 模型 檢測 軟件

原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://gyulong.blog.51cto.com/6844383/1302368

keepalived簡介

keepalived是一個類似於layer3, 4 & 5交換機制的軟件,也就是我們平時說的第3層、第4層和第5層交換。Keepalived的作用是檢測web服務器的狀態,如果有一臺web服務器死機,或工作出現故障,Keepalived將檢測到,並將有故障的web服務器從系統中剔除,當web服務器工作正常後Keepalived自動將web服務器加入到服務器羣中,通過ping來監測對方的狀態。


拓撲圖:

223808630.gif

-----------------------------------------------------------------------------------------

實驗環境:

centos-6.4

所需的安裝包:

主的和備的Director上都安裝上keepalived

後端的兩個realserver上都安裝上htppd服務

-----------------------------------------------------------------------------------------

1.先同步個節點上的時間

[root@yulong]# ntpdate  172.16.0.1


2.在主的和從的上面安裝keepalived

[root@yulong ~]# yum install keepalived -y


3.編輯keepalived配置文件

[root@yulong keepalived]# vim  keepalived.conf

修改一下參數爲自己所用的

global_defs {

   notification_email {

   root@localhost        收件人                                                          

   }

                                                                                                                                                                                    

   notification_email_from  keep@localhost  發件人

   smtp_server 127.0.0.1       郵件服務器

   smtp_connect_timeout 10   鏈接超時時間

   router_id LVS_DEVEL

添加如下字段設置可以手動切換故障轉移:

vrrp_script chk_maintainace {

                                                                                                                                                                                    

  script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"

                                                                                                                                                                                    

  interval 1

  weight   -2

                                                                                                                                                                                    

 }

這段腳本的意思就是如果在這個目錄下存在down的這個一個文件就把vip給轉移到BAKPUP節點.這個文件可以手動創建來實現調試.

以下用文字註釋的都是需要修改的地方

vrrp_instance VI_1 {

    state MASTER                   設置主節點

    interface eth0               網卡類型

    virtual_router_id 51  虛擬路由ID

    priority 100                    設置權重,權重必須大於BACKUP的權重

    advert_int 1

    authentication {  

        auth_type PASS       加密方法

        auth_pass 1111       密碼

    }

    virtual_ipaddress {

                                                                                                                                                                                    

      172.16.8.100     設置訪問的虛擬IP

    }

  track_script {

                                                                                                                                                                                    

  chk_maintainace     這個是定義剛纔添加的那段代碼生效

    }

}

4.配置完畢以上內容後複製到從節點上一份

[root@yulong keepalived]# scp  keepalived.conf   yu:/etc/keepalived/


5.然後在從節點上需要修改下如下兩項

[root@www ~]# vim  /etc/keepalived/keepalived.conf

state BACKUP            設置爲備用節點

priority 99              權重設置爲比主節點的小

6.然後主備都啓動keepalived服務

[root@yulong keepalived]# service keepalived restart

Stopping keepalived:                                       [  OK  ]

Starting keepalived:                                       [  OK  ]


7.然後查看master上的狀態

[root@yulong keepalived]# ip addr show

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:0e:d7:4d brd ff:ff:ff:ff:ff:ff

    inet 172.16.8.17/16 brd 172.16.255.255 scope global eth0

    inet 172.16.8.100/32 scope global eth0        剛纔配置的虛擬ip已經生效

    inet6 fe80::20c:29ff:fe0e:d74d/64 scope link

       valid_lft forever preferred_lft forever


8.然後我們把master上的節點給停掉看看能不能轉移

root@yulong keepalived]# touch  down

[root@yulong keepalived]# ip addr show

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:0e:d7:4d brd ff:ff:ff:ff:ff:ff

    inet 172.16.8.17/16 brd 172.16.255.255 scope global eth0

    inet6 fe80::20c:29ff:fe0e:d74d/64 scope link

       valid_lft forever preferred_lft forever

在keepalived目錄下Touch  down 文件是我們寫的那條腳本,很強大喲

在次ip addr  show查看vip已經沒有了

9.在備節點上查看vip有沒有轉移過來

[root@www ~]# ip  addr show

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:6a:51:21 brd ff:ff:ff:ff:ff:ff

    inet 172.16.8.18/16 brd 172.16.255.255 scope global eth0

    inet 172.16.8.100/32 scope global eth0         OK,已經轉移過來了,說明是正常的.

    inet6 fe80::20c:29ff:fe6a:5121/64 scope link

       valid_lft forever preferred_lft forever

10.下面在主節點上配置keepalived的realserver能調度上游的服務器

[root@yulong keepalived]# vim  keepalived.conf

virtual_server 172.16.8.100 80 {      虛擬IP,就是一會要訪問的IP

    delay_loop 6

    lb_algo rr        調度算法             

    lb_kind DR         lvs的模式

    nat_mask 255.255.0.0

    persistence_timeout 50

    protocol TCP    使用的協議

                                                                                                                                               

    real_server 172.16.8.10 80 {    realserver的ip地址 這個別寫錯了

        weight 1      權重                      

                                                                                                                                               

   TCP_CHECK {       realserver的狀態監測

                                                                                                                                               

   connect_timeout 3     響應超時時間,默認3秒

   nb_get_retry 3            重試次數

   delay_before_retry 3  重試間隔時間

        }

    }

                                                                                                                                               

  real_server  172.16.8.11 80 {     第二個realserver的定義 和上面的一樣

                                                                                                                                               

   TCP_CHECK {

                                                                                                                                               

   connect_timeout 3

   nb_get_retry 3

   delay_before_retry 3

      }

                                                                                                                                               

    }

}

11.配置完畢以後複製到備服務器上一份

[root@yulong keepalived]# scp   keepalived.conf   yu:/etc/keepalived/

然後在備的上面編輯keepalived.conf修改如下兩項

state BACKUP            設置爲備用節點

priority 99              權重設置爲比主節點的小

12.上面的配置好以後我們來配置realserver服務器,兩個realserver上都配置如下命令

[root@node1 ~]# ifconfig lo:0 172.16.8.100 broadcast 172.16.8.100   netmask 255.255.255.255  up

由於我們使用的DR模型配置DR模型的vip,在lo上配置就行

[root@node1 ~]# echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

[root@node1 ~]# echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

[root@node1 ~]# echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

[root@node1 ~]# echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

關閉arp廣播

[root@node1 ~]# echo  "<h1> you are word</h1>" > /var/www/html/index.html

設置訪問的網頁主頁內容


13.配置完成後兩個realserver服務器上都啓動web服務器進行測試

[root@node1 ~]# service  httpd   restart

Stopping httpd:                                            [  OK  ]

Starting httpd:                                            [  OK  ]

多點擊幾下看看是不是均衡

131724243.png

131725953.png

訪問成功,看來是均衡的


14.下面我們來通過ipvsadm查看下訪問的狀態

[root@yulong keepalived]# yum install  ipvsadm

[root@yulong keepalived]# ipvsadm -L  -n --stats

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes

  -> RemoteAddress:Port

TCP  172.16.8.100:80                     3        3        0      156        0

  -> 172.16.8.10:80                      2        2        0      104        0

  -> 172.16.8.11:80                      1        1        0       52        0

Ok 看來是通過keepalived調用的

下面來配置keepalived雙主模型

1.在主的上面添加如下內容

[root@yulong keepalived]# vim   keepalived.conf

vrrp_instance VI_2 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 99

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 2111

    }

    virtual_ipaddress {

      172.16.8.200

    }

  track_script {

  chk_maintainace

    }

}

2.在備的上面添加如下內容

vrrp_instance VI_2 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 2111

    }

    virtual_ipaddress {

      172.16.8.200

    }

  track_script {

  chk_maintainace

    }

}

3.重啓主備的keepalived的服務

[root@yulong keepalived]# service keepalived  restart

4.查看備的上面虛擬主ip有木有生效

[root@www ~]# ip addr show

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:6a:51:21 brd ff:ff:ff:ff:ff:ff

    inet 172.16.8.18/16 brd 172.16.255.255 scope global eth0

    inet 172.16.8.200/32 scope global eth0      已經生效

    inet6 fe80::20c:29ff:fe6a:5121/64 scope link

       valid_lft forever preferred_lft forever

5.下面我們把備的master給down掉看看是否會轉移

root@www ~]# cd /etc/keepalived/

[root@www keepalived]# touch  down

[root@www keepalived]# ip addr show

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:6a:51:21 brd ff:ff:ff:ff:ff:ff

    inet 172.16.8.18/16 brd 172.16.255.255 scope global eth0

    inet6 fe80::20c:29ff:fe6a:5121/64 scope link

       valid_lft forever preferred_lft forever

172.16.8.200 的虛擬ip已經看不到了


6.下面在主的上面看看是否轉移過來

[root@yulong keepalived]# ip addr show

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:0e:d7:4d brd ff:ff:ff:ff:ff:ff

    inet 172.16.8.17/16 brd 172.16.255.255 scope global eth0

    inet 172.16.8.100/32 scope global eth0

    inet 172.16.8.200/32 scope global eth0

    inet6 fe80::20c:29ff:fe0e:d74d/64 scope link

       valid_lft forever preferred_lft forever

兩個虛擬ip都在,證明是正常的,此次雙主模型搞定!


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