1. 程式人生 > >使用Mycat叢集部署及Haproxy負載均衡

使用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埠可以檢視

成功配置。