MySQL配置Keepalived读写分离(mysql读写分离部署)

MySQL配置Keepalived读写分离(mysql读写分离部署)

浏览次数:
信息来源: 用户投稿
更新日期: 2026-07-21
文章简介

在数据库一主多从架构中,若所有查询的流量都切入主节点,会造成服务器拥塞,因此需要将业务一致性要求不是特别高的应用的查询流量分散到从库,以实现负载均衡 keepalived是以VRRP协议为实现基础的

2025阿里云双十一服务器活动

在数据库一主多从架构中,若所有查询的流量都切入主节点,会造成服务器拥塞,因此需要将业务一致性要求不是特别高的应用的查询流量分散到从库,以实现负载均衡

keepalived是以VRRP协议为实现基础的,VRRP全称VirtualRouterRedundancyProtocol,即虚拟路由冗余协议

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的

  • lvs是四层负载均衡,也就是说建立在OSI模型的第四层——传输层之上
  • 传输层上有TCP/UDP,lvs支持TCP/UDP的负载均衡
  • 因为LVS是四层负载均衡,因此它相对于其它高层负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的
  • lvs的转发可以通过修改IP地址实现(NAT模式)
  • lvs的转发还可以通过修改直接路由实现(DR模式)
  • 因LVS缺乏后端状态检测,于是配合Keepalived使用会拥有不错的效果

    DB

    ip

    备注

    Master

    10.243.95.3

    MySQL配置Keepalived读写分离,mysql读写分离部署

    Slave1

    10.243.95.4

    keepalivedBackup

    Slave2

    10.243.95.5

    10.243.95.101

    读VIP

    yum-yinstallnet-snmpunzip-ukeepalived_pack.zipcdkeepalived_pack/rhel6/;rpm-ivhipvsadm-1.26-2.el6.x86_64.rpmrpm-ivhkeepalived-1.2.7-3.el6.x86_64.rpm

    两个节点的配置大体相似,仅需修改优先级和角色

    global_defs{??notification_email{???smtp_server192.168.200.1??smtp_connect_timeout30??router_idLVS_DEVEL}vrrp_scriptchk_mha{??script"/root/mha/scripts/check_manager.sh/root/mha"??interval5??weight-40??fall?3??rise?1???}vrrp_instanceVI_1{??修改2.主节点优先级需大于从节点??priority90??advert_int1??authentication{auth_typePASSauth_pass1111??}?#VIP??virtual_ipaddress{10.243.95.101??}??notify_master"/root/mha/scripts/write_keepalived_state.sh/root/mha/logMASTER"??notify_backup"/root/mha/scripts/write_keepalived_state.sh/root/mha/logBACKUP"}

    virtual_serverfwmark2{delay_loop10lb_algorrlb_kindDR#??persistence_timeout2protocolTCPreal_server10.243.95.53306{weight3TCP_CHECK{connect_timeout10nb_get_retry3??delay_before_retry3connect_port3306}}real_server10.243.95.43306{weight3TCP_CHECK{connect_timeout10nb_get_retry3??delay_before_retry3connect_port3306}}real_server10.243.95.33306{weight3TCP_CHECK{connect_timeout10nb_get_retry3??delay_before_retry3connect_port3306}}???}

    因LVS-keepalived需同时部署在RS服务器,存在一些问题

    现象分析:请求经过keepalivedMASTER节点后,会根据负载均衡策略分发到配置文件中的RS服务器,此时会包含BACKUP节点,若分发至BACKUP节点会发生二次轮询分发给MASTER节点,造成循环

    解决方案:通过设置fwmark参数,当数据包发送给VIP且mac地址不属于任何LVS节点会通过iptables进行标记,带标记的包才会进入LVS进行负载均衡处理

    在Slave1上执行,MAC地址为数据库Master的MACiptables-tmangle-IPREROUTING-d10.243.95.101-ptcp-mtcp--dport3306-mmac!--mac-sourceFA:16:3E:30:DF:12-jMARK--set-mark0x2

    net.ipv4.conf.all.send_redirects=0net.ipv4.conf.default.send_redirects=0net.ipv4.conf.eth0.send_redirects=0net.ipv4.conf.lo.arp_ignore=1net.ipv4.conf.lo.arp_announce=2net.ipv4.conf.all.arp_ignore=1net.ipv4.conf.all.arp_announce=2

    标签:
    如何进行目标群体分析(目标群体怎么分析)
    « 上一篇
    香港cn2vps国外(香港cn2服务器怎么样)
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!