keepalived+haproxy搭建web群集

  • 2019 年 10 月 6 日
  • 筆記

haproxy配置文件詳解參考:haproxy

環境如下:

一、準備:

1、下載haproxy 軟體包,haproxy   提取碼: 9it6 

2、web 網站可以使用Apache、Nginx、搭建都可以,這裡為了方便我就直接使用系統盤帶的httpd服務了。

web網站的搭建可參考:基於 Linux 安裝 web 服務及基本配置基於 Centos 7 搭建Nginx

3、配置防火牆放行流量

4、我這裡使用的全部是centos 7系統,注意,該環境不是生產環境,若是在生產環境中,肯定還有後端存儲來存放網頁文件,web伺服器讀取存儲伺服器上的網頁返回給客戶端。這樣才可保證網頁內容的一致性。

二、開始搭建:

1、配置主伺服器:

[root@haproxy1 /]# yum -y install pcre-devel bzip2-devel keepalived          # 安裝相關的依賴包和軟體包  [root@haproxy1 media]# tar zxf haproxy-1.5.19.tar.gz -C /usr/src/  [root@haproxy1 media]# cd /usr/src/haproxy-1.5.19/  [root@haproxy1 haproxy-1.5.19]# make TARHET=linux26  &&  make  install         # 編譯安裝,TARGET表示64位作業系統  [root@haproxy1 haproxy-1.5.19]# mkdir /etc/haproxy                    # 創建用來存放主配文件的目錄  [root@haproxy1 haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/             # 將編譯包中的主配文件複製到配置文件目錄,注意啊:這個配置文件是在編譯包中,注意看路徑  [root@haproxy1 /]# vim /etc/haproxy/haproxy.cfg   # this config needs haproxy-1.1.28 or haproxy-1.2.1  global          log /dev/log    local0 info          log /dev/log    local0 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  webcluster  0.0.0.0:80                             # 將埠號修改為80,webcluster為群集名稱,可修改          option  httpchk GET  /index.html          balance roundrobin                            # 表示採用輪詢演算法          server  web1 192.168.1.20:80 check inter 2000 fall 3                  # 兩個web節點          server  web2 192.168.1.30:80 check inter 2000 fall 3  [root@haproxy1 /]# cp /usr/src/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy             # 複製服務控制腳本  [root@haproxy1 /]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy                  # 創建鏈接使命令使用更方便  [root@haproxy1 /]# chmod +x /etc/init.d/haproxy                      # 添加執行許可權  [root@haproxy1 /]# chkconfig --add /etc/init.d/haproxy                # 添加為系統服務  [root@haproxy1 /]# /etc/init.d/haproxy start                 # 啟動  Starting haproxy (via systemctl):                          [  OK  ]  [root@haproxy1 /]# vim /etc/rsyslog.d/haproxy.conf              # 配置日誌文件,寫入如下內容  if ($programname == 'haproxy' and $syslogseverity-text == 'info') then -/var/log/haproxy/haproxy-info.log  & ~   if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log  & ~   [root@haproxy1 /]# systemctl restart rsyslog.service                 # 重啟日誌服務

配置 keepalived :

[root@haproxy1 /]# vim /etc/keepalived/keepalived.conf   ! Configuration File for keepalived  global_defs {     notification_email {       [email protected]       [email protected]       [email protected]     }     notification_email_from [email protected]     smtp_server 192.168.200.1     smtp_connect_timeout 30     router_id LVS1          # 主從調度器名稱區分開  }  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.100          # 填寫漂移地址      }  }  [root@haproxy1 /]# systemctl restart keepalived             # 重啟服務使配置生效

2、配置從伺服器:

[root@haproxy2 /]#  yum -y install pcre-devel bzip2-devel  keepalived  [root@haproxy2 media]# tar zxf haproxy-1.5.19.tar.gz -C /usr/src/  [root@haproxy2 media]# cd /usr/src/haproxy-1.5.19/  [root@haproxy2 haproxy-1.5.19]# make TARGET=linux26 && make install  [root@haproxy2 haproxy-1.5.19]# mkdir /etc/haproxy  [root@haproxy2 haproxy-1.5.19]# scp [email protected]:/etc/haproxy/haproxy.cfg /etc/haproxy/          # 圖個方便直接複製  [email protected]'s password:   haproxy.cfg                                          100%  570     0.6KB/s   00:00      [root@haproxy2 /]# cp /usr/src/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy           # 複製服務控制腳本  [root@haproxy2 /]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy  [root@haproxy2 /]# chmod +x /etc/init.d/haproxy   [root@haproxy2 /]# chkconfig --add /etc/init.d/haproxy   [root@haproxy2 /]# /etc/init.d/haproxy start   Starting haproxy (via systemctl):                          [  OK  ]  [root@haproxy2 /]# scp [email protected]:/etc/rsyslog.d/haproxy.conf /etc/rsyslog.d/  [email protected]'s password:   haproxy.conf                                         100%  226     0.2KB/s   00:00     [root@haproxy2 /]# systemctl restart rsyslog.service                 # 重啟服務使配置生效  [root@haproxy2 haproxy-1.5.19]# scp [email protected]:/etc/keepalived/keepalived.conf /etc/keepalived/  [email protected]'s password:   keepalived.conf                                      100% 3511     3.4KB/s   00:00      [root@haproxy2 /]# vim /etc/keepalived/keepalived.conf            # 修改主配置文件,修改如下幾個部分  ....................... 省略部分     router_id LVS2               # 主從調度器區分ID  }  vrrp_instance VI_1 {      state BACKUP                       # 狀態修改為 BACKUP      interface ens33                       virtual_router_id 51      priority 90                           # 優先順序調低      advert_int 1      authentication {          auth_type PASS          auth_pass 1111      }      virtual_ipaddress {          192.168.1.100                # 漂移地址      }  }  [root@haproxy2 /]# systemctl restart keepalived

兩個web節點配置(兩個配置相同):

[root@web2 /]# yum -y install httpd

[root@web2 /]# echo server2.com > /var/www/html/index.html          # 創建測試網頁

[root@web2 /]# systemctl start httpd 

[root@web2 /]# systemctl enable httpd

當然,在實際生產環境中網頁是一樣的,這裡我為了驗證出效果,所以做了兩個不同的測試文件。