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

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Kernelsecuritycheckfailure (échec de la vérification du noyau) est un type de code d'arrêt relativement courant. Cependant, quelle qu'en soit la raison, l'erreur d'écran bleu rend de nombreux utilisateurs très angoissés. Laissez ce site présenter soigneusement 17 types de solutions aux utilisateurs. 17 solutions à l'écran bleu kernel_security_check_failure Méthode 1 : Supprimer tous les périphériques externes Lorsqu'un périphérique externe que vous utilisez est incompatible avec votre version de Windows, l'erreur d'écran bleu Kernelsecuritycheckfailure peut se produire. Pour ce faire, vous devez débrancher tous les périphériques externes avant d'essayer de redémarrer votre ordinateur.

L'intelligence artificielle est un système informatique qui tente d'imiter l'intelligence humaine, y compris certaines fonctions humaines intuitivement liées à l'intelligence, telles que l'apprentissage, la résolution de problèmes, la pensée et l'action rationnelles. Interprété au sens large, le terme IA recouvre de nombreux domaines étroitement liés tels que l’apprentissage automatique. Les systèmes qui font largement appel à l’IA ont des impacts sociaux importants dans des domaines tels que la santé, les transports, la finance, les réseaux sociaux, le commerce électronique et l’éducation. Cet impact social croissant a également entraîné une série de risques et de préoccupations, notamment des erreurs dans les logiciels d’intelligence artificielle, des cyberattaques et la sécurité des systèmes d’intelligence artificielle. Par conséquent, la question de la vérification des systèmes d’IA, et le sujet plus large de l’IA digne de confiance, ont commencé à attirer l’attention de la communauté des chercheurs. « IA vérifiable » a été confirmée

Maintenir l’équilibre de la charge des serveurs Web est l’une des mesures clés pour éviter les temps d’arrêt. L'utilisation d'un équilibreur de charge est une approche fiable, HAProxy étant un choix très apprécié. À l'aide de HAProxy, vous pouvez configurer avec précision la méthode d'équilibrage de charge et prendre en charge le relais SSL pour garantir la sécurité de la communication entre le client et le serveur. Il commence par explorer l'importance de la mise en œuvre du relais SSL dans HAProxy, suivi d'une discussion détaillée des étapes requises pour implémenter cette fonctionnalité et d'un exemple pour une meilleure compréhension. Qu'est-ce que le relais SSL ? Pourquoi c'est important? En tant qu'équilibreur de charge, HAProxy accepte et distribue la charge circulant vers vos serveurs Web sur les serveurs configurés. La répartition de la charge est ciblée sur les appareils clients et

Cet article vous guidera pour désactiver la fonction PalmCheck sur un PC Windows 11/10. PalmCheck est une fonctionnalité conçue pour empêcher que des touches accidentelles de la paume ou d'autres touches soient reconnues par erreur comme une saisie lors de la saisie sur le clavier. Cela se trouve généralement dans les paramètres du pavé tactile, en particulier sur les appareils tactiles comme les ordinateurs portables. Parfois, vous souhaiterez peut-être désactiver PalmCheck ou une fonctionnalité similaire pour vous offrir plus de flexibilité dans le contrôle de la saisie dans les situations où vous devez utiliser à la fois le clavier et le pavé tactile. Dans cet article, nous expliquerons comment désactiver la fonction PalmCheck sur un PC Windows 11/10, afin que vous puissiez mieux répondre aux besoins lorsque vous jouez ou exécutez des applications. Quel est le P sur le pavé tactile ?

Auteur de cet article : Spark (membre de l'équipe de sécurité intranet Ms08067) 1. Présentation Haproxy est un logiciel proxy d'équilibrage de charge hautes performances développé en langage C. Il fournit des proxys d'application TCP et http. Il est gratuit, rapide et fiable. Semblable à frp, il peut être exécuté à l'aide d'un fichier de configuration + d'un serveur. Avantages : les applications de terrain d'entreprise à grande échelle prennent largement en charge les proxys à quatre couches (couche de transport) et les proxys à sept couches (couche d'application) et peuvent configurer de manière flexible les fenêtres de routage. La liste de contrôle d'accès cygwin (peut être multiplateforme) (AccessControlLists, ACL) est une liste de commandes appliquées à l'interface du routeur.

Les applications WebSocket permettent une communication bidirectionnelle en temps réel entre le client et le serveur. Même si des connexions WebSocket sont utilisées, des mécanismes efficaces de gestion du trafic sont toujours nécessaires pour éviter une surcharge du serveur, entraînant une interruption et une indisponibilité du service. HAProxy est un équilibreur de charge gratuit et fiable qui fonctionne également comme proxy inverse. En configurant HAProxy pour prendre en charge les connexions WebSocket, vous pouvez mieux utiliser les caractéristiques de transmission de données en temps réel des WebSockets et réduire la charge du serveur. Cet article fournira des étapes détaillées pour configurer HAProxy pour prendre en charge les connexions WebSocket. Guide étape par étape sur la configuration de HAProxy pour les connexions WebSocket via WebSoc

Lors de l'équilibrage de charge, un outil de vérification de l'état est généralement déployé pour garantir que le serveur réel backend est normal et peut fournir des services. Pour éviter la situation dans laquelle le serveur réel backend est en panne ou le service est indisponible, l'équilibreur de charge distribuera la demande au serveur réel. realserver. Impact sur l’accès global de l’entreprise. Il existe de nombreuses façons d'effectuer des vérifications de l'état et vous pouvez déployer des scripts vous-même. Bien entendu, la plus couramment utilisée est le service keepalived. Il existe trois méthodes de vérification de l'état pour keepalived, tcp_check, http_check et misc_check. Brief de configuration de Keepalived keepalived comporte trois modules principaux, à savoir le noyau,

Caractéristiques de LVS : 1. Forte résistance à la charge, utilisant la technologie d'équilibrage de charge IP, uniquement pour la distribution, de sorte que LVS lui-même ne génère pas beaucoup de trafic ; 2. Bonne stabilité et fiabilité, et dispose d'un plan de sauvegarde à chaud parfait (tel que : LVS + keepalived ; ) 3. Il a un large éventail d'applications et peut équilibrer la charge de toutes les applications ; 4. Il ne prend pas en charge le traitement régulier et ne peut pas séparer les dynamiques et les statiques. Quatre algorithmes couramment utilisés : 1.rr : round-robin, alloué tour à tour aux serveurs back-end ; 2.wrr : round-robin pondéré, alloué en fonction de la charge du serveur back-end ; allouée au serveur avec le moins de connexions établies Ci-dessus 4.wlc : connexion avec le plus petit poids, allouée en fonction de la capacité de traitement du serveur back-end. Vous pouvez utiliser ipvsadm–p (pe
