zoukankan      html  css  js  c++  java
  • 利用LVS+Keepalived搭建Mysql双主复制高可用负载均衡环境

    应用背景

     MySQL复制(主主,主从...)能在保证数据的备份的同时也能够做读写分离分摊系统压力,但是发生单点故障时,需要手动

    切换到另外一台主机。LVS和Keppalived可以设定一个VIP来实现统一访问入口,实现单点故障时,VIP自动切换至另外一台

    主机上达到高可用效果,同时LVS可以提供多种调度算法来实现负载均衡机制。

    测试环境

    MySQL主主复制,利用Keepalived控制LVS的高可用,在利用LVS的某种调度算法对2台MySQL实现负载均衡。

      

      

    操作步骤

    1. MySQL复制(双主)

      略

    2. 安装LVS和Keepalived(在两台LVS上操作)

    [root@server-8 ~]# yum install epel-release -y
    [root@server-8 ~]# yum install ipvsadm keepalived -y
    [root@server-8 ~]# echo "" > /etc/keepalived/keepalived.conf
    [root@server-8 ~]# vim  /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived
    
    global_defs {
       router_id LVS1              #另外一台就写LVS2
    }
    
    vrrp_instance VI_1 {
        state MASTER                        #指定instance初始状态,当前是主MASTER,另外一节点填BACKUP
        interface eth0                      #请查看网卡名,CentOS6和7命名不一样
        virtual_router_id 51                #VRID,相同VRID为一个组,决定多播MAC地址,重要!主备一致
        priority 100                        #优先级,另一台改为低一点,比如90
        advert_int 1                        #检查间隔
        authentication {
            auth_type PASS                  #认证方式,可以是pass或ha
            auth_pass 1111                  #认证密码
        }
        virtual_ipaddress {
            138.138.82.222                  #VIP
        }
    }
    
    virtual_server 138.138.82.222 3306 {
        delay_loop 6                        #服务轮询的时间间隔
        lb_algo wlr                         #加权最小连接调度算法,LVS调度算法 rr|wrr|lc|wlc|lblc|lblcr|sh|dh|sed|nq
        lb_kind DR                          #LVS集群模式 NAT|DR|TUN,其中DR模式要求负载均衡器网卡必须有一块与物理网卡在同一个网段
        persistence_timeout 50              #会话保持时间
        protocol TCP                        #健康检查协议
    
    #
    === Real Server设置,3306就是MySQL连接端口 ===# real_server 138.138.82.10 3306 { weight 3 #权重 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3306 } } real_server 138.138.82.11 3306 { weight 3 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3306 } } }

    保存,退出;

    另外一台LVS主机的Keepalived配置同上,修改上面的提到的router_id,state,priority值即可,不在赘述;

    接下来启动Keepalived

    [root@server-8 ~]# service keepalived start
    [root@server-9 ~]# service keepalived start
    [root@server-8 ~]# ip a

    [root@server-8 ~]# ipvsadm -ln

    目前VIP只在MASTER上,如果MASTER节点挂了,VIP自动飘到BACKUP节点上;

    3. 配置两台MySQL所需脚本(在两台MySQL上操作)

    [root@server-10 ~]# vim lvs.sh
    #!/bin/bash 
    VIP=138.138.82.222
    case "$1" in
    start)
               echo "start LVS of RealServer DR" 
               /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
               /sbin/route add -host $VIP dev lo:0
               echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
               echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
               echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
               echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
           ;;
    stop)
               /sbin/ifconfig lo:0 down
               echo "close LVS of RealServer DR" 
               echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
               echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
               echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
               echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
               ;;
    
    *)
              echo "Usage: $0 {start|stop}" 
              exit 1
    esac
    exit 0

    保存,退出;  

    启动脚本:

    [root@server-10 ~]# sh lvs.sh start
    [root@server-10 ~]# ip a

    另一台MySQL操作如上(脚本内容一致)。

    [root@server-11 ~]# ip a

    这样,两台mysql会通过各自的loopback接口与这个VIP通信。

     直此,客户端就可以通过统一个接口IP(138.138.82.222)来访问数据了。

    关于LVS的10种调度算法介绍

    官网:http://www.linuxvirtualserver.org/docs/scheduling.html

    参考:https://blog.csdn.net/scape1989/article/details/21085659

    结束.

  • 相关阅读:
    Max直接输出gif的脚本
    MaxScript获取材质缩略图的方法
    关于Max导出插件的七七八八
    Max2013脚本工具的乱码问题
    MaxScript中获取Skin的骨骼的方式
    C\C++ Dll >C# >MaxScript通过C#调用C++写的Dll
    Unity3d的着色器
    半夜睡不着,爬起来把shaderX里的车漆搬到了unity3d里
    MaxScript保存剪贴板里的图像
    MaxScript通过Ole操作Phtoshop的范例,将几张图按图层合并为psd
  • 原文地址:https://www.cnblogs.com/ding2016/p/8964778.html
Copyright © 2011-2022 走看看