目的
外界将讀寫請求發給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端口可以檢視
成功配置。