Mysql集群Proxy
HAProxy反向代理服务器支持双机热备支持虚拟主机,其配置简单,拥有非常不错的服务器健康检查功能。当其代理的后端服务器出现故障,HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。这里有两台HAProxy机器,分别安装keepalived,组成热备形式。作用:当一台有问题,另一台可以在1秒内接管。
xinetd服务的作用是检测端口,本文中使用8890端口。HAProxy用http协议检测这个端口是否正常。
MySQL同步状态脚本,是放在从库本地,由xinetd服务来激活脚本,正常就会输出200状态码给HAProxy,证明从库正常;否则,就剔除。(这里就可以加上短信报警了)
系统架构图
使用软件
- HAProxy 1.4.16
- Keepalived 1.1.20
- Xinetd 2.3.14
- MySQL 同步状态脚本 0.2
一、系统约定
系统环境
- OS:CentOS 5.6 x86_64
- MASTER:192.168.1.65
- BACKUP:192.168.1.66
- VIP:192.168.1.67
- serivce Port:3306
工作流程
准备工作:应用配置好slave的VIP 192.168.1.67 端口3306
(1)应用服务器
(2)连接HAProxy的vip 192.168.1.67:3306,根据算法,分配到一台slave。
(3)检测slave的8890端口是否返回http 200状态码。
(4)返回200 状态码,HAProxy 返回正常,继续服务。
(5)返回503,剔除该slave,并将mysql请求转发到另外一台slave。
(6)有问题的slave,发送短信报警,相关人员检查。
二、Keepalived 1.1.20的安装于配置
#cd /var/tmp/ #wget http://www.keepalived.org/software/keepalived-1.1.20.tar.gz #tar zxvf keepalived-1.1.20.tar.gz #cd keepalived-1.1.20 #./configure –prefix=/usr #make && make install #cp /usr/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ #cp /usr/etc/sysconfig/keepalived /etc/sysconfig/ #mkdir /etc/keepalived vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { coralzd@gmail.com } notification_email_from coralzd@gmail.com smtp_server 192.168.1.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_HAProxy { script "killall -0 HAProxy" interval 2 weight 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 50 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_interface { eth0 } virtual_ipaddress { 192.168.1.67 } track_script { chk_HAProxy } }<br>
三、HAProxy 1.4.16的安装与配置
#cd /var/tmp/ #wget http://HAProxy.1wt.eu/download/1.4/src/HAProxy-1.4.16.tar.gz #tar -zxvf HAProxy-1.4.16.tar.gz #cd HAProxy-1.4.16 #make install #mkdir -p /usr/local/HAProxy/etc #mkdir -p /usr/local/HAProxy/sbin #cp examples/HAProxy.cfg /usr/local/HAProxy/etc #ln -s /usr/local/sbin/HAProxy /usr/local/HAProxy/sbin/HAProxy #mkdir /usr/share/HAProxy /etc/HAProxy/HAProxy.cfg global log 127.0.0.1 local1 notice maxconn 4096 chroot /usr/share/HAProxy uid 99 gid 99 daemon #debug #quiet defaults log global mode http #option httplog option dontlognull retries 3 option redispatch maxconn 2000 contimeout 5000 clitimeout 50000 srvtimeout 50000 listen DZW_MYSQL_SLAVE 192.168.1.67:3306 #cookie SERVERID rewrite mode tcp maxconn 200 balance roundrobin option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www server mysql_192_168_1_23 192.168.1.23:3306 check port 8890 inter 5s rise 2 fall 3 server mysql_192_168_1_24 192.168.1.24:3306 check port 8890 inter 5s rise 2 fall 3 srvtimeout 20000 listen admin_status mode http bind 192.168.1.65:8899 option httplog log global stats enable stats refresh 10s stats hide-version stats realm Haproxy\ Statistics stats uri /admin-status stats auth admin:123456 stats admin if TRUE<br>
HAProxy 启动脚本
/etc/init.d/HAProxy #!/bin/sh # # chkconfig: - 85 15 # description: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited \ # for high availability environments. # processname: HAProxy # config: /etc/HAProxy/HAProxy.cfg # pidfile: /var/run/HAProxy.pid # Script Author: Simon Matter <simon.matter> # Version: 2004060600 # Source function library. if [ -f /etc/init.d/functions ]; then . /etc/init.d/functions elif [ -f /etc/rc.d/init.d/functions ] ; then . /etc/rc.d/init.d/functions else exit 0 fi # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 # This is our service name BASENAME=HAProxy if [ -L ___FCKpd___2 ]; then BASENAME=`find ___FCKpd___2 -name $BASENAME -printf %l` BASENAME=`basename $BASENAME` fi [ -f /etc/$BASENAME/$BASENAME.cfg ] || exit 1 RETVAL=0 start() { /usr/sbin/$BASENAME -c -q -f /etc/$BASENAME/$BASENAME.cfg if [ $? -ne 0 ]; then echo "Errors found in configuration file, check it with '$BASENAME check'." return 1 fi echo -n "Starting $BASENAME: " daemon /usr/sbin/$BASENAME -D -f /etc/$BASENAME/$BASENAME.cfg -p /var/run/$BASENAME.pid RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$BASENAME return $RETVAL } stop() { echo -n "Shutting down $BASENAME: " killproc $BASENAME -USR1 RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$BASENAME [ $RETVAL -eq 0 ] && rm -f /var/run/$BASENAME.pid return $RETVAL } restart() { /usr/sbin/$BASENAME -c -q -f /etc/$BASENAME/$BASENAME.cfg if [ $? -ne 0 ]; then echo "Errors found in configuration file, check it with '$BASENAME check'." return 1 fi stop start } reload() { /usr/sbin/$BASENAME -c -q -f /etc/$BASENAME/$BASENAME.cfg if [ $? -ne 0 ]; then echo "Errors found in configuration file, check it with '$BASENAME check'." return 1 fi /usr/sbin/$BASENAME -D -f /etc/$BASENAME/$BASENAME.cfg -p /var/run/$BASENAME.pid -sf $(cat /var/run/$BASENAME.pid) } check() { /usr/sbin/$BASENAME -c -q -V -f /etc/$BASENAME/$BASENAME.cfg } rhstatus() { status $BASENAME } condrestart() { [ -e /var/lock/subsys/$BASENAME ] && restart || : } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) restart ;; reload) reload ;; condrestart) condrestart ;; status) rhstatus ;; check) check ;; *) echo ___FCKpd___2quot;Usage: $BASENAME {start|stop|restart|reload|condrestart|status|check}" exit 1 esac exit $? chkconfig –add HAProxy chkconfig HAProxy on service HAProxy start<br></simon.matter>
四、xinetd安装和配置
yum install -y xinetd vim /etc/xinetd.d/mysql_status.sh service mysqlrep_status { flags = REUSE socket_type = stream port = 8890 wait = no user = nobody server = /usr/local/bin/mysqlrep_status.sh log_on_failure += USERID disable = no }<br>
重启xinetd
service xinetd restart
MySQL同步检测脚本(脚本检测同步sql和IO进程是否都为真,以及select是否达到20个进程以上)
#!/bin/bash # # /usr/local/bin/mysqlchk_status.sh # # This script checks if a mysql server is healthy running on localhost. It will # return: # # "HTTP/1.x 200 OK\r" (if mysql is running smoothly) # # – OR – # # "HTTP/1.x 503 Internal Server Error\r" (else) # MYSQL_HOST="localhost" MYSQL_PORT="3306" MYSQL_USERNAME="repdb63" MYSQL_PASSWORD="mylqs9eyex7s" # # We perform a simple query that should return a few results #/usr/local/mysql/bin/mysql -hlocalhost –urepdb63 –pmylqs9eyex7s -e "show slave status\G;" > /tmp/rep.txt mysql -urepdb63 -pmylqs9eyex7s -e "show full processlist;" >/tmp/processlist.txt mysql -urepdb63 -pmylqs9eyex7s -e "show slave status\G;" >/tmp/rep.txt iostat=`grep "Slave_IO_Running" /tmp/rep.txt |awk '{print $2}'` sqlstat=`grep "Slave_SQL_Running" /tmp/rep.txt |awk '{print $2}'` result=$(cat /tmp/processlist.txt|wc -l) #echo iostat:$iostat and sqlstat:$sqlstat # if slave_IO_Running and Slave_sql_Running ok,then return 200 code if [ "$result" -lt "20" ] && [ "$iostat" = "Yes" ] && [ "$sqlstat" = "Yes" ]; then # mysql is fine, return http 200 /bin/echo -e "HTTP/1.1 200 OK\r\n" else # mysql is down, return http 503 /bin/echo -e "HTTP/1.1 503 Service Unavailable\r\n" fi<br>
注意:在mysql slave另行建立一个具有process和slave_client权限的账号。
作者简介:崔晓辉,网名coralzd,大众网系统管理员,精通网站系统架构、Unix技术。gtalk:coralzd@gmail.com

Kernelsecuritycheckfailure(内核检查失败)就是一个比较常见的停止代码类型,可蓝屏错误出现不管是什么原因都让很多的有用户们十分的苦恼,下面就让本站来为用户们来仔细的介绍一下17种解决方法吧。kernel_security_check_failure蓝屏的17种解决方法方法1:移除全部外部设备当您使用的任何外部设备与您的Windows版本不兼容时,则可能会发生Kernelsecuritycheckfailure蓝屏错误。为此,您需要在尝试重新启动计算机之前拔下全部外部设备。

人工智能试图模仿人类智能的计算系统,包括人类一些与智能具有直观联系的功能,例如学习、解决问题以及理性地思考和行动。在广义地解释上,AI 一词涵盖了许多密切相关的领域如机器学习。那些大量使用 AI 的系统在医疗保健、交通运输、金融、社交网络、电子商务和教育等领域都产生了重大的社会影响。这种日益增长的社会影响,也带来了一系列风险和担忧,包括人工智能软件中的错误、网络攻击和人工智能系统安全等方面。因此,AI 系统的验证问题以及更广泛的可信 AI 的话题已经开始引起研究界的关注。“可验证 AI”已经被确

保持Web服务器负载平衡是预防停机的关键措施之一。使用负载平衡器是一种可靠的方法,其中HAProxy是一个备受推崇的选择。使用HAProxy,您可以精确配置负载平衡方式,同时支持SSL直通,从而保障客户端与服务器之间的通信安全。首先探讨在HAProxy中实现SSL直通的重要性,随后详细讨论了实施此功能所需的步骤,并提供了一个示例以便更好理解。什么是SSL通过?为什么它很重要?作为负载均衡器,HAProxy接受并分配流向您Web服务器的负载,在已配置的服务器上进行分发。负载的分配是针对客户端设备和

本文将指导您在Windows11/10PC上关闭PalmCheck功能。PalmCheck是一项设计用来防止在键盘输入时意外手掌或其他部位的触摸被误识别为输入的功能。通常可以在触摸板设置中找到,特别是在笔记本电脑等设备上具有触摸功能的设备。有时候,您可能需要关闭PalmCheck或类似的功能,以便在需要同时使用键盘和触摸板的情况下更加灵活地控制输入。在本文中,我们将介绍如何在Windows11/10PC上禁用PalmCheck功能,让您能够更好地应对游戏或运行应用程序时的需求。什么是触摸板上的P

本文作者:Spark(Ms08067内网安全小组成员)一、概述Haproxy是一个使用c语言开发的高性能负载均衡代理软件,提供tcp和http的应用程序代理,免费、快速且可靠。类似frp,使用一个配置文件+一个server就可以运行。优点:大型业务领域应用广泛支持四层代理(传输层)以及七层代理(应用层)支持acl(访问控制列表),可灵活配置路由windows使用cygwin编译后可运行(可跨平台)访问控制列表(AccessControlLists,ACL)是应用在路由器接口的指令列表,这些指令列

WebSocket应用程序可实现客户端与服务器之间的实时双向通信。尽管使用了WebSocket连接,但仍需有效的流量管理机制,以免服务器过载,进而导致服务中断和不可用。HAProxy是一个免费且可靠的负载平衡器,也可用作反向代理。通过配置HAProxy来支持WebSocket连接,可以更好地发挥WebSockets的实时数据传输特性,同时减轻服务器负载。本文将介绍配置HAProxy以支持WebSocket连接的详细步骤。关于如何为WebSocket连接配置HAProxy的分步指南通过WebSoc

lvs特点:1.抗负载能力强,使用ip负载均衡技术,只做分发,所以lvs本身并没有多少流量产生;2.稳定性、可靠性好,自身有完美的热备方案;(如:lvs+keepalived)3.应用范围比较广,可以对所有应用做负载均衡;4.不支持正则处理,不能做动静分离。常用四种算法:1.rr:轮叫,轮流分配到后端服务器;2.wrr:权重轮叫,根据后端服务器负载情况来分配;3.lc:最小连接,分配已建立连接最少的服务器上;4.wlc:权重最小连接,根据后端服务器处理能力来分配。可以采用ipvsadm–p(pe

在进行负载均衡时,一般都会部署一个健康检查工具,确保后端realserver是正常的,可以提供服务的,避免出现后端realserver已经宕机或服务不可用时,负载均衡器扔将请求分发到realserver,影响整体业务访问。健康检查的方式有很多,可以自行部署脚本,当然当前用的比较多的就是keepalived服务了。keepalived的健康检查方式有三种,tcp_check、http_check、misc_check。keepalived配置简述keepalived主要有三个模块,分别是core、


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.
