mysql galera haproxy_安装配置Haproxy代理MySQL Galera集群
這篇文章,我講介紹如何為MariaDB Galera?集群添加負(fù)載均衡,大致步驟如下:確認(rèn)所有Galera節(jié)點(diǎn)作為一個單一集群運(yùn)行(所有節(jié)點(diǎn)都是主節(jié)點(diǎn)而且相互同步)
安裝Haproxy(你可以安裝到獨(dú)立的服務(wù)器或者應(yīng)用服務(wù)器)
配置集群監(jiān)控檢測腳本,用于檢測每個backend server服務(wù)器健康
配置Haproxy統(tǒng)計(jì)頁面
將應(yīng)用程序指向Haproxy
大致架構(gòu)圖如下:
配置集群檢測腳本**本節(jié)中所描述的步驟應(yīng)該是所有數(shù)據(jù)庫節(jié)點(diǎn)上執(zhí)行,除非另有指定。1、首先,我們需要配置后端健康檢查報告。 我們將使用現(xiàn)有的Percona的clustercheck。 拿到腳本,并把它放在/usr/local/bin目錄運(yùn)行以下命令:
$ git clone https://github.com/olafz/percona-clustercheck
$ cp percona-clustercheck/clustercheck /usr/local/bin
2、?clustercheck腳本執(zhí)行通過監(jiān)控MySQL的幾個變量/狀態(tài)?Galera節(jié)點(diǎn)上定期檢查。 它會產(chǎn)生一個相應(yīng)的HTTP返回代碼一個簡單的HTML輸出(無論是503 - 服務(wù)不可用或200 - OK)。 為了讓事情更容易為HAProxy的觸發(fā)腳本,并獲得后端的最新狀態(tài),我們必須讓它偵聽的端口。 我們可以使用xinetd打開腳本到一個服務(wù)進(jìn)程,并使其聽一個自定義的端口,在這種情況下,我將使用9200。創(chuàng)建一個名為/etc/xinet.d/mysqlchk的新文件,并添加以下幾行:
# default: on# description: mysqlchkservice mysqlchk
{ ?disable = no
flags = REUSE
socket_type = stream
port = 9200 ?wait = no
user = nobody
server = /usr/local/bin/clustercheck ?log_on_failure += USERID
only_from = 0.0.0.0/0
per_source = UNLIMITED
}
3、添加Mysqlchk服務(wù)到xinetd
echo 'mysqlchk ? ? ?9200/tcp ? ?# MySQL check' >>/etc/services
4、默認(rèn)情況下,該腳本將使用MySQL用戶名為“clustercheckuser”,密碼為“clustercheckpassword!”。 我們需要確保這個MySQL用戶與對應(yīng)的密碼存在的腳本將能夠執(zhí)行健康檢查之前。 運(yùn)行下面的DB節(jié)點(diǎn)之一(Galera應(yīng)該復(fù)制該語句到其他節(jié)點(diǎn))DDL語句:
mysql> GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';
mysql> FLUSH PRIVILEGES;
你可以改變clustercheck script的32,33行,這篇文章我們使用默認(rèn)用戶名和密碼。5、驗(yàn)證腳本返回一個正確的值
$ /usr/local/bin/clustercheck > /dev/null$ echo $?0
如果DB節(jié)點(diǎn)在已同步,你應(yīng)該得到0,否則1應(yīng)該是輸出。 后端健康檢查配置。安裝Haproxy1、最簡單的安裝方法就是使用(yum/apt)包管理器,然而,強(qiáng)烈建議使用上HAProxy的網(wǎng)站提供的最新版本。無論哪種方式,我下面都會介紹到。A)如果您選擇通過軟件包管理器安裝HAProxy的:
$ yum install haproxy # Redhat/CentOS$ sudo apt-get install haproxy # Debian/Ubuntu
B)通過Haproxy官網(wǎng)下載源碼
$ yum install php-curl gcc make # Redhat/CentOS$ apt-get install php5-curl gcc make # Debian/Ubuntu$ wget http://www.haproxy.org/download/1.5/src/$ tar xvzfz
$ cd
$ make TARGET=linux26
$ cp -f haproxy /usr/sbin/haproxy
從源代碼(選項(xiàng)B)安裝帶有沒有初始化腳本。所以你需要手動的通過命令行啟動。配置HAproxy現(xiàn)在,我們已經(jīng)安裝了HAProxy的。 我們需要將其配置為在端口3307監(jiān)聽MySQL服務(wù),并執(zhí)行后端健康檢查。
在/etc/haproxy/haproxy.cfg,確保以下行存在:
global
pidfile /var/run/haproxy.pid
daemon
user haproxy
group haproxy
stats socket /var/run/haproxy.socket user haproxy group haproxy mode 600 level admin
maxconn 8192
spread-checks 3
quiet
defaults
mode ? ?tcp
option ?dontlognull
option tcp-smart-accept
option tcp-smart-connect
retries 3
option redispatch
maxconn 8192
timeout check ? 3500ms ? ? ? ?timeout queue ? 3500ms ? ? ? ?timeout connect 3500ms ? ? ? ?timeout client ?10800s ? ? ? ?timeout server ?10800s
userlist STATSUSERS ? ? ? ?group admin users admin
user admin insecure-password admin
user stats insecure-password yourpassword
listen admin_page 0.0.0.0:9600
mode http
stats enable
stats refresh 60s
stats uri /
acl AuthOkay_ReadOnly http_auth(STATSUSERS)
acl AuthOkay_Admin http_auth_group(STATSUSERS) admin
stats http-request auth realm admin_page unless AuthOkay_ReadOnly
listen ?mysql_3307
bind *:3307
mode tcp ? ? ? ?timeout client ?10800s ? ? ? ?timeout server ?10800s
balance leastconn ? ? ? ?option httpchk ? ? ? ?option allbackups ? ? ? ?default-server port 9200 inter 2s downinter 5s rise 3 fall 2 slowstart 60s maxconn 64 maxqueue 128 weight 100
server db1 10.0.0.187:3306 check
server db2 10.0.0.188:3306 check
server db3 10.0.0.189:3306 check
現(xiàn)在開機(jī)啟用該服務(wù),讓其工作。RHEL/CentOS 6:
$ chkconfig haproxy on # RHEL6$ service haproxy start # RHEL6
Ubuntu 14.04 and lower, Debian 7 and lower:
$ update-rc.d haproxy defaults$ sudo service haproxy start
RHEL/CentOS 7, Debian 8, Ubuntu 15.04:
$ systemctl enable haproxy
$ systemctl start haproxy
驗(yàn)證Haproxy端口監(jiān)聽是否正常:
sudo netstat -tulpn | grep haproxy
tcp ? ? ? ?0 ? ? ?0 0.0.0.0:9600 ? ? ? ? ? ?0.0.0.0:* ? ? ? ? ? ? ? LISTEN ? ? ?370/haproxy
tcp ? ? ? ?0 ? ? ?0 0.0.0.0:3307 ? ? ? ? ? ?0.0.0.0:* ? ? ? ? ? ? ? LISTEN ? ? ?370/haproxy
3307是MySQL的負(fù)載平衡端口,而9600是HAProxy的統(tǒng)計(jì)頁面。 您可以登錄訪問http檢查狀態(tài):// haproxy_ip_address:9600 /,以用戶名“管理員”和密碼登錄“你的密碼”作為配置的內(nèi)部haproxy.cfg。 你應(yīng)該看到類似下面的內(nèi)容:
現(xiàn)在你可以把你的應(yīng)用程序或者M(jìn)ysql的客戶端執(zhí)行harproxy代理的3307端口,用于Mysql的負(fù)載均衡和故障自動轉(zhuǎn)移。
總結(jié)
以上是生活随笔為你收集整理的mysql galera haproxy_安装配置Haproxy代理MySQL Galera集群的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 代理ip工具类_Java基础之
- 下一篇: ctf mysql hash传递_分享个