在現在任何的雲端服務開發或部署時,都會面臨如何能處理大量使用者同時存取服務所產生大量請求的問題。然而大多數的處理方式免不了需要透過負載平衡服務,來將使用者請求分派至不同的實體或虛擬機器進行處理,因此負載平衡服務就扮演極為重要的角色。
本篇就以 HAProxy 為例,將使用者的請求以 Round Robin 的方式平均分派至不同機器進行處理,並結合 Data Plane API 提供一個 RESTful API 介面以提供動態修改 HAProxy 配置的功能。
軟體版本
Software Name | Version |
---|---|
HAProxy | 2.2.4 |
HAProxy Data Plane API | 2.1.0 |
環境
OS | Host Name | Private Network |
---|---|---|
CentOS 7 | haproxy | 192.168.5.2 |
CentOS 7 | httpd1 | 192.168.5.3 |
CentOS 7 | httpd2 | 192.168.5.4 |
安裝 HAProxy
更新 CentOS 上的 packags 與安裝相依套件
1 | $ yum update |
至 HAProxy Conmmunity Edition 下載 HAProxy 2.2.4(LTS) 並解壓縮
1 | $ wget http://www.haproxy.org/download/2.2/src/haproxy-2.2.4.tar.gz |
進入 haproxy-2.2.4/
目錄,並進行編譯
1 | $ cd haproxy-2.2.4 |
安裝需要
make
與gcc
兩個套件,若是使用CentOS
作業系統可透過yum install
指令進行安裝。
安裝 HAProxy 2.2.4
1 | $ make install |
進入 haproxy-2.2.4/contrib/systemd/
目錄編譯 haproxy.service
檔案,並將產生出來的 haproxy.service
移動至 /lib/systemd/system/
目錄底下
1 | $ make |
建立 HAProxy 配置檔放置目錄,並寫入基本配置
1 | $ mkdir -p /etc/haproxy |
建立 haproxy
use 與 group
1 | $ useradd -r haproxy |
啟動 HAProxy
服務
1 | $ systemctl start haproxy |
到這裡,基本的 HAProxy 已經安裝完成,接下來進行 HAProxy Data Plane API 安裝
安裝 HAProxy Data Plane API
下載 HAProxy Data Plane API
1 | $ wget https://github.com/haproxytech/dataplaneapi/releases/download/v2.1.0/dataplaneapi_2.1.0_Linux_x86_64.tar.gz |
解壓縮 dataplaneapi_2.1.0_Linux_x86_64.tar.gz
檔案並將 build/dataplaneapi
檔案複製至 /usr/local/bin
目錄
1 | $ tar -zxvf dataplaneapi_2.1.0_Linux_x86_64.tar.gz |
在 /etc/haproxy/haproxy.cfg
中加入 userlist api 來設定呼叫 HAPorxy Data Plane API 驗證的使用者名稱與密碼。以本例 james
為帳號, mypassword
為密碼。
1 | $ vim /etc/haproxy/haproxy.cfg |
修改完成後,重新啟動 haproxy
1 | $ systemctl restart haproxy |
最後啟動 HAProxy Data Plane API
1 | $ dataplaneapi --host 0.0.0.0 --port 5555 --haproxy-bin /usr/sbin/haproxy --config-file /etc/haproxy/haproxy.cfg --reload-cmd "systemctl reload haproxy" --reload-delay 5 --userlist api |
HAProxy 也很貼心的提供一個 API 文件,只要啟動 HAProxy Data Plane API 後透過 http://127.0.0.1:5555/v2/docs
即可看到如下文件內容
若針對本篇教學有任何疑問或有敘述錯誤的地方,歡迎在底下留言討論唷~