Openstack的HA解決方案【haproxy和keepalived】

CL.TANG發表於2016-10-18

1. 安裝haproxy,keepalived, httpd,3臺機器一致。

yum install haproxy keepalived httpd -y

2. 修改httpd的預設頁面. 在/var/www/error/noindex.html中修改,

<div class="content-middle">
                                <p>163:This page is

其實隨便一個地方新增上服務的httpd的IP即可,並且修改httpd埠為8080. 測試頁面: 20140818143109.jpg 3臺機器都一樣,頁面分別展示不同的IP地址。

3. 修改163的haproxy.

backend app
    balance     roundrobin
    server  app1 172.17.44.163:8080 check
    server  app2 172.17.44.164:8080 check
    server  app3 172.17.44.164:8080 check

將IP和埠修改.

4. 啟動163的haproxy。 訪問,172.17.44.163.5000。多次重新整理,可以看到前面類似的頁面IP地址變化會有164,165.但是圖片不會正常展示,因為我們沒有配置圖片的請求。

5.164.165都配置上haproxy,執行同163一樣的操作。

6. keepalived的作用介紹

 keepalived可以建立出一個虛擬IP(vip,這裡的V是virtual),可以heartbeat各個機器的服務

7.設定keepalived的虛擬IP

 在keepalived的配置路徑/etc/keepalived/下配置
! Configuration File for keepalived

global_defs {
   router_id NODE1
   notification_email {
        root@localhost
   }
   notification_email_from root@local host
   smtp_server localhost
   smtp_connect_timeout 30
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.17.44.170
    }
}

這裡我們設定的是163這臺機器作為Master,他的優先順序別是100,虛擬IP是172.17.44.170,將這個檔案複製到164,165,修改state 為BACKUP,優先順序為99或更低。

全部使用service keepalived start.

在/var/log/message檢視日誌。

在163檢視IP地址是否獲取到:

[root@ha1 keepalived]# ip addr list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:e6:aa:16 brd ff:ff:ff:ff:ff:ff
    inet 172.17.44.163/24 brd 172.17.44.255 scope global eth0
    inet 172.17.44.170/32 scope global eth0
    inet6 fe80::20c:29ff:fee6:aa16/64 scope link 
       valid_lft forever preferred_lft forever
[root@ha1 keepalived]#

可以看到eth0還有一個IP是170.本地開發環境並且能ping通,表示MASTER的虛擬IP獲取成功。 reboot163伺服器,立刻重新ping,172.17.44.170,還是能通,因為該170IP已經被172.17.44.164接管。

8. 結合前面的haproxy,訪問172.17.44.170:5000,可以看到現在這個服務已經有了高可用性(關閉任何一臺機器,服務正常),高併發(多臺伺服器處理相同請求)的雛形了

相關文章