Keepalived+Haproxy搭建高可用Web羣集

經過博文:Haproxy服務調優及配置內容詳解
已經能夠了解Haproxy服務的做用;
經過博文:利用Keepalived實現雙機熱備詳解
已經能夠了解到Keepalived服務的做用;html

Haproxy服務是搭建羣集調度的一種工具,性能好。可是現實環境中確定須要和Keepalived服務一塊兒使用,避免形成單點故障。linux

1、案例環境:

Keepalived+Haproxy搭建高可用Web羣集

這篇博文其實跟博文:搭建LVS(DR模式)+Keepalived高可用羣集,可跟作!!!
差很少,只是把負責搭建羣集環境的LVS換成了Haproxy。其實也沒什麼好寫的,本意是不想寫的。可是其中有幾個知識點,必需要了解,不然這個環境不可能實現。redis

2、案例實施

案例實施大體步驟:
1.爲了簡單起見,每一個服務器(無論是Web節點和是調度服務器),實際環境中,應該開啓防火牆相關流量;
2.主調度服務器上安裝Keepalived和Haproxy服務;
3.配置Web節點服務器,安裝Web服務(APache、Nginx均可以)建立虛擬IP地址,全部配置都同樣可是建議主頁不要同樣,這樣能看出效果,實際環境中網站主頁內容必須同樣,能夠搭建NFS服務器等來同步網頁內容;
4.客戶機測試訪問主Haproxy服務器地址(可否訪問到Web頁面);
5.從調度服務器安裝Keepalived和Haproxy服務;
6.客戶機訪問漂移IP地址(可否訪問成功);vim

關於服務具體較少及軟件包獲取方式,能夠參考博文:利用Keepalived實現雙機熱備詳解
Haproxy服務調優及配置內容詳解服務器

具體步驟:app

(1)配置主調度器服務器

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
//關閉防火牆與SELinux
[root@localhost ~]# yum -y install keepalived pcre-devel bzip2-devel
//安裝相應的服務及工具
[root@localhost ~]# tar zxf haproxy-1.5.19.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/haproxy-1.5.19/
[root@localhost haproxy-1.5.19]# make TARGET=linux26
[root@localhost haproxy-1.5.19]# make install
//安裝Haproxy服務
[root@localhost ~]# mkdir /etc/haproxy
[root@localhost ~]# cp /usr/src/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
//編寫Haproxy服務的配置文件
global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        #log loghost    local0 info
        maxconn 4096
        #chroot /usr/share/haproxy
        uid 99
        gid 99
        daemon
        #debug
        #quiet

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        #redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen  appli1-rewrite 0.0.0.0:80
        option httpchk GET /index.html
        balance roundrobin
        server  app1_1 192.168.1.3:80 check inter 2000 rise 2 fall 5
        server  app1_2 192.168.1.4:80 check inter 2000 rise 2 fall 5
[root@localhost ~]# cp /usr/src/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
[root@localhost ~]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy 
[root@localhost ~]# chmod +x /etc/init.d/haproxy 
[root@localhost ~]# chkconfig --add /etc/init.d/haproxy 
[root@localhost ~]# /etc/init.d/haproxy start
Starting haproxy (via systemctl):                          [  肯定  ]
//編寫服務啓動腳本並啓動服務             
[root@localhost ~]# vim /etc/keepalived/keepalived.conf 
//編寫Keepalived服務的配置文件
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL1
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.254
    }
}
//配置文件只留這些,剩下的建議註釋或刪除
[root@localhost ~]# systemctl start keepalived
//啓動Keepalived服務

(2)配置Web節點服務器

兩臺Web節點服務器,配置幾乎同樣,只有網頁內容不同,這裏就拿一個爲例:ide

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# echo aaa > /var/www/html/index.html
[root@localhost ~]# systemctl start httpd
//安裝並啓動http服務

兩臺Web節點服務器都已配置完畢能夠經過主調度器的IP地址進行訪問!工具

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.1.254
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback:0
[root@localhost network-scripts]# ifup lo
[root@localhost network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.1.254  netmask 255.255.255.255
        loop  txqueuelen 1  (Local Loopback)
//配置虛擬IP地址
[root@localhost ~]# route add -host 192.168.1.254 dev lo:0
//添加本機路由
[root@localhost ~]# vim /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore  =  1
net.ipv4.conf.all.arp_announce  =  2
net.ipv4.conf.default.arp_ignore  =  1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore  =  1
net.ipv4.conf.lo.arp_announce  = 2
[root@localhost ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
//修改內核參數

兩臺Web節點配置到這裏,就可使用漂移IP地址進行訪問!雖然是使用漂移IP進行訪問,可是當主調度器宕機,客戶端也就不能訪問Web節點服務器了。因此須要搭建從調度器(越多越好)!oop

(3)配置從調度器服務器

從調度服務器配置幾乎和主調度器配置同樣,可是Keepalived服務中的路由器ID、優先級、熱備狀態不同,剩下的就是如出一轍!因此這裏就不介紹了!相信你們看完前幾篇博文,都不用看博文就能夠作出來的。性能

主、從調度器配置完畢後,能夠測試主調度器宕機,還能不能訪問!(本人測試沒問題)你們自行測試!

使用Haproxy服務搭建的羣集環境,能夠很清除的看出羣集輪詢的狀態!

這樣就能夠很好的避免單點故障帶來的損失!

實際環境中,確定要搭建NFS共享存儲來同步網站主頁內容,NFS共享存儲很基礎的服務,這裏就不介紹了!

建議搭建NFS共享存儲,來保證Web節點服務內容一致(實際環境中確定是這樣作的)!

———————— 本文至此結束,感謝閱讀 ————————

相關文章
相關標籤/搜索