作為一名開發(fā)人員,隨著經(jīng)驗的增加和技術的沉淀,需要提高自己架構方面的知識,同時對于一個企業(yè)來說,搭建一套高可用、高性能的技術架構,對于公司的業(yè)務開展和提高服務的性能也是大有裨益的。本文重點從軟件安裝和搭建tidb負載均衡數(shù)據(jù)庫服務介紹下HAProxy的使用
1.概述
HAProxy是由 C 語言編寫的自由開放源碼的軟件,提供高可用性、負載均衡和代理服務,它是免費、快速并且可靠的一種解決方案。HAProxy 特別適用于那些負載特大的 web 站點,完全可以支持數(shù)以萬計的并發(fā)連接,同時可以保護你的 web 服務器不被暴露到網(wǎng)絡上。
其最常見的用途是將客戶端請求分發(fā)到多個服務器上,從而實現(xiàn)高并發(fā)和高可用性。
2.負載均衡常用軟件及對比
常用的負載均衡軟件有LVS、Nginx和HAProxy,區(qū)別如下
- LVS基于Linux操作系統(tǒng)內核實現(xiàn)軟負載均衡,而HAProxy和Nginx是基于第三方應用實現(xiàn)的軟負載均衡;
- LVS是可實現(xiàn)4層的IP負載均衡技術,無法實現(xiàn)基于目錄、URL的轉發(fā)。而HAProxy 和Nginx都可以實現(xiàn)4層和7層技術,HAProxy可提供TCP和HTTP應用的負載均衡綜合解決方案;
- LVS因為工作在ISO模型的第四層,其狀態(tài)監(jiān)測功能單一,而HAProxy在狀態(tài)監(jiān)測方面功能更豐富、強大,可支持端口、URL、腳本等多種狀態(tài)檢測方。
- HAProxy功能強大,單純從效率上來講HAProxy會比Nginx有更出色的負載均衡速度,在并發(fā)處理上也是優(yōu)于Nginx的。但整體性能低于4層模式的LVS負載均衡;
- Nginx主要用于web服務器或緩存服務器。Nginx的upstream模塊雖然也支持群集功能,但是對群集節(jié)點健康檢查功能不強,性能沒有Haproxy好。對網(wǎng)絡帶寬要求不高,安裝配置簡單,不支持session,需要ip_hash和cookie解決保持會話
3.軟件安裝
- 3.1 硬件要求
- 3.2 安裝依賴包
yum -y install epel-release gcc systemd-devel
- 3.3 下載軟件源碼包
wget https://www.haproxy.org/download/2.6/src/haproxy-2.6.2.tar.gz
或者提前下載好安裝包,然后上傳服務器指定位置也可以,以下文件是2.8版本的軟件包
[HaProxy2.8](鏈接:pan.baidu.com/s/11WAYKPea… 提取碼:yqsy)
3.4 解壓
tar -zxvf haproxy-2.6.2.tar.gz
3.5 從源碼編譯 HAProxy 應用
cd haproxy-2.6.2
make clean
make -j 8 TARGET=linux-glibc USE_THREAD=1
make PREFIX=${/app/haproxy} SBINDIR=${/app/haproxy/bin} install # 將 `${/app/haproxy}` 和 `${/app/haproxy/bin}` 替換為自定義的實際路徑。比如/usr/local/haproxy
3.6 重新配置profile文件
echo 'export PATH=/app/haproxy/bin:$PATH' >> /etc/profile
. /etc/profile
3.7 檢查是否安裝成功
which haproxy
至此安裝步驟已完成。
4.使用haproxy搭建tidb負載服務
- 4.1 編寫haproxy配置文件,比如haproxy.conf,內容如下
global # 全局配置。
log 127.0.0.1 local2 # 定義全局的 syslog 服務器,最多可以定義兩個。
chroot /var/lib/haproxy # 更改當前目錄并為啟動進程設置超級用戶權限,從而提高安全性。
pidfile /var/run/haproxy.pid # 將 HAProxy 進程的 PID 寫入 pidfile。
maxconn 4096 # 單個 HAProxy 進程可接受的最大并發(fā)連接數(shù),等價于命令行參數(shù) "-n"。
nbthread 48 # 最大線程數(shù)。線程數(shù)的上限與 CPU 數(shù)量相同。
user haproxy # 同 UID 參數(shù)。
group haproxy # 同 GID 參數(shù),建議使用專用用戶組。
daemon # 讓 HAProxy 以守護進程的方式工作于后臺,等同于命令行參數(shù)“-D”的功能。當然,也可以在命令行中用“-db”參數(shù)將其禁用。
stats socket /var/lib/haproxy/stats # 統(tǒng)計信息保存位置。
defaults # 默認配置。
log global # 日志繼承全局配置段的設置。
retries 2 # 向上游服務器嘗試連接的最大次數(shù),超過此值便認為后端服務器不可用。
timeout connect 2s # HAProxy 與后端服務器連接超時時間。如果在同一個局域網(wǎng)內,可設置成較短的時間。
timeout client 30000s # 客戶端與 HAProxy 連接后,數(shù)據(jù)傳輸完畢,即非活動連接的超時時間。
timeout server 30000s # 服務器端非活動連接的超時時間。
listen admin_stats # frontend 和 backend 的組合體,此監(jiān)控組的名稱可按需進行自定義。
bind 0.0.0.0:8080 # 監(jiān)聽端口。
mode http # 監(jiān)控運行的模式,此處為 `http` 模式。
option httplog # 開始啟用記錄 HTTP 請求的日志功能。
maxconn 10 # 最大并發(fā)連接數(shù)。
stats refresh 30s # 每隔 30 秒自動刷新監(jiān)控頁面。
stats uri /haproxy # 監(jiān)控頁面的 URL。
stats realm HAProxy # 監(jiān)控頁面的提示信息。
stats auth admin:pingcap123 # 監(jiān)控頁面的用戶和密碼,可設置多個用戶名。
stats hide-version # 隱藏監(jiān)控頁面上的 HAProxy 版本信息。
stats admin if TRUE # 手工啟用或禁用后端服務器(HAProxy 1.4.9 及之后版本開始支持)。
listen tidb-cluster # 配置 database 負載均衡。
bind 0.0.0.0:3390 # 浮動 IP 和 監(jiān)聽端口。
mode tcp # HAProxy 要使用第 4 層的傳輸層。
balance leastconn # 連接數(shù)最少的服務器優(yōu)先接收連接。`leastconn` 建議用于長會話服務,例如 LDAP、SQL、TSE 等,而不是短會話協(xié)議,如 HTTP。該算法是動態(tài)的,對于啟動慢的服務器,服務器權重會在運行中作調整。
server tidb-1 xxxxx:4000 check inter 2000 rise 2 fall 3 # 檢測 4000 端口,檢測頻率為每 2000 毫秒一次。如果 2 次檢測為成功,則認為服務器可用;如果 3 次檢測為失敗,則認為服務器不可用。
server tidb-2 xxxxx:4000 check inter 2000 rise 2 fall 3 # xxxx為服務器ip
- 4.2 啟動服務
進入到配置文件目錄,執(zhí)行命令
haproxy -f haproxy.conf
如果執(zhí)行報錯,可能是沒有創(chuàng)建配置文件中haproxy的用戶和組信息,以及/var/lib/haproxy/stats文件,
useradd haproxy
然后創(chuàng)建stats文件
touch /var/lib/haproxy/stats
重新執(zhí)行haproxy -f haproxy.conf命令即可
- 4.3 訪問服務
http://ip:8080/haproxy
對應的uri和配置文件中保持一致,然后輸入用戶密碼即可
同時可以使用數(shù)據(jù)庫客戶端(比如navicat)進行連接,查看能否連接上,ip為服務器ip,端口為3390
- 4.4 驗證負載均衡策略
在haproxy服務器上執(zhí)行如下命令(前提是安裝mysql客戶端:命令為 yum -y install mysql,安裝成功使用mysql -V命令查看是否成功),就可以輸出查詢的是哪個節(jié)點實例信息,10.0.0.1換成服務器實際的ip地址
mysql -uroot -h10.0.0.1 -P 3390 -p -e "select instance from INFORMATION_SCHEMA.CLUSTER_PROCESSLIST where id=(select connection_id());"
- 4.5 停止服務
killall -9 haproxy
文章來源:http://www.zghlxwxcb.cn/news/detail-641380.html
或者使用ps -ef | grep haproxy命令,然后使用kill -9 pid命令文章來源地址http://www.zghlxwxcb.cn/news/detail-641380.html
到了這里,關于負載均衡–HAProxy安裝及搭建tidb數(shù)據(jù)庫負載服務的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!