使用Mycat叢集部署及Haproxy負載均衡
目的
外界將讀寫請求發給Haproxy,Haproxy將請求分發給mycat可用節點,mycat伺服器再根據讀或寫向mysql伺服器進行資料操作。
前提
在之前mycat代理mysql讀寫分離的基礎上進行配置
haproxy 119.23.237.241
mycat_01 118.25.178.145
mycat_02 106.12.203.18
步驟
- 每個mycat節點配置xinetd
- 安裝haproxy
- 配置rsyslog
- 測試連線
操作
配置xinetd
安裝
yum install xinetd
檢查/etc/xinetd.conf的末尾是否有 includedir /etc/xinetd.d ,沒有就加上
檢查 /etc/xinetd.d 目錄是否存在,不存在則建立
新增服務:檢測mycat伺服器狀態
vim /etc/xinetd.d/mycat_status service mycat_status { flags = REUSE socket_type = stream port = 48700 wait = no user = root server = /usr/local/bin/mycat_status log_on_failure += USERID disable = no }
新增服務指令碼
vim /usr/local/bin/mycat_status #!/bin/bash #/usr/local/bin/mycat_status.sh # This script checks if a Mycat server is healthy running on localhost. # It will return: # "HTTP/1.x 200 OK\r" (if Mycat is running smoothly) # "HTTP/1.x 503 Internal Server Error\r" (else) mycat=`/usr/local/mycat/bin/mycat status | grep 'not running' | wc -l` if [ "$mycat" = "0" ]; then /bin/echo -e "HTTP/1.1 200 OK\r\n" else /bin/echo -e "HTTP/1.1 503 Service Unavailable\r\n" fi
給服務和指令碼新增許可權
chmod 755 /etc/xinetd.d/mycat_status
chmod 755 /usr/local/bin/mycat_status
service新增監聽埠
vim /etc/service
mycat_status 48700/tcp #mycat_status
啟動xinetd
service xinetd restart
檢視是否配置成功
netstat -antup|grep 48700
開啟伺服器48700埠
測試指令碼
/usr/local/bin/mycat_status
mycat服務未開啟
開啟mycat服務後
xinetd mycat檢測服務指令碼配置成功
安裝haproxy
解壓壓縮包至/usr/local
新增依賴
yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
編譯
make TARGET=linux2628 ARCH=x86_64 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy
## TARGET是指定核心版本,高於2.6.28的建議設定為linux2628,Linux作業系統核心版本檢視命令# uname -r,
ARCH指定系統架構,openssl pcre zlib 這三個包需要安裝不然不支援
建立目錄
/usr/local/haproxy
執行安裝
cd /usr/local/haproxy-1.6.14
make install PREFIX=/usr/local/haproxy
建立配置檔案目錄
mkdir -p /usr/local/haproxy/conf
mkdir -p /etc/haproxy/
建立配置檔案haproxy.cfg
global
log 127.0.0.1 local0 info ##記日誌的功能
maxconn 4096
chroot /usr/share/haproxy
group haproxy
user haproxy
nbproc 1
daemon
defaults
log global
mode http
option httplog
retries 3
option redispatch
maxconn 2000
timeout connect 5000
timeout client 50000
timeout server 50000
listen admin_status
bind :48800
stats uri /admin-status ##統計頁面
stats auth admin:admin
mode http
option httplog
listen allmycat_service
bind :3307
mode tcp
option tcplog
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
balance roundrobin
server mycat_01 118.25.178.145:8066 check port 48700 inter 2s rise 2 fall 3 weight 10
server mycat_02 106.12.203.18:8066 check port 48700 inter 2s rise 2 fall 3 weight 10
timeout server 20000
新增配置檔案軟連線
ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg
複製開機啟動檔案,賦予許可權
cp /usr/local/haproxy-1.6.14/examples/haproxy.init /etc/rc.d/init.d/haproxy
chmod +x /etc/rc.d/init.d/haproxy
為haproxy指令碼建立軟連線
ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin
設定haproxy開機啟動
chkconfig --add haproxy
chkconfig haproxy on
根據haproxy.cfg需要做以下操作:
新增使用者和使用者組
groupadd haproxy
useradd -g haproxy haproxy
建立haproxy執行路徑
mkdir /usr/share/haproxy
開啟3307(連線haproxy)和48800(監控)埠
配置rsyslog 的haproxy日誌
檢視是否已經安裝rsyslog
yum list installed|grep rsyslog
否則
yum install rsyslog
修改rsyslog.conf,把這倆前的#號去掉
vim /etc/rsyslog.conf
配置中若沒有$IncludeConfig /etc/rsyslog.d/*.conf,需要加上,否則不能載入haproxy.conf的配置
建立haproxy.conf讓rsyslog.conf來載入此配置
vim /etc/rsyslog.d/haproxy.conf
local0.* /var/log/haproxy.log
&~
配置儲存後,啟動rsyslog服務
service rsyslog restart
配置系統ip包轉發
vim /etc/sysctl.conf
#新增
net.ipv4.ip_forward = 1
使配置生效
sysctl -p
啟動Haproxy服務
service haproxy start
測試連線
用navicat連線haproxy,使用者資訊為mycat配置的可訪問使用者資訊
可用看到邏輯庫基本資訊
訪問登入48800埠可以檢視
成功配置。