zoukankan      html  css  js  c++  java
  • LVS+keepalived

    LVS+keepalived负载均衡实战

           ---------------------这里非常感谢田逸老师的文档,在我学习lvs的时候给了我很大的帮助!

    一、为什么要使 用负载均衡技术?

    1、系统高可用性

    2、  系统可扩展性

    3、  负载均衡能力

    LVS+keepalived能很好的实现以上的要求,LVS提 供负载均衡,keepalived提供健康检查,故障转移,提高系统的可用性!采用这样的架构以后 很容易对现有系统进行扩展,只要在后端添加或者减少realserver,只要更改lvs的 配置文件,并能实现无缝配置变更!

    二、LVS+Keepalived介绍

    1、  LVS

    LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。目前有三种IP负 载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。

    2、  keepalived

    Keepalived  是运行在lvs 之上,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败 切换,提高系统的可用性

     

    三、LVS+keepalived负载均衡架构图

      

    四、LVS+keepalived的安装和配置

    1.          配置环境

                  System OS:CentOS release 5.4

                  Software:ipvsadm-1.24.tar.gz, keepalived-1.1.19.tar.gz

    2.          信息列表

    名称

    IP

     LVS-Master

    192.168.1.112

     LVS-BACKUP

    192.168.1.113

     LVS-VIP

    192.168.1.115

     Realserver1

    192.168.1.105

     Realserver2

    192.168.1.103

    Realserver3

    192.168.1.104

    3.          安装lvs

    分别在backup lvs和master lvs上安装

    wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

    ln -s /usr/src/kernels/2.6.18-164.el5-i686/ /usr/src/linux

    tar zxvf ipvsadm-1.24.tar.gz

    cd ipvsadm-1.24

    make && make install

    4.          安装keepalived

    分别在backup lvs和master lvs上安装

    wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz
    tar zxvf keepalived-1.1.19.tar.gz
    cd keepalived-1.1.19
    ./configure --prefix=/usr/local/keepalived
    make 
    make install
    cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
    cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
    mkdir /etc/keepalived

    5.          配置keepadlived

    LVS-Master的配置文件如下

    [root@linux5 ~]# cat /etc/keepalived/keepalived.conf

    global_defs {

    notification_email {

                   jimo291@gmail.com    #email 通知

            }

            notification_email_from jimo291@gmail.com

            smtp_server 127.0.0.1

            smtp_connect_timeout 30

            router_id LVS1          # 设置lvs的id,在一个网络内应该是唯一的

    }

    vrrp_sync_group test {           #设置vrrp组

    group {

            loadbalance

    }

    }

    vrrp_instance loadbalance {

            state MASTER       #设置lvs的状态,报错MASTER和BACKUP两种,必须大写

            interface eth0     #设置对外服务的接口

            lvs_sync_daemon_inteface eth0   #设置lvs监听的接口

            virtual_router_id 51                      #设置虚拟路由表示

            priority 180            #设置优先级,数值越大,优先级越高

            advert_int 5           #设置同步时间间隔

    authentication {                    #设置验证类型和密码

            auth_type PASS

            auth_pass 1111

    }

    virtual_ipaddress {                #设置lvs vip

            192.168.1.115

    }

    }

    virtual_server 192.168.1.115 80 {

            delay_loop 6          #健康检查时间间隔

            lb_algo rr               #负载均衡调度算法

            lb_kind DR            #负载均衡转发规则

            #persistence_timeout 20  #设置会话保持时间,对bbs等很有用

            protocol TCP                #协议

            real_server 192.168.1.105 80 {

            weight 3                #设置权重

            TCP_CHECK {

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

    }

    }

            real_server 192.168.1.103 80 {

            weight 3

            TCP_CHECK {

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

    }

    }

            real_server 192.168.1.104 80 {

            weight 3

            TCP_CHECK {

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

    }

    }

    }

    LVS-backup的配置文件如下

    global_defs {

    notification_email {

                   jimo291@gmail.com

            }

            notification_email_from jimo291@gmail.com

            smtp_server 127.0.0.1

            smtp_connect_timeout 30

            router_id LVS2

    }

    vrrp_sync_group test {

    group {

            loadbalance

    }

    }

    vrrp_instance loadbalance {

            state BACKUP

            interface eth0

            lvs_sync_daemon_inteface eth0

            virtual_router_id 51

            priority 150

            advert_int 5

    authentication {

            auth_type PASS

            auth_pass 1111

    }

    virtual_ipaddress {

            192.168.1.115

    }

    }

    virtual_server 192.168.1.115 80 {

            delay_loop 6

            lb_algo rr

            lb_kind DR

            #persistence_timeout 20

            protocol TCP

            real_server 192.168.1.105 80 {

            weight 3

            TCP_CHECK {

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

    }

    }

            real_server 192.168.1.103 80 {

            weight 3

            TCP_CHECK {

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

    }

    }

            real_server 192.168.1.104 80 {

            weight 3

            TCP_CHECK {

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

    }

    }

    }

           

    6.          Realserver的配置

    三台客户端的脚本都一样!

    cat /etc/rc.d/init.d/realserver.sh

    #!/bin/bash

    # description: Config realserver lo and apply noarp

    SNS_VIP=192.168.1.115

    /etc/rc.d/init.d/functions

    case "$1" in

    start)

           ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

           /sbin/route add -host $SNS_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

           sysctl -p >/dev/null 2>&1

           echo "RealServer Start OK"

           ;;

    stop)

           ifconfig lo:0 down

           route del $SNS_VIP >/dev/null 2>&1

           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 "RealServer Stoped"

           ;;

    *)

           echo "Usage: $0 {start|stop}"

           exit 1

    esac

    exit 0

    7.          测试

    1)         首先测试各个readserver,确定各个readserver都能正常访问,测试realserver.sh脚本,看启动后 能不能绑定lvs vip,停止后能不能去除绑定的vip

    2)         测试lvs能否进行负载均衡转发,利用ipvsadm命令查看,如果想只当当前的 请求转发到哪个服务器去了,可以用ipvsadm加选项来查看,其完整形式为:ipvsadm –lcn | grep 192.168.1.115

    3)         停掉主lvs看lvs backup是否接管!

    4)         更详细信息请查看日志,tail -f /var/log/messages

  • 相关阅读:
    mysqldump 导出数据库为DBname的表名为Tname的表结构 导出数据库的所有表的表结构
    mysqldump 备份某张表 Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions,
    nfs missing codepage or helper program, or other error
    date 增加一个小时 减少一个小时
    mysqldump 备份单个数据库
    mysql删除账户
    怎么删除某个用户的所有帖子?
    mongodb删除重复数据
    ReSharper2018破解详细方法
    激活windows和office
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/6846594.html
Copyright © 2011-2022 走看看