mysql galera haproxy_安装配置Haproxy代理MySQL Galera集群
這篇文章,我講介紹如何為MariaDB Galera?集群添加負載均衡,大致步驟如下:確認所有Galera節點作為一個單一集群運行(所有節點都是主節點而且相互同步)
安裝Haproxy(你可以安裝到獨立的服務器或者應用服務器)
配置集群監控檢測腳本,用于檢測每個backend server服務器健康
配置Haproxy統計頁面
將應用程序指向Haproxy
大致架構圖如下:
配置集群檢測腳本**本節中所描述的步驟應該是所有數據庫節點上執行,除非另有指定。1、首先,我們需要配置后端健康檢查報告。 我們將使用現有的Percona的clustercheck。 拿到腳本,并把它放在/usr/local/bin目錄運行以下命令:
$ git clone https://github.com/olafz/percona-clustercheck
$ cp percona-clustercheck/clustercheck /usr/local/bin
2、?clustercheck腳本執行通過監控MySQL的幾個變量/狀態?Galera節點上定期檢查。 它會產生一個相應的HTTP返回代碼一個簡單的HTML輸出(無論是503 - 服務不可用或200 - OK)。 為了讓事情更容易為HAProxy的觸發腳本,并獲得后端的最新狀態,我們必須讓它偵聽的端口。 我們可以使用xinetd打開腳本到一個服務進程,并使其聽一個自定義的端口,在這種情況下,我將使用9200。創建一個名為/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服務到xinetd
echo 'mysqlchk ? ? ?9200/tcp ? ?# MySQL check' >>/etc/services
4、默認情況下,該腳本將使用MySQL用戶名為“clustercheckuser”,密碼為“clustercheckpassword!”。 我們需要確保這個MySQL用戶與對應的密碼存在的腳本將能夠執行健康檢查之前。 運行下面的DB節點之一(Galera應該復制該語句到其他節點)DDL語句:
mysql> GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';
mysql> FLUSH PRIVILEGES;
你可以改變clustercheck script的32,33行,這篇文章我們使用默認用戶名和密碼。5、驗證腳本返回一個正確的值
$ /usr/local/bin/clustercheck > /dev/null$ echo $?0
如果DB節點在已同步,你應該得到0,否則1應該是輸出。 后端健康檢查配置。安裝Haproxy1、最簡單的安裝方法就是使用(yum/apt)包管理器,然而,強烈建議使用上HAProxy的網站提供的最新版本。無論哪種方式,我下面都會介紹到。A)如果您選擇通過軟件包管理器安裝HAProxy的:
$ yum install haproxy # Redhat/CentOS$ sudo apt-get install haproxy # Debian/Ubuntu
B)通過Haproxy官網下載源碼
$ 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
從源代碼(選項B)安裝帶有沒有初始化腳本。所以你需要手動的通過命令行啟動。配置HAproxy現在,我們已經安裝了HAProxy的。 我們需要將其配置為在端口3307監聽MySQL服務,并執行后端健康檢查。
在/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
現在開機啟用該服務,讓其工作。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
驗證Haproxy端口監聽是否正常:
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的負載平衡端口,而9600是HAProxy的統計頁面。 您可以登錄訪問http檢查狀態:// haproxy_ip_address:9600 /,以用戶名“管理員”和密碼登錄“你的密碼”作為配置的內部haproxy.cfg。 你應該看到類似下面的內容:
現在你可以把你的應用程序或者Mysql的客戶端執行harproxy代理的3307端口,用于Mysql的負載均衡和故障自動轉移。
總結
以上是生活随笔為你收集整理的mysql galera haproxy_安装配置Haproxy代理MySQL Galera集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 代理ip工具类_Java基础之
- 下一篇: java opencv orb_open