使用haproxy负载mycat集群

记录一下使用haproxy负载mycat集群的步骤
前面的文章已经介绍勒mycat的安装和配置,这里就不介绍了。

本人采用的是2台ECS做的测试

一,环境介绍:

下面都是ubuntu1604的机器

59.111.153.92 :haproxy,mycat,mysql

47.120.21.31  : mycat,mysql

为节省机器,所以haproxy在mycat一台机器,少一层网络层。
mysql之间可以做主从或者互为主从配置。

1、安装haproxy

useradd -r haproxy
wget https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.8.12.tar.gz/sha512/2b782a54988cc88d1af0e5f011af062910e8fac28eab13db7e05a58d0d23961f827da47e3871e8d081f5a2d222588480d81dec2e9f14ec9f54a1c3cb5bf3d56a/haproxy-1.8.12.tar.gz
tar -zxvf haproxy-1.8.12.tar.gz
cd  haproxy-1.8.12
make TARGET=linux2628 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
cd /usr/local/haproxy
chown -R haproxy.haproxy *

2、配置haproxy
vim /usr/local/haproxy/haproxy.cfg
写入内容:

# Global settings
global 
  log 127.0.0.1 local0 ##记日志的功能
  maxconn 4096       ##最大连接数,默认4000
  #chroot /usr/local/haproxy
  user root       #所属用户
  group root      #所属组
  daemon             ###创建1个进程进入deamon模式运行。此参数要求将运行模式设置为"daemon"

defaults
  log global         ###采用全局定义的日志
  option dontlognull    ###不记录健康检查的日志信息
  retries 3          ###3次连接失败就认为服务不可用,也可以通过后面设置
  option redispatch   ###serverId对应的服务器挂掉后,强制定向到其他健康的服务器
  maxconn 2000       ###最大连接数
  timeout connect 5000ms                   ##contimeout 5000    连接超时
  timeout client  50000ms                  ##clitimeout 50000   客户端连接超时
  timeout server  50000ms                  ##srvtimeout 50000   服务器连接超时
  ##listen admin_status 59.111.153.92:8067:48800 ##VIP
  ##stats uri/admin-status #统计页面
  ##stats auth admin:admin
  mode http          ###默认的模式,tcp是4层,http是7层,health只会返回OK 若是混合模式则 mode 不需要设置
  option httplog     ###日志类别http日志格式 混合模式 此处还需要加上 tcplog 
  
  ## HAProxy的状态信息统计页面
listen admin_status
    bind  :48800  ## 绑定端口
	stats uri /admin-status     ##统计页面
	stats auth admin:admin ## 设置统计页面认证的用户和密码,如果要设置多个,另起一行写入即可
	mode  http
	option     httplog    ## 启用日志记录HTTP请求
  
listen mycat_service ## 59.111.153.92:8067 ##转发到mycat的8066端口,即mycat的服务端口
  bind  :8067
  mode tcp
  option tcplog
  option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
  balance roundrobin
  server mycat_111  59.111.153.92:8066 check port 48700 inter 5s rise 2 fall 3
  server mycat_122  47.120.21.31: 8066 check port 48700 inter 5s rise 2 fall 3
  #srvtimeout 20000
  timeout server 20000
  
listen allmycat_admin ##59.111.153.92:9067 ##转发到mycat的9066端口,及mycat的管理控制台端口
  bind :9067
  mode tcp
  option tcplog
  option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
  balance roundrobin
 server mycat_111  59.111.153.92:8066 check port 48700 inter 5s rise 2 fall 3
  server mycat_122  47.120.21.31: 8066 check port 48700 inter 5s rise 2 fall 3
  #srvtimeout 20000
  timeout server 20000
sudo /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg  -c #检查配置文件是否正常
sudo /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg #启动
sudo killall haproxy #停止

3、配置haproxy记录日志功能
默认haproxy是不记录日志的,为了记录日志还需要配置syslog模块,在linux下是rsyslogd服务,需要先安装rsyslog

sudo apt-get install rsyslog
sudo mkdir /etc/rsyslog.d
cd /etc/rsyslog.d/
sudo touch haproxy.conf
vim haproxy.conf

写入内容

$ModLoad imudp
$UDPServerRun 514
local0.* /var/log/haproxy.log

vim /etc/rsyslog.conf
修改:1在底部加入以下内容

# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf

重启rsyslog服务

systemctl restart rsyslog.service

将rsyslog加入自动启动服务

systemctl enable rsyslog.service

二、配置监听mycat是否存活
俩台mycat上都需要配置
需要111,122机器开放8066,9066端口,48700端口
haproxy所在机器额外开放48800,8067,9067端口,查看haproxy管理mycat的界面和访问haproxy代理的mycat。

mycat上都需要添加检测端口 48700 的脚本,为此需要用到 xinetd,xinetd 为
linux 系统的基础服务。
首先在 xinetd 目录下面增加脚本与端口的映射配置文件
1.先查看电脑是否已经安装xinetd

    sudo /etc/init.d/xinetd status

    执行如上命令如果没有提示未知服务的话,说明已经安装。

2.更新apt-get 资源列表

    sudo apt-get update

3.安装xinetd

    sudo apt-get install xinetd

4.安装完成后重启电脑

5.现次查看xinetd状态

    sudo /etc/init.d/xinetd status

    如果运行正常则会显示:xinetd start/running

6.xinetd其它操作

     xinetd还有其它命令,启动,停止,重启等。如下所示:

     Usage: /etc/init.d/xinetd {start|stop|reload|force-reload|restart|status}
cd /etc/xinetd.d
sudo touch mycat_status

sudo vim /etc/xinetd.d/mycat_status
写入以下内容

service mycat_status
{
flags = REUSE
socket_type = stream
port = 48700
wait = no
user = nobody
server =/usr/local/bin/mycat_status
log_on_failure += USERID
disable = no
}

创建xinetd启动服务脚本
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=`/home/emeet/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 777 /usr/local/bin/mycat_status
chmod 777 /etc/xinetd.d/mycat_status

这里需要测试一下服务是否正常:
sudo /usr/local/bin/mycat_status

如果输出:HTTP/1.1 200 OK,(200需要mycat开启)则表示正确。如果有其它提示则一定要解决,否则影响后面的正常访问。

将启动脚本加入服务
vim /etc/services
在末尾加入

mycat_status    48700/tcp               # mycat_status

重启xinetd服务

sudo systemctl restart xinetd.service

验证mycat_status服务是否启动成功

sudo netstat -antup|grep 48700

在这里插入图片描述
注意:/etc/xinetd.d/mycat_status里的service mycat_status(服务名)和port = 48700(端口)要与 /etc/services里的一致,一定要细致,错误了就多检查检查。

启动俩台机器的mycat

 sudo  ./mycat start

启动haproxy

   /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg -c   检查配置文件是否正确
     /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg   启动配置文件

打开浏览器,输入http://59.111.153.92:48800/admin-status
看到下面的页面说明启动,配置成功:
在这里插入图片描述
绿色俩条记录说明mycta都运行正常,如果是红色就有问题,可以去检查配置。
停掉一台机器的mycat,其中的记录刷新后会变为红色。
通过 mysql -utest -p123456 -h59.111.153.92 -P8067 访问mycat也可以测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值