zoukankan      html  css  js  c++  java
  • Redis系列四(keepalived+lvs搭建负载均衡)

      

      1.安装Keepalived(主备服务器都要安装)

      10.8.80.218  主服务器

      10.8.80.217  备服务器  

      10.8.80.200  虚拟IP

    $ wget http://www.keepalived.org/software/keepalived-1.2.0.tar.gz
    $ tar -zxvf keepalived-1.2.0.tar.gz
    $ cd keepalived-1.2.0
    $ ./configure --prefix=/usr/local/keepalived
    $ make && make install

      文件Copy

    $ cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
    $ cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
    $ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    $ mkdir -p /etc/keepalived/
    $ cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

      keepalived.conf配置如下:

    10.8.80.218主服务器:

    global_defs {
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 101
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            10.8.80.200
        }
    }
    
    virtual_server 10.8.80.200 6379 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
        nat_mask 255.255.255.0
        protocol TCP
    
        real_server 10.8.80.218 6379 {
            weight 1
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
        }
        real_server 10.8.80.217 6379 {
            weight 1
             connect_timeout 3
             nb_get_retry 3
             delay_before_retry 3
        }
    }

    有几个地方解释一下:

     state MASTER :表示是主服务器

     priority 101    : 主的权重要高于从

     virtual_ipaddress :对外提供的虚拟IP

     lb_algo rr :    LVS有8种调度算法:

      1. 轮叫(Round Robin)
        调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

      2. 加权轮叫(Weighted Round Robin)
        调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

      3. 最少链接(Least Connections)
        调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载

      4. 加权最少链接(Weighted Least Connections)
        在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

      5. 基于局部性的最少链接(Locality-Based Least Connections)
        "基于局部性的最少链接" 调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器 是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用"最少链接"的原则选出一个可用的服务 器,将请求发送到该服务器。

      6. 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)
        "带复制的基于局部性最少链接"调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个 目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务 器组,按"最小连接"原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按"最小连接"原则从这个集群中选出一 台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的 程度。

      7. 目标地址散列(Destination Hashing)
        "目标地址散列"调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

      8. 源地址散列(Source Hashing)
        "源地址散列"调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空

    lb_kind :LVS的3种包转发模式:

    NAT(网络地址映射)、IP Tunneling(IP隧道)、Direct Routing(直接路由)
    NAT: Net Address Translation
    原理:通过网络地址转换,调度器(Load Balancer)重写请求报文的目标地址,根据预设的算法,将请求分配给后端的真是服务器;真实服务器响应给Load Balancer;在返回给客户端;(由于请求和响应都要经过LoadBalance,所以Load Balance有性能瓶颈)
    IP Tunneling:
    原理:Load Balance 把请求报文通过IP隧道 转发给真实服务器,真实服务器直接返回给客户端。
    Direct Routing:
    DR通过改写报文的MAC地址,将请求发送给真实服务器,真实服务器直接返回给客户端。要求Load Balance和真实服务器在同一个网段上。

    protocol TCP: 采用TCP/UDP协议

    real_server:    物理服务器

    10.8.80.217从服务器:

    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 10
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            10.8.80.200
        }
    }
    
    virtual_server 10.8.80.200 6379 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
        nat_mask 255.255.255.0
        protocol TCP
    
        real_server 10.8.80.218 6379 {
            weight 1
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
        }
        real_server 10.8.80.217 6379 {
            weight 1
             connect_timeout 3
             nb_get_retry 3
             delay_before_retry 3
        }
    }

    配置基本和主服务器一样,要注意的是state 是BACKUP。

      2.安装配置ipvsadm

      1.下载ipvsadm

    # wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
    # ln -s /usr/src/kernels/2.6.32-279.el6.i686//usr/src/linux/
    # tar zxvf ipvsadm-1.26.tar.gz
    # cd ipvsadm-1.26
    # make && make install

      2.开启路由转发
    # vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1
    # sysctl -p

      3.添加ifcfg-eth:0文件

    拷贝ifcfg-eth0文件,名称为ifcfg-eth0:0,然后编辑ifcfg-eth0:0将文件中的IPADDR修改为VIP,DEVICE设置为“eth0:0

    设置完成后重新启动network服务(service network restart)

      4.在ipvsadm添加配置

     
    ipvsadm -C  
    ipvsadm -A -t 10.8.80.200:6379 -s rr  
    ipvsadm -a -t 10.8.80.200:6379 -r 10.8.80.222 -g  
    ipvsadm -a -t 10.8.80.200:6379 -r 10.8.80.221 -g  

    几点说明一下:

      -C:清除虚拟内核服务器表中记录

      -A: 添加虚拟服务器

      -s:使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是:wlc

      -a:-add-server    在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器

      -r:   真实的服务器

      -g:--gatewaying      指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)

      

      3.配置物理Redis服务器

      添加sh脚本,脚本内容如下:

    VIP = 10.8.80.200
     /etc/rc.d/init.d/functions
    case $1 in
    start)
            echo "Start Realserver"
            /sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
            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)
            echo "Stop Realserver"
            /sbin/ifconfig lo:0 down
            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

      然后使用sh命令执行。

      4.在Master和Backup上启动keepalived:

    cd /etc/init.d/keepalived
    ./keepalived start

      启动redis客户端,输入ipvsadm -L --stats 查看调用情况

     

  • 相关阅读:
    1024X768大图 (Wallpaper)
    (Mike Lynch)Application of linear weight neural networks to recognition of hand print characters
    瞬间模糊搜索1000万基本句型的语言算法
    单核与双核的竞争 INTEL P4 670对抗820
    FlashFTP工具的自动缓存服务器目录的功能
    LDAP over SSL (LDAPS) Certificate
    Restart the domain controller in Directory Services Restore Mode Remotely
    How do I install Active Directory on my Windows Server 2003 server?
    指针与指针变量(转)
    How to enable LDAP over SSL with a thirdparty certification authority
  • 原文地址:https://www.cnblogs.com/LoveJerryZhang/p/4402875.html
Copyright © 2011-2022 走看看