IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]lvs 搭建详细记录

    mchdba发表于 2016-12-31 20:19:47
    love 0
    LVS集群有DR、TUN、NAT三种配置模式,可以对www服务、FTP服务、MAIL服务等做负载均衡,下面通过搭建www服务的负载均衡实例,讲述基于DR模式的LVS集群配置。


    1 lvs
    [root@gb_pre_lvs_180_54 lvs]# vim lvs-dr-client.sh 


    二、Real server 的配置
       在lvs的DR和TUn模式下,用户的访问请求到达真实服务器后,是直接返回给用户的,而不再经过前端的Director Server,
    因此,就需要在每个Real server节点上增加虚拟的VIP地址,这样数据才能直接返回给用户,增加VIP地址的操作可以通过创建
    脚本的方式来实现,创建文件/etc /init.d/lvsrs,脚本内容如下:
    #!/bin/bash
    VIP=192.168.180.55
    case "$1" in
    start)
    # 通过ipvsadm命令行方式配置LVS
    echo "start LVS real server"
    # 安装IPVS后,就可以配置LVS集群了,首先在Director Server上绑定一个虚拟IP(也叫VIP),此IP用于对外提供服务,执行如下命令:
    /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up


    # 然后给设备eth0:0指定一条路由,执行如下指令:
    /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


    # 使前面的设置的参数生效
    /sbin/sysctl -p
      
    # 此操作是在回环设备上绑定了一个虚拟IP地址,并设定其子网掩码为255.255.255.255,与Director Server上的虚拟IP保持互通,然后禁止了本机的ARP请求。


    ;;
    stop)
    echo "stop LVS real server"
    /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
    ;;
    *)exit 1
    esac




    lvs是通过在keepalived里面启动来着的。


    2 源码安装 ipvsadm
    1 配置ipvsadm,编写启动脚本
    version版本号码
    wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
    tar -xvf ipvsadm-1.26.tar.gz
    cd  ipvsadm-1.26
    make 
    make install


    配置 keepalived 使其生效
    keepalived.conf
    [root@gb_pre_lvs_180_54 ~]# 




    [root@/root/nagios/check_lvs lvs]# pwd
    /usr/local/lvs
    [root@/root/nagios/check_lvs lvs]# cat lvs-dr-server.sh
    #!/bin/bash
     VIP=10.254.3.17
     RIP1=10.254.3.27
     RIP2=10.254.3.28
     PORT=80
    case "$1" in
    start)
    echo "start LVS of DirectorServer"
    #Set the Virtual IP Address
    /sbin/ifconfig em1:1 $VIP broadcast $VIP netmask 255.255.255.255 up
    /sbin/route add -host $VIP dev em1:1
    #Clear IPVS Table
    /sbin/ipvsadm -C
    #Set Lvs
    /sbin/ipvsadm -A -t $VIP:$PORT -s wlc
    /sbin/ipvsadm -a -t $VIP:$PORT -r $RIP1:$PORT -g
    /sbin/ipvsadm -a -t $VIP:$PORT -r $RIP2:$PORT -g
    #Run Lvs
    #/sbin/service ipvsadm start
    /sbin/ipvsadm
    ;;


    stop)
    echo "stop LVS Directorserver"
    /sbin/ifconfig em1:1 down
    /sbin/ipvsadm -C
    #/sbin/service ipvsadm stop
    ;;


    *)
    echo "Usage: $0 {start|stop}"
    exit 1
    esac
    [root@/root/nagios/check_lvs lvs]#










    wget http://www.keepalived.org/software/keepalived-1.2.8.tar.gz
    tar -xvf keepalived-1.2.8.tar.gz
    cd keepalived-1.2.8
    ./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


    配置keepadlived参数
    vim /etc/keepalived/keepalived.conf
    cat /etc/keepalived/keepalived.conf
    ##############################################################
    # global define #
    ##############################################################


    global_defs {
    router_id LVS_PRE_NET_MASTER # 设置lvs的id,在一个网络内应该是唯一的
    }


    vrrp_sync_group VGM {
    group {
    VI_PRE_NET # 设置vrrp组
    }
    }


    ################################################################
    # vvrp_instance define #
    ################################################################


    vrrp_instance VI_PRE_NET {
    state MASTER #设置lvs的状态,报错MASTER和BACKUP两种,必须大写
    interface eth0 #设置对外服务的接口
    lvs_sync_daemon_inteface eth0 #设置lvs监听的接口
    virtual_router_id 16 #设置虚拟路由表示
    priority 180  #设置优先级,数值越大,优先级越高
    advert_int 5 #设置同步时间间隔
    authentication { #设置验证类型和密码
    auth_type PASS
    auth_pass LVSPRENET
    }
    virtual_ipaddress { #设置lvs vip
    192.168.180.55
    }
    }
    ##############################################################
    # virtual server setting #
    ##############################################################


    virtual_server 192.168.180.55 80 {
    delay_loop 6 #健康检查时间间隔
    lb_algo wlc #负载均衡调度算法
    lb_kind DR #负载均衡转发规则


    protocol TCP #协议
    real_server 192.168.180.50 80 {
    weight 100 #设置权重
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
    connect_port 80
    }
    }
    real_server 192.168.180.53 80 {
    weight 100
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
    connect_port 80
    }
    }
    }


    #虚拟IP地址
    virtual_server 192.168.180.55 443 {
    delay_loop 6
    lb_algo wlc
    lb_kind DR


    #2台真实IP地址
    protocol TCP
    real_server 192.168.180.50 443 {
    weight 100
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
    connect_port 443
    }
    }
    real_server 192.168.180.53 443 {
    weight 100
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
    connect_port 443
    }
    }
    }




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


    测试
    1)        首先测试各个readserver,确定各个readserver都能正常访问,测试realserver.sh脚本,看启动后 能不能绑定lvs vip,停止后能不能去除绑定的vip
    2)        测试lvs能否进行负载均衡转发,利用ipvsadm命令查看,如果想只当当前的 请求转发到哪个服务器去了,可以用ipvsadm加选项来查看,其完整形式为:ipvsadm –lcn | grep 192.168.1.115
    3)        停掉主lvs看lvs backup是否接管!


    [root@gb_pre_lvs_180_54 software]# ipvsadm
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  192.168.180.55:http wlc
      -> 192.168.180.50:http          Route   100    1          0         
      -> 192.168.180.53:http          Route   100    0          0         
    TCP  192.168.180.55:https wlc
      -> 192.168.180.50:https         Route   100    0          0         
      -> 192.168.180.53:https         Route   100    0          0         
    [root@gb_pre_lvs_180_54 software]#



沪ICP备19023445号-2号
友情链接