openKylin论坛

 找回密码

LVS技术浅析-配置管理 [复制链接]

                        本文将介绍部署LVS一个最简单的流程;
LVS本身是一个内核模块:ip_vs,位于内核目录net/netfilter/ipvs/下,官方网址:http://www.linuxvirtualserver.org/
从2.4内核开始,linuxkernel已经集成了ipvs模块;因此,当前我们的系统kernel都是支持LVS功能的,无需额外下载;

那么,我们如何操作内核模块ipvs呢?
LVS官方提供了一个应用程序ipvsadm,可用通过ipvsadm的一系列命令和内核ipvs打交道。

1.ipvsadm
ipvsadm程序可以从官网http://www.linuxvirtualserver.org/software/ipvs.html下载,最新版本为ipvsadm-1.26
编译过程中,可能会遇到error,官网已经提供了解决方法:http://kb.linuxvirtualserver.org ... _Enterprise_Linux_6
ipvsadm安装完毕后,简单地配置一个LVS:
vip为10.220.1.8,端口80,调度算法为RR(round-robin);
2台realserver192.168.1.10/11
转发模式为DR
LVS服务器上配置:
  • 添加1个vip
     ipvsadm -A -t 10.220.1.8:80 -s rr

  • 添加2台rs
     ipvsadm -a -t 10.220.1.8:80 -r 192.168.1.10:80 -g
     ipvsadm -a -t 10.220.1.8:80 -r 192.168.1.11:80 -g
  • 查看配置
     ipvsadm -ln
  • 绑定vip到接口网卡eth0

     ip addr add 10.220.1.8/32 dev eth0

RS服务器上配置:
  • 绑定vip到lo网络接口

     ip addr add 10.220.1.8/32 dev lo
     配置完毕,用ip addr list查看;
  • 防止vipmac冲突

     echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore

     echo "2">/proc/sys/net/ipv4/conf/all/arp_announce

ipvsadm虽然可以完成LVS的所有配置,但要线上应用,还有一些不足;

  • LVS down了怎么办?
   LVS一旦down了,则所有流量都会损失;因此,我们需要做好LVS冗余;

  • RS down了怎么办?
   RS down掉后,LVS调度到该RS的流量就会损失;因此,我们需要对RS进行健康监测;
LVS管理软件-keepalived-很好的解决了上述问题,
  • LVS down?-采用VRRP心跳协议,实现LVS主备冗余;
  • RS down? - 提供4/7层健康检测;

我们线上都采用该软件进行LVS配置管理;
keepalived官网:http://www.keepalived.org/,最新版本为1.2.7;
2.keepalived
keepalived主要以配置文件的方式来管理LVS;
默认配置文件为/etc/keepalived/keepalived.conf;
启动方式: keepalived -d -f/etc/keepalived/keepalived.conf;
接下来,我们详细介绍一下keepalived.conf的常用配置选项;
global_defs {
#这个一般不配置,用途不大
}

#下面配置LVS主备冗余

#主备冗余采用VRRP协议,是支持一主多从的协议;

#参见http://en.wikipedia.org/wiki/Virtual_Router_Redundancy_Protocol

vrrp_instance VI_1 {#主LVS配置
    stateMASTER    #该LVS配置为主
    interfaceeth0   #VRRP心跳包从哪块网卡发出
   virtual_router_id 100 #相同VRID的LVS属于同一组,根据优先级选举出一个主
    priority150         #VRRP优先级,值越大优先级越高,最大为255
    advert_int1         #VRRP心跳包的发送周期,单位为s
   authentication{     #认证信息
       auth_type PASS
       auth_pass 1111
    }
    virtual_ipaddress {
  #VRRP心跳内容,VIP地址
       10.2.1.18
       10.2.1.19

   }
}
vrrp_instance VI_2 { #从LVS配置
    stateBACKUP    #该LVS配置为从
    interfaceeth0   #VRRP心跳包从哪块网卡发出
   virtual_router_id 100 #同主
   preempt_delay180    #主从切换的延时时间
    priority100         #优先级值必须小于主
    advert_int1         #同主
   authentication{     #同主
       auth_type PASS
       auth_pass 1111
    }
   virtual_ipaddress {
   #同主
       10.2.1.18
       10.2.1.19

    }
}

#下面配置内核ip_vs信息和健康监测参数;
#如果几个vip对应相同的RS,则建议采用本group配置;这样可以减少健康检查次数virtual_server_groupwww {
    10.2.1.1880   #vip和vport
    10.2.1.1980
}
virtual_server group www {
    delay_loop 3   #RS健康监测周期,单位为s
    lb_algo wrr   #负载均衡调度算法
    lb_kindDR     #转发模式
    protocolTCP   #传输层协议

    real_server192.168.10.10 80 { #rs ip和port
       weight100                #rs权值,可以根据权值分配rs间流量比例
       TCP_CHECK{               #4层健康监测,即TCP
           connect_timeout 7    #4层连接超时时间,单位为s
       }
    }
    real_server192.168.10.11 80 { #rs ip和port
       weight100                #rs权值
       inhibit_on_failure        #rs down时,不删除,而是将weight置为0
       HTTP_GET{               #7层健康监测,即HTTP   
         url{                  
            path/status.html    #http uri
            status_code200      #正确http响应的code
         }
       connect_timeout 7        #4层连接超时时间,单位为s
       nb_get_retry2            #http请求重试次数
       delay_before_retry5      #http重试时间间隔,单位为s
      }
    }
}

                                                                       




楼主
发表于 2013-8-28 17:19:40
回复

使用道具 举报

openKylin

GMT+8, 2024-5-14 16:06 , Processed in 0.020214 second(s), 17 queries , Gzip On.

Copyright ©2022 openKylin. All Rights Reserved .

ICP No. 15002470-12 Tianjin

快速回复 返回顶部 返回列表