Heim Datenbank MySQL-Tutorial MySQL从库集群方案之HAProxy篇_MySQL

MySQL从库集群方案之HAProxy篇_MySQL

Jun 01, 2016 pm 01:50 PM
basename check haproxy 方案

Mysql集群Proxy

HAProxy反向代理服务器支持双机热备支持虚拟主机,其配置简单,拥有非常不错的服务器健康检查功能。当其代理的后端服务器出现故障,HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。

这里有两台HAProxy机器,分别安装keepalived,组成热备形式。作用:当一台有问题,另一台可以在1秒内接管。

xinetd服务的作用是检测端口,本文中使用8890端口。HAProxy用http协议检测这个端口是否正常。

MySQL同步状态脚本,是放在从库本地,由xinetd服务来激活脚本,正常就会输出200状态码给HAProxy,证明从库正常;否则,就剔除。(这里就可以加上短信报警了)

系统架构图

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>
Nach dem Login kopieren

三、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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

四、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>
Nach dem Login kopieren

重启xinetd

service xinetd restart
Nach dem Login kopieren

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>
Nach dem Login kopieren

注意:在mysql slave另行建立一个具有process和slave_client权限的账号。

作者简介:崔晓辉,网名coralzd,大众网系统管理员,精通网站系统架构、Unix技术。gtalk:coralzd@gmail.com

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

17 Möglichkeiten, den Bluescreen „kernel_security_check_failure' zu beheben 17 Möglichkeiten, den Bluescreen „kernel_security_check_failure' zu beheben Feb 12, 2024 pm 08:51 PM

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.

Auf dem Weg zur überprüfbaren KI: Fünf Herausforderungen formaler Methoden Auf dem Weg zur überprüfbaren KI: Fünf Herausforderungen formaler Methoden Apr 09, 2023 pm 02:01 PM

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

So implementieren Sie SSL-Passthrough in HAProxy So implementieren Sie SSL-Passthrough in HAProxy Mar 20, 2024 am 09:30 AM

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

So deaktivieren Sie Palm Check in Windows 11/10 So deaktivieren Sie Palm Check in Windows 11/10 Feb 19, 2024 pm 09:45 PM

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?

So konfigurieren Sie HAProxy für WebSocket-Verbindungen So konfigurieren Sie HAProxy für WebSocket-Verbindungen Mar 20, 2024 pm 03:51 PM

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

So analysieren Sie die Wiederverwendung von Haproxy-Ports So analysieren Sie die Wiederverwendung von Haproxy-Ports May 29, 2023 am 09:25 AM

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

Interpretation des Keepalived-Gesundheitsprüfungsmechanismus des Linux-Systems Interpretation des Keepalived-Gesundheitsprüfungsmechanismus des Linux-Systems Feb 28, 2024 am 09:52 AM

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,

Was sind die Merkmale von LVS-, Nginx- und HAProxy-Load-Balancern unter Linux? Was sind die Merkmale von LVS-, Nginx- und HAProxy-Load-Balancern unter Linux? May 14, 2023 pm 10:49 PM

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

See all articles