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

    [记录]ubuntu 12.04下配置LVS-DR模式负载均衡

    公子发表于 2015-07-28 06:29:06
    love 0

    最近折腾的LVS的问题,做个记录!正常是三台以上服务器可以,一台做负载,另外两台做真是服务器,但我手上的环境实际上只有两台,那就意味着其中一台纪要做负载又要做真实服务器。

    首先要检查Linux内核是否支持LVS:

    modprobe -l | grep ipvs
    

    如果输出如下内容,那么就是OK的:
    ipvsadm-kernel-gongzi
    接下来安装ipvsadm管理工具:

    sudo apt-get install ipvsadm
    

    安装成功后执行 ipvsadm 命令,如果看到以下字样就说明安装成功:

    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    

    接下来也别一步一不做了,直接copy我这现成的脚本,改里面的IP,直接用就OK了,简单粗暴!

    操作步骤及脚本

    在LVS服务器上创建一个新的脚本文件 lv-dr.sh,把下面的内容扔进去:

    #!/bin/bash
    ######################
    # data 20150727      #
    # website Gongzi.org #
    ######################
    vip=10.46.239.56
    rs1=10.46.239.50
    rs2=10.46.239.51
    
    #set vip address and add route 
    /sbin/ifconfig bond0:0 $vip broadcast $vip netmask 255.255.255.255 up
    /sbin/route add -host $vip dev bond0:0
    route -n
    
    # update /etc/sysctl.conf
    echo "1" >/proc/sys/net/ipv4/ip_forward
    echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects
    echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects
    echo "1" >/proc/sys/net/ipv4/conf/eth0/send_redirects
    echo "1" >/proc/sys/net/ipv4/conf/bond0/send_redirects
    sysctl -p 
    
    #clear ipvs tables
    ipvsadm -C
    
    #set ipvs
    
    ipvsadm -A -t $vip:8080 -s rr
    ipvsadm -a -t $vip:8080 -r $rs1:8080 -g -w 1
    ipvsadm -a -t $vip:8080 -r $rs2:8080 -g -w 1
    
    #run lvs
    /sbin/ipvsadm
    

    然后修改里面的信息:

    Tips!
    VIP:你的虚拟IP
    rs12:你的真是服务器IP
    以及后面的8080 都是你要负载的端口

    然后到真是服务器中创建一个lvs-rs.sh 的脚本,扔进去以下内容:

    #!/bin/bash
    ######################
    # data 20150727      #
    # website Gongzi.org #
    ######################
    vip=10.46.239.56
    ifconfig lo:0 $vip netmask 255.255.255.255 broadcast $vip up 
    route add -host $vip dev lo:0 
    #echo "0" >/proc/sys/net/ipv4/ip_forward  #这一步是关闭真实服务器的转发功能
    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 
    

    注意:此脚本中的网关要和虚ip一样,掩码不能同于主网卡的(即eth0或1的)
    接下来就可以测试了。

    一些备注说明及常用参数

    以下是ipvs的一些常用命令及参数说明,网上找的,我摘录了几条常用的,供参考:

    -A --add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。
    -E --edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。
    -D --delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。
    -C --clear 清除内核虚拟服务器表中的所有记录。
    -R --restore 恢复虚拟服务器规则
    -S --save 保存虚拟服务器规则,输出为-R 选项可读的格式
    -a --add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
    -e --edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
    -d --delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
    -L|-l --list 显示内核虚拟服务器表
    -Z --zero 虚拟服务表计数器清零(清空当前的连接数量等)
    -t --tcp-service service-address 说明虚拟服务器提供的是tcp 的服务[vip:port] or [real-server-ip:port]
    -u --udp-service service-address 说明虚拟服务器提供的是udp 的服务[vip:port] or [real-server-ip:port]
    -r --real-server server-address 真实的服务器[Real-Server:port]
    -g --gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
    -i --ipip 指定LVS 的工作模式为隧道模式
    -m --masquerading 指定LVS 的工作模式为NAT 模式
    -w --weight weight 真实服务器的权值

    还有其他几种模式,NAT之类的,这里直说DR的,也是性能最好的一种。



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