• mysql双主双从读写分离


    架构图
    在这里插入图片描述
    详细内容参考:

    在这里插入图片描述

    结果展示:

    • 178.119.30.16(从)- master

    在这里插入图片描述

    • 178.119.30.17(从)- slave

    在这里插入图片描述
    由上述结果可以看出,产生了主备节点同时抢占VIP的问题(即脑裂问题)

    解决方法:

    #通过配置来指定IP的两台服务器间进行单播通讯
    		# 本地IP地址
            unicast_src_ip 178.119.30.16
            # 对端IP地址
            unicast_peer {
        178.119.30.17
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • master

    vim keepalived.conf

    global_defs {
            router_id LVS_1
            script_user root
    }
    
    vrrp_script check_mysql_port {
            script "/etc/keepalived/check_mysql_port.sh"    # 脚本存放的位置
            interval 2     # 每隔两秒运行上一行脚本
            weight 2
    }
    
    
    vrrp_instance VI_1 {
        # 主机=MASTER;备用机=BACKUP
            state MASTER
        # 该实例绑定的网卡名称
            interface ens192
        # 保证主备节点一致
            virtual_router_id 150
        # 权重,master值 > backup值
            priority 100
        # 主备组播报发送间隔时间1秒
            advert_int 1
    
            unicast_src_ip 178.119.30.16
            unicast_peer {
        178.119.30.17
            }
        	# 认证权限密码,防止非法节点进入
        	authentication {
        auth_type PASS
        auth_pass 1111
            }
        # 虚拟出来的ip,可以有多个(vip)
            virtual_ipaddress {
        178.119.30.18
            }
        # 调用监控脚本
            track_script {
        check_mysql_port
            }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • slave

    vim keepalived.conf

    global_defs {
            router_id LVS_1
            script_user root
    }
    
    vrrp_script check_mysql_port {
            script "/etc/keepalived/check_mysql_port.sh"    # 脚本存放的位置
            interval 2     # 每隔两秒运行上一行脚本
            weight 2
    }
    
    
    vrrp_instance VI_1 {
        # 主机=MASTER;备用机=BACKUP
            state BACKUP
        # 该实例绑定的网卡名称
            interface ens192
        # 保证主备节点一致
            virtual_router_id 150
        # 权重,master值 > backup值
            priority 50  
        # 主i备组播报发送间隔时间1秒
            advert_int 1 
            unicast_src_ip 178.119.30.17
            unicast_peer { 
        178.119.30.16
            }
        # 认证权限密码,防止非法节点进入
            authentication {
        auth_type PASS
        auth_pass 1111
            }       
        # 虚拟出来的ip,可以有多个(vip)
            virtual_ipaddress { 
        178.119.30.18
            }
        # 调用监控脚本
            track_script {
        check_mysql_port 
            }
    }  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    结果展示:

    • 178.119.30.16(从)- master

    在这里插入图片描述

    • 178.119.30.17(从)- slave

    在这里插入图片描述
    VIP 漂移测试

    systemctl stop keepalived
    
    • 1
    • 178.119.30.16(从)- master

    在这里插入图片描述

    • 178.119.30.17(从)- slave

    在这里插入图片描述

  • 相关阅读:
    初识数据结构-B树
    TensorFlow 的基本概念和使用场景
    Spring request工具类
    Python中使用 for 循环来拿遍历 List 的值
    Kafka(一)
    SECS/GEM半导体协议介绍
    基于zk的分布式锁使用及原理分析
    Go 语言基础
    JS操作DOM及CSS
    Linux与Shell学习--shell系列3--变量
  • 原文地址:https://blog.csdn.net/tangsiqi130/article/details/133563931