HaProxy+Keepalived+Mycat高可用群集配置
本章节主要介绍配置HaProxy+Keepalived高可用群集,Mycat的配置就不在这里做介绍,可以参考我前面写的几篇关于Mycat的文章。
部署图:
配置HaProxy安装
181和179两台服务器安装haproxy的步骤一致
--创建haproxy用户useraddhaproxy--解压完后进入haproxy目录cdhaproxy-1.4.25/--编译安装makeTARGET=linux26PREFIX=/usr/local/haproxyARCH=x86_64makeinstallPREFIX=/usr/local/haproxy
HaProxy配置
cd/usr/local/haproxytouchhaproxy.cfgvimhaproxy.cfg
global
log 127.0.0.1 local0 ##记日志的功能
maxconn 4096
chroot /usr/local/haproxy
user haproxy
group haproxy
daemon
defaults
log global
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen admin_stats 192.168.57.180:48800##统计页面
stats uri /admin-status
stats auth admin:admin
mode http
option httplog
listen mycat_service 192.168.57.180:18066 ##客户端就是通过这个ip和端口进行连接,这个vip和端口绑定的是mycat8066端口
mode tcp
option tcplog
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
balance roundrobin
server mycat_181 192.168.57.181:8066 check port 48700 inter 5s rise 2 fall 3
server mycat_179 192.168.57.179:8066 check port 48700 inter 5s rise 2 fall 3
srvtimeout 20000
listen mycat_admin 192.168.57.180:19066 ##客户端就是通过这个ip和端口进行连接,这个vip和端口绑定的是mycat9066端口
mode tcp
option tcplog
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
balance roundrobin
server mycat_181 192.168.57.181:9066 check port 48700 inter 5s rise 2 fall 3
server mycat_179 192.168.57.179:9066 check port 48700 inter 5s rise 2 fall 3
srvtimeout 20000
配置haproxy记录日志功能
yum–yinstallrsyslogmkdir/etc/rsyslog.dcd/etc/rsyslog.d/touchhaproxy.confvimhaproxy.conf
$ModLoadimudp$UDPServerRun514local0.*/var/log/haproxy.log
vim/etc/rsyslog.conf
在#### RULES ####上面一行加入以下内容
#Includeallconfigfilesin/etc/rsyslog.d/$IncludeConfig/etc/rsyslog.d/*.conf
在local7.* /var/log/boot.log下面加入以下内容
local0.*/var/log/haproxy.log
重启rsyslog服务
servicersyslogrestart
将rsyslog加入自动启动服务
chkconfig--addrsyslogchkconfig--level2345rsyslogon
配置监听mycat是否存活
安装xinetd插件
yuminstallxinetd-y
cdetc
servicemycat_status{flags=REUSEsocket_type=streamport=48700wait=nouser=nobodyserver=/usr/local/bin/mycat_statuslog_on_failure+=USERIDdisable=no}
创建xinetd启动服务脚本
vim /usr/local/bin/mycat_status
#!/bin/bash#/usr/local/bin/mycat_status.sh#Thisscriptchecksifamycatserverishealthyrunningonlocalhost.Itwill#return:##"HTTP/1.x200OK\r"(ifmycatisrunningsmoothly)##"HTTP/1.x503InternalServerError\r"(else)mycat=`/usr/local/mycat/bin/mycatstatus|grep'notrunning'|wc-l`if["$mycat"="0"];then/bin/echo-e"HTTP/1.1200OK\r\n"else/bin/echo-e"HTTP/1.1503ServiceUnavailable\r\n"fi
修改脚本文件权限
我就是在这里被坑了很久,根据权威指南上面mycat_status这个脚本里面的内容也有很多问题,好几个地方没有空格.
chmod777/usr/local/bin/mycat_statuschmod777/etc/xinetd.d/mycat_status
将启动脚本加入服务
vim /etc/services
在末尾加入
mycat_status48700/tcp#mycat_status
重启xinetd服务
servicexinetdrestart
将xinetd加入自启动服务
chkconfig--addxinetdchkconfig--level2345xinetdon
页面测试
http://192.168.57.180:48800/admin-status
由于179还没有安装好,所以这里179显示连接失败
创建haproxy启停脚本
启动脚本
touch/usr/local/haproxy/sbin/startchmod+x/usr/local/haproxy/sbin/startvim/usr/local/haproxy/sbin/start
#!/bin/sh/usr/local/haproxy/sbin/haproxy-f/usr/local/haproxy/haproxy.cfg&
关闭脚本
touch/usr/local/haproxy/sbin/stopchmod+x/usr/local/haproxy/sbin/stopvim/usr/local/haproxy/sbin/stop
#!/bin/shps-ef|grepsbin/haproxy|grep-vgrep|awk'{print$2}'|xargskill-s9
授权
chown-Rhaproxy.haproxy/usr/local/haproxy/*
Keepalived安装步骤
keepalived的安装步骤过程在两台服务器上除了keepalived.conf配置文件稍微有点区别外其他的地方都一致。
openssl安装
./config--prefix=/usr/local/openssl./config-tmakedependmakemaketestmakeinstallln-s/usr/local/openssl/usr/local/sslvim/etc/ld.so.conf
在文件末尾加入以下内容
/usr/local/openssl/lib
修改环境变量
vim/etc/profile
在文件末尾加入以下内容
exportOPENSSL=/usr/local/openssl/binexportPATH=$PATH:$OPENSSL
使环境变量立刻生效
source/etc/profile
安装openssl-devel
yuminstallopenssl-devel-y
测试
ldd/usr/local/openssl/bin/openssl
vdso.so.(lib64libdl.so.(lib64libc.so.(lib64ldlinuxx86.so.(
whichopenssl
/usr/bin/openssl
opensslversion
OpenSSL1.0.0-fips29Mar2010
keepalived安装
./configure--prefix=/usr/local/keepalivedmakemakeinstallcp/usr/local/keepalived/sbin/keepalived/usr/sbin/cp/usr/local/keepalived/etc/sysconfig/keepalived/etc/sysconfig/cp/usr/local/keepalived/etc/rc.d/init.d/keepalived/etc/init.d/mkdir/etc/keepalivedcd/etc/keepalived/cp/usr/local/keepalived/etc/keepalived/keepalived.conf/etc/keepalivedmkdir-p/usr/local/keepalived/var/log
创建配置文件和脚本
mkdiretckeepalivedscriptscd/etc/keepalived/scripts
vim/etc/keepalived/keepalived.conf
master
!ConfigurationFileforkeepalivedvrrp_scriptchk_http_port{script"/etc/keepalived/scripts/check_haproxy.sh"interval2weight2}vrrp_instanceVI_1{stateMASTER#192.168.57.179上改为BACKUPinterfaceeth0#对外提供服务的网络接口virtual_router_id51#VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组priority150#数值愈大,优先级越高,backup上改为120advert_int1#同步通知间隔authentication{#包含验证类型和验证密码。类型主要有PASS、AH两种,通常使用的类型为PASS,据说AH使用时有问题auth_typePASSauth_pass1111}track_script{chk_http_port#调用脚本check_haproxy.sh检查haproxy是否存活}virtual_ipaddress{#vip地址,haproxy配置的使用的就是这里配置的VIP192.168.57.180deveth0scopeglobal}notify_master/etc/keepalived/scripts/haproxy_master.shnotify_backup/etc/keepalived/scripts/haproxy_backup.shnotify_fault/etc/keepalived/scripts/haproxy_fault.shnotify_stop/etc/keepalived/scripts/haproxy_stop.sh}
backup
!ConfigurationFileforkeepalivedvrrp_scriptchk_http_port{script"/etc/keepalived/scripts/check_haproxy.sh"interval2weight2}vrrp_instanceVI_1{stateBACKUP#192.168.57.179上改为BACKUPinterfaceeth0#对外提供服务的网络接口virtual_router_id51#VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组priority120#数值愈大,优先级越高,backup上改为120advert_int1#同步通知间隔authentication{#包含验证类型和验证密码。类型主要有PASS、AH两种,通常使用的类型为PASS,据说AH使用时有问题auth_typePASSauth_pass1111}track_script{chk_http_port#调用脚本check_haproxy.sh检查haproxy是否存活}virtual_ipaddress{#vip地址192.168.57.180deveth0scopeglobal}notify_master/etc/keepalived/scripts/haproxy_master.shnotify_backup/etc/keepalived/scripts/haproxy_backup.shnotify_fault/etc/keepalived/scripts/haproxy_fault.shnotify_stop/etc/keepalived/scripts/haproxy_stop.sh}
vim/etc/keepalived/scripts/check_haproxy.sh
#!/bin/bashSTARTHAPROXY="/usr/local/haproxy/sbin/haproxy-f/usr/local/haproxy/haproxy.cfg"STOPKEEPALIVED="/etc/init.d/keepalivedstop"LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"echo"[check_haproxystatus]">>$LOGFILEA=`ps-Chaproxy--no-header|wc-l`echo"[check_haproxystatus]">>$LOGFILEdate>>$LOGFILEif[$A-eq0];thenecho$STARTHAPROXY>>$LOGFILE$STARTHAPROXY>>$LOGFILE2>&1sleep5fiif[`ps-Chaproxy--no-header|wc-l`-eq0];thenexit0elseexit1fi
vim/etc/keepalived/scripts/haproxy_master.sh
#!bin`usrlocalhaproxysbinhaproxyfusrlocalhaproxy"usrlocalkeepalivedkeepalivedhaproxystate."$LOGFILE$LOGFILE$LOGFILE$LOGFILE$LOGFILE$LOGFILE
vim/etc/keepalived/scripts/haproxy_backup.sh
#!/bin/bashSTARTHAPROXY=`/usr/local/haproxy/sbin/haproxy-f/usr/local/haproxy/haproxy.cfg`STOPHAPROXY=`ps-ef|grepsbin/haproxy|grep-vgrep|awk'{print$2}'|xargskill-s9`LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"echo"[backup]">>$LOGFILEdate>>$LOGFILEecho"Beingbackup....">>$LOGFILE2>&1echo"stophaproxy....">>$LOGFILE2>&1$STOPHAPROXY>>$LOGFILE2>&1echo"starthaproxy....">>$LOGFILE2>&1$STARTHAPROXY>>$LOGFILE2>&1echo"haproxystared...">>$LOGFILE
vim/etc/keepalived/scripts/haproxy_fault.sh
#!/bin/bashLOGFILE=/usr/local/keepalived/var/log/keepalived-haproxy-state.logecho"[fault]">>$LOGFILEdate>>$LOGFILE
vim /etc/keepalived/scripts/haproxy_stop.sh
#!/bin/bashLOGFILE=/usr/local/keepalived/var/log/keepalived-haproxy-state.logecho"[stop]">>$LOGFILEdate>>$LOGFILE
赋予脚本可执行权限
chmod777/etc/keepalived/scripts/*
将keepalived加入自启动服务
chkconfig--addkeepalivedchkconfig--level2345keepalivedon--启动服务servicekeepalivedstart
总结权威指南上面代码部分好多处都存在问题,几乎每一块代码都存在问题,有时候往往一个空格需要花很长的时间去找这个问题,所以在代码方面要细心;特别是复制别人的代码不要原本照抄最好是检查一下,除了代码本身的问题权限有时候也是容易忽略的错误,特别是可执行文件要注意是否有可执行权限。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。