MySQL从库集群方案之HAProxy篇_MySQL
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

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Kernelsecuritycheckfailure (Kernel-Check-Fehler) ist eine relativ häufige Art von Stoppcode. Unabhängig vom Grund führt der Bluescreen-Fehler jedoch dazu, dass viele Benutzer diese Seite sorgfältig vorstellen. 17 Lösungen für den Bluescreen „kernel_security_check_failure“ Methode 1: Entfernen Sie alle externen Geräte Wenn ein externes Gerät, das Sie verwenden, nicht mit Ihrer Windows-Version kompatibel ist, kann der Bluescreen-Fehler „Kernelsecuritycheckfailure“ auftreten. Dazu müssen Sie alle externen Geräte trennen, bevor Sie versuchen, Ihren Computer neu zu starten.

Künstliche Intelligenz ist ein Computersystem, das versucht, die menschliche Intelligenz zu imitieren, einschließlich einiger menschlicher Funktionen, die intuitiv mit Intelligenz verbunden sind, wie etwa Lernen, Problemlösung sowie rationales Denken und Handeln. Im weitesten Sinne deckt der Begriff KI viele eng verwandte Bereiche wie maschinelles Lernen ab. Systeme, die KI stark nutzen, haben erhebliche soziale Auswirkungen in Bereichen wie Gesundheitswesen, Transport, Finanzen, soziale Netzwerke, E-Commerce und Bildung. Diese wachsenden sozialen Auswirkungen bringen auch eine Reihe von Risiken und Bedenken mit sich, darunter Fehler in der Software für künstliche Intelligenz, Cyberangriffe und die Sicherheit von Systemen mit künstlicher Intelligenz. Daher erregt das Thema der Verifizierung von KI-Systemen und das umfassendere Thema vertrauenswürdiger KI zunehmend Aufmerksamkeit in der Forschungsgemeinschaft. „Überprüfbare KI“ wurde bestätigt

Die gleichmäßige Auslastung der Webserver ist eine der wichtigsten Maßnahmen zur Vermeidung von Ausfallzeiten. Die Verwendung eines Load Balancers ist ein zuverlässiger Ansatz, wobei HAProxy eine hoch angesehene Wahl ist. Mit HAProxy können Sie die Lastausgleichsmethode genau konfigurieren und SSL-Passthrough unterstützen, um die Sicherheit der Kommunikation zwischen Client und Server zu gewährleisten. Zunächst wird die Bedeutung der Implementierung von SSL-Passthrough in HAProxy untersucht. Anschließend werden die zur Implementierung dieser Funktion erforderlichen Schritte ausführlich erläutert und ein Beispiel zum besseren Verständnis gegeben. Was ist SSL-Passthrough? Warum ist es wichtig? Als Load Balancer nimmt HAProxy die an Ihre Webserver fließende Last entgegen und verteilt sie auf die konfigurierten Server. Die Lastverteilung erfolgt gezielt auf Client-Geräte und

In diesem Artikel erfahren Sie, wie Sie die PalmCheck-Funktion auf einem Windows 11/10-PC deaktivieren. PalmCheck ist eine Funktion, die verhindern soll, dass versehentliche Handflächen- oder andere Berührungen beim Tippen auf der Tastatur fälschlicherweise als Eingabe erkannt werden. Dies ist normalerweise in den Touchpad-Einstellungen zu finden, insbesondere bei Touch-fähigen Geräten wie Laptops. Manchmal möchten Sie möglicherweise PalmCheck oder eine ähnliche Funktion deaktivieren, um in Situationen, in denen Sie sowohl die Tastatur als auch das Touchpad verwenden müssen, mehr Flexibilität bei der Steuerung der Eingabe zu haben. In diesem Artikel stellen wir vor, wie Sie die PalmCheck-Funktion auf einem Windows 11/10-PC deaktivieren, damit Sie die Anforderungen beim Spielen oder Ausführen von Anwendungen besser bewältigen können. Was ist das P auf dem Touchpad?

WebSocket-Anwendungen ermöglichen eine bidirektionale Echtzeitkommunikation zwischen Client und Server. Auch wenn WebSocket-Verbindungen verwendet werden, sind dennoch wirksame Verkehrsmanagementmechanismen erforderlich, um eine Überlastung des Servers zu vermeiden, die zu Dienstunterbrechungen und Nichtverfügbarkeit führt. HAProxy ist ein kostenloser und zuverlässiger Load Balancer, der auch als Reverse-Proxy fungiert. Durch die Konfiguration von HAProxy zur Unterstützung von WebSocket-Verbindungen können Sie die Echtzeit-Datenübertragungseigenschaften von WebSockets besser nutzen und die Serverlast reduzieren. In diesem Artikel werden die detaillierten Schritte zum Konfigurieren von HAProxy für die Unterstützung von WebSocket-Verbindungen beschrieben. Schritt-für-Schritt-Anleitung zur Konfiguration von HAProxy für WebSocket-Verbindungen über WebSoc

Autor dieses Artikels: Spark (Mitglied des Intranet-Sicherheitsteams Ms08067) 1. Übersicht Haproxy ist eine leistungsstarke Lastausgleichs-Proxy-Software, die in der Sprache C entwickelt wurde. Sie bietet TCP- und HTTP-Anwendungs-Proxys. Sie ist kostenlos, schnell und zuverlässig. Ähnlich wie frp kann es mit einer Konfigurationsdatei und einem Server ausgeführt werden. Vorteile: Große Geschäftsfeldanwendungen unterstützen weitgehend Vierschicht-Proxys (Transportschicht) und Siebenschicht-Proxys (Anwendungsschicht) und können das Routing nach dem Kompilieren mit Cygwin flexibel konfigurieren (kann plattformübergreifend sein) Die Zugriffskontrollliste (AccessControlLists, ACL) ist eine Liste von Befehlen, die auf die Router-Schnittstelle angewendet werden

Beim Durchführen des Lastausgleichs wird im Allgemeinen ein Health-Check-Tool eingesetzt, um sicherzustellen, dass der Backend-Realserver normal ist und Dienste bereitstellen kann. Um die Situation zu vermeiden, in der der Backend-Realserver ausfällt oder der Dienst nicht verfügbar ist, verteilt der Lastausgleicher die Anforderung an den Realserver. Auswirkungen auf den gesamten Geschäftszugriff. Es gibt viele Möglichkeiten, Gesundheitsprüfungen durchzuführen, und Sie können Skripte selbst bereitstellen. Am häufigsten wird jedoch der Keepalived-Dienst verwendet. Es gibt drei Methoden zur Integritätsprüfung für keepalived: tcp_check, http_check und misc_check. Keepalived-Konfigurationsübersicht Keepalived besteht aus drei Hauptmodulen, nämlich Kern,

LVS-Funktionen: 1. Starker Lastwiderstand, Verwendung der IP-Lastausgleichstechnologie, nur für die Verteilung, sodass LVS selbst nicht viel Verkehr generiert; 2. Gute Stabilität und Zuverlässigkeit und ein perfekter Hot-Backup-Plan (z. B. LVS + keepalived). ) 3. Es verfügt über ein breites Anwendungsspektrum und kann die Last aller Anwendungen ausgleichen. 4. Es unterstützt keine reguläre Verarbeitung und kann dynamische und statische Anwendungen nicht trennen. Vier häufig verwendete Algorithmen: 1.rr: Round-Robin, der Reihe nach den Back-End-Servern zugewiesen 2.wrr: Gewichteter Round-Robin, entsprechend der Auslastung des Back-End-Servers zugewiesen; Dem Server mit den wenigsten hergestellten Verbindungen zugewiesen. Oben; 4.wlc: Verbindung mit der geringsten Gewichtung, zugewiesen entsprechend der Verarbeitungskapazität des Back-End-Servers. Sie können ipvsadm–p (pe
