利用keepalived和haproxy配置mysql的高可用负载均衡

Centos下Mysql+Keepalived双主热备高可用环境完整部署记录(个人珍藏版) 本篇文章详细记录了Centos下Mysql+Keepalived双主热备高可用环境完整部署过程,可作为线上长期的实操手册。在此分享,希望能帮助到有用到的朋友。 立即下载

实验系统:CentOS 6.6_x86_64(2.6.32-504.30.3.el6.x86_64)

实验前提:防火墙和selinux都关闭

实验说明:本实验共有4台主机,IP分配如拓扑

实验软件:keepalived-1.2.19  haproxy-1.5.14  mariadb-10.0.20

下载地址:http://pan.baidu.com/s/1bnnYiMr

实验拓扑:

    

一、安装mariadb

  1.在两台数据库服务器安装:

复制代码
tar xf mariadb-10.0.20-linux-x86_64.tar.gz  -C /usr/local/
cd /usr/local/
ln -sv mariadb-10.0.20-linux-x86_64 mysql
useradd -r mysql
mkdir -pv /mydata/data
chown -R mysql.mysql /mydata/data/
cd mysql/
chown -R root.mysql .
scripts/mysql_install_db --user=mysql --datadir=/mydata/data/
cp support-files/my-large.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
复制代码

  2.配置主主复制:

    19.74:

复制代码
vim /etc/my.cnf 
----------------------------------------------->
[mysqld]
server-id = 1
datadir = /mydata/data
log-bin = /mydata/data/mysql1-bin
binlog_format = ROW
relay_log = /mydata/data/relay-log
auto-increment-increment = 2
auto-increment-offset = 1
sync_binlog = 1
sync_master_info = 1
sync_relay_log = 1
sync_relay_log_info = 1
复制代码

    19.76:

复制代码
vim /etc/my.cnf 
----------------------------------------------->
[mysqld]
server-id = 2
datadir = /mydata/data
log-bin = /mydata/data/mysql2-bin
binlog_format = ROW
relay_log = /mydata/data/relay-log
auto-increment-increment = 2
auto-increment-offset = 2
sync_binlog = 1
sync_master_info = 1
sync_relay_log = 1
sync_relay_log_info = 1
复制代码

  3.创建具有复制权限的用户:

    19.74:

service mysqld start
/usr/local/mysql/bin/mysql
------------------------------------------>
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'master'@'192.168.19.76' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

    19.76:

service mysqld start
/usr/local/mysql/bin/mysql
------------------------------------------>
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'master'@'192.168.19.74' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

  4.查看二进制位置:

    19.74:

SHOW MASTER LOGS;

    

    19.76上使用相同命令:

    

  5.配置双主:

    19.74:

CHANGE MASTER TO MASTER_HOST='192.168.19.76',MASTER_USER='master',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql2-bin.000001',MASTER_LOG_POS=1112;
START SLAVE;

    19.76:

CHANGE MASTER TO MASTER_HOST='192.168.19.74',MASTER_USER='master',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql1-bin.000001',MASTER_LOG_POS=1112;
START SLAVE;

二、编译安装haproxy

  1.在19.66和19.79上编译安装haproxy:

tar xf haproxy-1.5.14.tar.gz 
cd haproxy-1.5.14
make TARGET=linux2628 ARCH=x86_64        //根据自己主机设定
make install SBINDIR=/usr/sbin/ MANDIR=/usr/share/man/ DOCDIR=/usr/share/doc/

  2.提供启动脚本:

复制代码
vim /etc/init.d/haproxy
--------------------------------------------------->
#!/bin/sh
#
# haproxy
#
# chkconfig:   - 85 15
# description:  HAProxy is a free, very fast and reliable solution \
#               offering high availability, load balancing, and \
#               proxying for TCP and  HTTP-based applications
# processname: haproxy
# config:      /etc/haproxy/haproxy.cfg
# pidfile:     /var/run/haproxy.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

exec="/usr/sbin/haproxy"
prog=$(basename $exec)

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

cfgfile=/etc/haproxy/haproxy.cfg
pidfile=/var/run/haproxy.pid
lockfile=/var/lock/subsys/haproxy

check() {
    $exec -c -V -f $cfgfile $OPTIONS
}

start() {
    $exec -c -q -f $cfgfile $OPTIONS
    if [ $? -ne 0 ]; then
        echo "Errors in configuration file, check with $prog check."
        return 1
    fi

    echo -n $"Starting $prog: "
    # start it up here, usually something like "daemon $exec"
    daemon $exec -D -f $cfgfile -p $pidfile $OPTIONS
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    # stop it here, often "killproc $prog"
    killproc $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    $exec -c -q -f $cfgfile $OPTIONS
    if [ $? -ne 0 ]; then
        echo "Errors in configuration file, check with $prog check."
        return 1
    fi
    stop
    start
}

reload() {
    $exec -c -q -f $cfgfile $OPTIONS
    if [ $? -ne 0 ]; then
        echo "Errors in configuration file, check with $prog check."
        return 1
    fi
    echo -n $"Reloading $prog: "
    $exec -D -f $cfgfile -p $pidfile $OPTIONS -sf $(cat $pidfile)
    retval=$?
    echo
    return $retval
}

force_reload() {
    restart
}

fdr_status() {
    status $prog
}

case "$1" in
    start|stop|restart|reload)
        $1
        ;;
    force-reload)
        force_reload
        ;;
    check)
        check
        ;;
    status)
        fdr_status
        ;;
    condrestart|try-restart)
        [ ! -f $lockfile ] || restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}"
        exit 2
esac
<---------------------------------------------------
chkconfig --add haproxy
chkconfig haproxy on
chmod +x /etc/init.d/haproxy
复制代码

  3.提供配置文件:

复制代码
mkdir /etc/haproxy
mkdir /var/lib/haproxy
useradd -r haproxy vim
/etc/haproxy/haproxy.cfg ----------------------------------------------------------------------->
global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats defaults mode tcp //haproxy运行模式 log global option dontlognull option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 600 //最大连接数

listen stats //配置haproxy状态页
    mode http
    bind :6677 //找一个比较特殊的端口
    stats enable
    stats hide-version //隐藏haproxy版本号
    stats uri     /haproxyadmin?stats //一会用于打开状态页的uri
    stats realm   Haproxy\ Statistics //输入账户密码时的提示文字
    stats auth    admin:admin //用户名:密码
    stats admin if TRUE //开启状态页的管理功能

frontend main *:3306 //这里为了实验方便,使用3306端口 default_backend mysql //后端服务器组名 backend mysql balance     leastconn //使用最少连接方式调度
    server m1 192.168.19.74:3306 check port 3306 maxconn 300
    server m2 192.168.19.76:3306 check port 3306 maxconn 300
复制代码

   4.启动日志:

复制代码
vim /etc/rsyslog.conf 
----------------------------------------------------->
# Provides UDP syslog reception                //去掉下面两行注释,开启UDP监听
$ModLoad imudp
$UDPServerRun 514

local2.*             /var/log/haproxy.log      //添加此行
<-----------------------------------------------------
service rsyslog restart
复制代码

   5.启动测试haproxy:

service haproxy start
netstat -tnlp

 

  6.在19.74上创建远程登录账号:

GRANT ALL ON *.* TO 'jason'@'192.168.19.%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

  7.分别在19.66和19.79上登录mysql,若都能连接成功则继续往下:

yum -y install mysql                            //如果没有mysql客户端则运行此命令
mysql -ujason -p123456 -h192.168.19.66 //在19.66上登录
mysql -ujason -p123456 -h192.168.19.79 //在19.79上登录

三、安装keepalived

  1.在19.66和19.79上编译安装keepalived:

复制代码
tar xf keepalived-1.2.19.tar.gz 
cd keepalived-1.2.19
./configure --prefix=/usr/local/keepalived --sbindir=/usr/sbin/ --sysconfdir=/etc/ --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/kernels/2.6.32-504.30.3.el6.x86_64/      //内核版本换成自己主机的
make && make install
chkconfig --add keepalived
chkconfig keepalived on
复制代码

   2.在19.66上配置:

复制代码
vim /etc/keepalived/keepalived.conf
----------------------------------------------------->
! Configuration File for keepalived

global_defs { //此段暂时略过,下同
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_haproxy { script "/etc/keepalived/chk.sh" //检查haproxy的脚本 interval 2 //每两秒检查一次 } vrrp_instance VI_1 { state BACKUP //定义为BACKUP节点 nopreempt //开启不抢占 interface eth0 virtual_router_id 51 priority 100 //开启了不抢占,所以此处优先级必须高于另一台 advert_int 1 authentication { auth_type PASS auth_pass abcd } virtual_ipaddress { 192.168.19.150 //配置VIP }
    track_script {
        chk_haproxy //调用检查脚本
    }
notify_backup
"/etc/init.d/haproxy restart" notify_fault "/etc/init.d/haproxy stop" }
复制代码

  3.在19.79上配置:

复制代码
vim /etc/keepalived/keepalived.conf
----------------------------------------------------->
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_haproxy { script "/etc/keepalived/chk.sh" interval 2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 99 advert_int 1 authentication { auth_type PASS auth_pass abcd } virtual_ipaddress { 192.168.19.150 }
    track_script {
        chk_haproxy
    } notify_backup
"/etc/init.d/haproxy restart" notify_fault "/etc/init.d/haproxy stop" }
复制代码

  4.在两台机器上创建chk.sh文件:

复制代码
vim /etc/keepalived/chk.sh
------------------------------------------------>
#!/bin/bash
#
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
       /etc/init.d/keepalived stop
fi
<------------------------------------------------
chmod +x /etc/keepalived/chk.sh
复制代码

  5.在19.66和19.79上进行测试:

service keepalived start

    此处两台主机均配置为BACKUP,因此哪台先运行keepalived,VIP就在哪台上。我这里刚开始VIP运行在19.66上,然后进行连接测试:

    

mysql -ujason -p123456 -h192.168.19.150
------------------------------------------->
CREATE DATABASE bokeyuan;

    后端数据库服务器抓包:

    

    停掉19.66的keepalived服务,让VIP转移到19.79上,再进行测试:

service keepalived stop                   //停掉19.66的keepalived服务
mysql -ujason -p123456 -h192.168.19.150
------------------------------------------->
SHOW DATABASES;

    后端数据库服务器抓包:

    

  6.在浏览器打开http://192.168.19.150:6677/haproxyadmin?stats,打开haproxy状态页:

    在19.74上关闭mysql服务,可以看到haproxy对于后端服务器的检测是很迅速的:

service mysqld stop

  7.额外说明:

    继续之前的实验,将19.66上的keepalived服务再次启动,可以发现,VIP仍然在19.79上,这就是之前为什么要配置不抢占的原因。如果按照正常的配置,将19.66配置为MASTER,当它重启keepalived服务后,则一定会将VIP抢回。但实际上我们并不希望这样,因为19.79仍在正常工作,19.66没有理由去抢夺资源,造成没必要的资源切换。实验演示就到这里,谢谢大家!

Keepalived+HAProxy实现MySQL高可用负载均衡的配置 主要介绍了keepalived+haproxy实现MySQL高可用负载均衡的配置方法,通过这两个软件可以有效地使MySQL脱离故障及进行健康检测,需要的朋友可以参考下 立即下载

相关推荐

告别手动烧录!给STM32H750外挂Flash制作Keil专用下载算法(保姆级避坑指南)

本文详细介绍了为STM32H750外挂Flash开发Keil专用下载算法的全过程,从原理到实战操作,特别针对QSPI Flash的配置和优化提供了保姆级避坑指南。通过定制下载算法,开发者可以告别手动烧录,实现一键下载到外部Flash,大幅提升开发效率。

weixin_42567497的博客 252

keepalived + HAProxy + mysql高可用

本次搭建目的是使用 haproxy + keepalived + mysql(双主复制) 搭建 mysql 高可用集群,使用 keepalived 监控 haproxy 和 mysql 状态,如果 haproxy 服务异常则将 VIP 漂移到另外的机器上。参考:MySQL 双主复制参考:HAProxy 安装HAProxy 学习下面是本次试验使用的配置文件信息 4. 安装 keepalived 这里直接使用 yum 安装 4.1 修改配置文件 主备基本差不多,主要注意 这三个参数 这里有一个问题, 能不能配

D的博客 3756

Tessent ATPG进阶:解锁多种Fault Model的工程实践与选型指南

本文深入探讨Tessent ATPG中多种Fault Model的工程实践与选型策略,涵盖Stuck-at、Transition、Bridge等核心模型的应用场景与配置技巧。通过实际案例解析,展示如何组合不同Fault Model提升芯片测试覆盖率,特别针对汽车电子、超低功耗芯片等复杂场景提供专业解决方案。

weixin_30219613的博客 200

Haproxy+Keepalived+MySQL高可用均衡负载部署

一、安装主从MySQL 1. 按照Linux-rpm安装MySQL步骤完成MySQL安装; 2. 修改启动的配置文件 (1)复制/usr/share/mysql路径下的my-default.cnf文件或my-medium.cnf文件至/etc目录 (2)修改配置文件: server-id = 91 #指定服务器ID thread_concurrency = 4 # log-bin

每天进步一点点 6955

BIOS硬件监控实战:如何手动读取IT8738芯片的温度与风扇数据(附代码)

本文深入探讨了如何绕过操作系统和HWMonitor等监控软件,直接通过寄存器级操作读取IT8738超级I/O芯片的硬件监控数据。文章提供了从动态定位EC空间、构建底层读写函数到解码传感器寄存器映射的完整实战指南,并附有C语言代码示例,帮助开发者理解BIOS硬件监控的底层原理,适用于定制硬件开发与故障诊断。

weixin_29192211的博客 111

别再只怪贴片厂了!从MLCC内部裂纹,看懂物料质量与工艺应力的博弈

本文深入分析了MLCC内部裂纹的失效原因,提供了从裂纹形态学到生产全流程的失效风险地图的完整分析框架。通过实战案例和检测技术组合,帮助工程师精准锁定MLCC失效背后的真凶,优化物料质量和工艺应力管理。

weixin_33122947的博客 293

haproxy+keepalived mysql_HAProxy+keepalived MySQL负载均衡

环境:vip 192.168.0.233mysql1 192.168.0.227:3306mysql2 192.168.0.230:33061. 监控脚本编写(mysqlrep_status.sh)#!/bin/bash## /opt/phpdba/keepalived/etc/keepalived/mysqlrep_status.sh## This script checks if a my...

weixin_36369605的博客 303

NTC热敏电阻选型快速指南

NTC(Negative Temperature Coefficient Thermistor)负温度系数热敏电阻器,是由锰Mn,镍Ni,铜Cu,一氧化碳Co等烧结而成的氧化物。其电阻值随温度的升高而减小,即具有复温度系数,故被称为负温度系数热敏电阻。本文对热敏电阻的应用场景,结构特点和选型参数进行总结。

fydar的博客 1297

mysql haproxy keepalived_利用keepalived和haproxy配置mysql的高可用负载均衡

利用keepalived和haproxy配置mysql的高可用负载均衡实验系统:CentOS 7.5实验前提:防火墙和selinux都关闭实验说明:本实验共有4台主机,IP分配如拓扑实验软件:keepalived  haproxy-1.5.19  mariadb实验拓扑:一:安装MySql(在两个mysql节点上都配置)1:安装mariadb[root@localhost ~]# systemct...

weixin_39866867的博客 329

工商银行数据智能架构实践

工商银行大数据平台技术创新与实践摘要(149字): 工商银行构建了企业级大数据云基础设施,形成包含批量计算、流计算、联机分析等核心能力的技术架构。平台创新性地实现流批一体处理,将个人储蓄存款监测时效提升至分钟级;通过实时数仓技术将报送时效缩短至1-5分钟;融合内外部数据构建风控模型,债券违约预警准确率达100%。平台还支撑了"码上赢"精准营销和空间数据服务等创新应用,未来将向存算分离、实时数仓和云数智融合方向演进,持续提升数据价值转化能力。

银行信息系统应用架构详解 541

第二节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 - Python Flask 后端开发详解(附源码)

大家好,我是cuiwin!本节内容,我们从零开始开发基于Python(Flask)的后端项目,对接Vue Vben Admin(vben5)。登录mysql数据库执行: 创建数据库。

cuiwin的专栏 2270

haproxy配置mysql_利用keepalived和haproxy配置mysql的高可用负载均衡

实验系统:CentOS 6.6_x86_64(2.6.32-504.30.3.el6.x86_64)实验前提:防火墙和selinux都关闭实验说明:本实验共有4台主机,IP分配如拓扑实验软件:keepalived-1.2.19  haproxy-1.5.14  mariadb-10.0.20下载地址:http://pan.baidu.com/s/1bnnYiMr实验拓扑:一、安装mariadb1....

weixin_33067503的博客 395

深度揭秘!用 DeepSeek 打造超智能电商客服系统全流程

摘要:本文围绕使用 DeepSeek 开发电商智能客服展开详细教程。先介绍前期准备,包括了解 DeepSeek、获取 API 权限与搭建开发环境。接着阐述数据收集预处理,结合电商业务逻辑实现商品与订单信息查询。还提及优化性能的方法,如模型微调、多轮对话管理和错误处理。然后说明了基于 Web 和云平台的部署方案。最后强调持续监控和改进的重要性,通过设置监控指标、收集分析用户反馈来优化系统,助力开发者打造高效电商智能客服。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 7816

keepalived+docker haproxy配置mysql的高可用负载均衡

环境 VMware虚拟机1: 192.168.1.39 VMware虚拟机2: 192.168.1.40 keepalived-1.2.19 MySQL5.7.25 docker1.13.1 安装keepalived(两台机器都要安装) 安装keepalived记录 docker安装haproxy(两台机器都要安装) docker安装haproxy 配置主主复制 keepalived和haprox...

wade1010的专栏 1921

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

mycat vs mysql proxy_mycat+haproxy+keepalived搭建高可用负载均衡mysql集群

keepalived-2.0.5haproxy-1.8.12Mycat-server-1.6.5主机1:ip192.168.1.165 安装keepalived、haproxy、Mycat主机2:ip192.168.1.111 安装keepalived、haproxy、Mycatvip:192.168.1.180keepalived与haproxy需安装在同一台机器上运作理解:主机1与主机2上的k...

weixin_33201531的博客 417

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

HAProxy+Keepalived和MyCat实现MySQL数据库的高可用、负载均衡和读写分离

四、安装配置Keepalived(haproxy+keepalived1、haproxy+keepalived2)三、安装配置HAProxy(haproxy+keepalived1、haproxy+keepalived2)2、重启MySQL服务(MySQL主1、MySQL从1、MySQL从2)(1)连接haproxy的VIP(虚拟IP)查看数据(客户端)(1)连接haproxy查看数据(客户端)3、创建复制专用用户(MySQL主1)(2)连接mycat查看数据(客户端)(1)安装mysql客户端(客户端)

2402_88627342的博客 975

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Haproxy+keepalived代理mysql主主

Haproxy+keepalived代理mysql主主 主机:分别配置mysql,haproxy,keepalived 主:192.168.98.8 备:192.168.98.6 Haproxy相关配置 [root@localhost ~]# vim /usr/local/haproxy/haproxy.cfg global log 127.0.0.1 local3 全局日志配置,local3是日志设备 maxconn 10240 最大

weixin_45377978的博客 933

对于高可用的 mysql的haproxy mycat 配置文件1

Keepalived的作用是检测服务器的状态,如果有一台服务器宕机,或工作出现故障,Keepalived将检测到, 并将有故障的服务器从系统中剔除,同时使用其它服务器代替该服务器的工作,当服务器工作 正常后 Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是 修复故障的服务器。

weixin_39786293的博客 126

MySQL 高可用

MySQL 高可用(High Availability)是指通过冗余设计,确保数据库服务在单节点故障、网络中断或硬件损坏等异常情况下,仍能持续对外提供服务,同时保证数据一致性。其核心目标是实现 “零停机、零数据丢失” 的业务连续性。

2301_80376513的博客 1674
上一篇: keepalived+mysql实现双主高可用
下一篇: 命令所对应的程序包
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值