haproxy+keepalive+mycat 高可用

[root@mycat /etc/supervisord.d]$ cat mycat.ini 
[program:mycat]      #指定服务名称必不可少
command=/usr/local/mycat/bin/mycat console     #指定服务启动方式(这里是必须用前台启动)
stdout_logfile=/usr/local/mycat/superlog/superlog.log   #指定日志输出位置
autostart=true   #在supervisord启动的时候服务也自动启动
autorestart=true  #程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startsecs=5  #启动5秒后没有异常退出,就表示进程正常启动了,默认为1秒
startretries=3   #启动失败自动重试次数,默认是3
priority=999  #进程启动优先级,默认999,值小的优先启动,最小是1
stopasgroup=true  #默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true  #;默认为false,向进程组发送kill信号,包括子进程
第1章 Haproxy(在实现这一堆功能叠加的高可用的时候发现haproxy貌似是可以被supervisor替代的.只要高可用不要负载均衡的话)
1.1 安装
useradd haproxy
wget http://118.186.61.226:32768/haproxy-1.4.25.tar.gz   # 需要FQ。我传到了自己服务器上
tar xvf haproxy-1.4.25.tar.gz
cd  haproxy-1.4.25
make TARGET=linux2628 PREFIX=/usr/local/haproxy ARCH=x86_64
make install PREFIX=/usr/local/haproxy
echo  $?
cd /usr/local/haproxy
vi haproxy.cfg
global
log 127.0.0.1 local0
        maxconn 40960			#最大连接数量
        chroot /usr/local/haproxy	#chroot运行路径
        user haproxy			#使用的运行用户
        group haproxy			#运行的用户组
        daemon				#以后台形式运行haproxy
	pidfile /usr/local/haproxy/haproxy.pid
defaults
        log global
        option dontlognull
        retries 3
        option redispatch
        maxconn 60000
listen admin_stats 
	bind :48800
        log 127.0.0.1 local3 err
	stats uri /admin-status
        stats auth admin:admin
        mode http
        option httplog
listen supervisor_status
        bind :49900
        log 127.0.0.1 local3 err
        stats uri /supervisor_status
        stats auth user:user-admin
        mode http
        option httplog
#listen mycat_service 
#	bind :18066
#        mode tcp
#        option tcplog
#          option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
#        balance roundrobin
#          server mycat_20 192.168.15.20:8066 check port 48700 inter 5s rise 2 fall 3
#          server mycat_19 192.168.15.19:8066 check port 48700 inter 5s rise 2 fall 3
#listen mycat_admin 
#	bind :19066
#        mode tcp
#        option tcplog
#          option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
#        balance roundrobin
#          server mycat_20 192.168.15.20:9066 check port 48700 inter 5s rise 2 fall 3
#          server mycat_19 192.168.15.19:9066 check port 48700 inter 5s rise 2 fall 3
#        srvtimeout 20000
1.2 配置haproxy记录日志功能
yum install rsyslog -y
cd /etc/rsyslog.d/
vi haproxy.conf
增加内容:
$ModLoad imudp
$UDPServerRun 514
local0.* /var/log/haproxy.log
vi /etc/rsyslog.conf
#### RULES ####上面一行加入以下内容
# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf
在local7.* /var/log/boot.log下面加入以下内容
local0.* /var/log/haproxy.log
 重启rsyslog服务并将rsyslog加入自动启动服务
systemctl restart   rsyslog
systemctl enable  rsyslog
1.3 配置监听mycat是否存活
yum install xinetd -y
cd /etc/xinetd.d
vi 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
}
vi /usr/local/bin/mycat_status (创建xinetd启动服务脚本)
增加内容:
#!/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 777 /usr/local/bin/mycat_status
chmod 777 /etc/xinetd.d/mycat_status
将启动脚本加入服务
vi /etc/services
末尾增加:
mycat_status 48700/tcp # mycat_status
重启xinetd服务并将xinetd加入自启动服务
systemctl restart xinetd
systemctl enable  xinetd
验证mycat_status服务是否启动成功
netstat -antup|grep 48700
1.4 haproxy启停
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg &   #启动
创建启动脚本
echo "/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg & " > /usr/local/haproxy/sbin/start
ps -ef | grep haproxy | grep -v grep |awk '{print $2}'|xargs kill -s 9  #停止
创建停止脚本
echo "ps -ef | grep haproxy | grep -v grep |awk '{print $2}'|xargs kill -s 9" > /usr/local/haproxy/sbin/stop
添加执行权限.
chmod +x /usr/local/haproxy/sbin/start
chmod +x /usr/local/haproxy/sbin/stop
1.5 授权
chown -R haproxy:haproxy /usr/local/haproxy/*
1.6 启动
启动haproxy
启动haproxy前必须先启动keepalived,否则启动不了。
启动命令:
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
启动haproxy异常情况
如果报以下错误:
[root@host-10-1-6-228 xinetd.d]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
[ALERT] 326/103258 (4950) : Starting proxy admin_stats: cannot bind socket
[ALERT] 326/103258 (4950) : Starting proxy mycat_service: cannot bind socket
[ALERT] 326/103258 (4950) : Starting proxy mycat_admin: cannot bind socket
原因为:该机器没有抢占到vip,如果另一台服务启动正常,这个错误可以忽略不管,如果另一台也一样,使用ping vip命令看看vip是否生效,
如果没有生效,说明keepalived没有启动成功,回去检查keepalived的异常再说。
启动后可以通过http:// 10.1.6.250:48800/admin-status (用户名密码都是admin,haproxy.cfg中配置的)
 
 
 
 
第3章 Over
http://192.168.15.201:48800/admin-status
第4章 Mycat-eye(单机器安装即可)
4.1 需部署zk
wget  https://mirrors.aliyun.com/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar zxvf zookeeper-3.4.10.tar.gz
cp –a   zookeeper-3.4.10 /wdcloud/app/zookeeper
cd /wdcloud/app/zookeeper
mkdir data log
cd conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
dataDir=/wdcloud/app/zookeeper/data/
dataLogDir=/home/wdm/zookeeper/log/
启动
../bin/zkServer.sh start
4.2 Mycat-eye下载地址
http://dl.mycat.io/mycat-web-1.0/Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz
tar  xvf  Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz
cp -a  mycat-web /wdcloud/app/
cd  /wdcloud/app/mycat-web
./start.sh
访问http://localhost:8082/mycat/可以看到
第5章 端口映射
http://zabbix.wdcloud.cc/mycat/
http://zabbix.wdcloud.cc/admin-status/
posted on 2019-09-24 19:08  DisCover_ry  阅读(411)  评论(0)    收藏  举报