开始安装LVS

1)下载相关软件包

mkdir -p /home/tools/
cd /home/tools/
wget http://www.linuxvirtualserver.org/software/kernel-26/ipadm-1.26.tar.gz

2)安装LVS命令

lsmod |grep ip_vs
cat /etc/redhat-release
uname -r
ln -s /usr/src/kernels/2.6.18- /usr/src/linux
特别注意:
1)此ln命令的路径要和uname -r 输出结果内核版本对应。
2)如果没有/usr/src/kernels/2.6,是因为缺少kernel-devel-2.6.18软件包。可通过yum install kernel-devel -y 安装。
3)ln这个命令也可以不执行,直接指定内核参数编译。

tar zxvf ipvsadm-1.26.tar.gz
make
make install
lsmod |grep ip_vs
提示:
1.此时ipvs模块没有被加载,可以执行ipvsadm命令就会吧ip_vs加载到系统内核或执行命令modprobe ip_vs也可以把ip_vs模块加载到内核。然后再执行lsmod -l |grep ip_vs 应该看见ip_vs模块被列出。

需要安装依赖包
yum install libnl* popt* -y.

-----

负载均衡器配置

配置别名网卡

ifconfig eth0:1 192.168.1.181 netmask 255.255.255.0 up #<=别名的方式

④ 手工执行配置添加LVS服务器并增加两台RS

ipvsadm -C
ipvsadm --set 30  5 60
ipvsadm -A -t 192.168.1.181:80 -s wrr -p 20
ipvsadm -a -t 192.168.1.181:80 -r 192.168.1.178:80 -g -w 1
ipvsadm -a -t 192.168.1.181:80 -r 192.168.1.179:80 -g -w 1

[删除方法]

ipvsadm -D -t 192.168.1.181:80 -s wrr
ipvsadm -d -t 192.168.1.181:80 -r 192.168.1.178:80

[相关参数说明]

ipvsadm -help
--clear  -C  clear the whole table
--add-service -A add virtual service with options
--tcp-service -t service-address service-address is host[:port]
--scheduler -s   scheduler  one of rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq
--add-server -a add real server with options
--real-server -r server-address server-addres s is host(and port)
--masquerading -m masquerading (NAT)
--gatewaying -g gatewaying(direct routing)(default)
--delete-server -d delete real server
--persistent -p [timeout]   persistent server(会话保持功能)
--set tcp tcpfin udp       set connection timeout values
--weight  -w weight  capacity of real server
提示:更多参数请ipvsadm -help自行查看

⑤命令执行过程及检查配置的执行结果

ipvsadm -C
ipvsadm --set 30  5 60
ipvsadm -A -t 192.168.1.181:80 -s wrr -p 20
ipvsadm -a -t 192.168.1.181:80 -r 192.168.1.178:80 -g -w 1
ipvsadm -a -t 192.168.1.181:80 -r 192.168.1.179:80 -g -w 1
ipvsadm -L -n --sort
ipvsadm -d -t 192.168.1.181:80 -r 192.168.1.178:80
ipvsadm -L -n --sort
ipvsadm -a -t 192.168.1.181:80 -r 192.168.1.178:80
ipvsadm -L -n --sort

手工在RS端绑定VIP

ifconfig lo:181.168.1.181 netmask 255.255.255.255 up
route add -host 192.168.1.181 dev lo

每个集群节点的回环接口(lo)设备上被绑定VIP地址(其广播地址是其本身,子网掩码255.255.255.255,采取可变掩码方式把网段划分成只含一个主机地址的目的是避免ip地址冲突)允许LVS-DR集群中的集群节点接收发向该VIP地址的数据包,这会有一个非常严重的问题发生,集群内部的真实服务器将尝试回复来自正在请求VIP客户端的ARP广播,这样所有的真实服务器都将声称自己拥有该VIP地址,这时客户端将直接发送请求数据包到真实服务器上,从而破坏DR集群的方法。因此,必须要抑制真实服务器的ARP广播。

手工在RS端抑制ARP响应

⑦抑制ARP响应方法如下:

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

以RS179为例演示执行过程如下:

ifconfig lo:181 192.168.1.181 netmask 255.255.255.255 up
route add -host 192.168.1.181 dev lo
cat /proc/sys/net/ipv4/conf/lo/arp_ignore
cat /proc/sys/net/ipv4/conf/all/arp_ignore
cat /proc/sys/net/ipv4/conf/all/arp_ignore
cat /proc/sys/net/ipv4/conf/lo/arp_announce

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

arp音质技术参数说明

arp_ignore- INTEGER

0 默认值:

检查手工配置成果

使用http://192.168.1.178{179}(181)

使用脚本配置LVS负载均衡服务器端

#!/bin/bash

. /etc/init.d/functions
VIP=192.168.1.181
SUBNET=eth0:`echo $VIP|cut -d. -f4`
PORT=80
GW=192.168.1.1

#w=3
RIP1=(
        192.168.1.178
     )
#w=1
RIP2=(
        192.168.1.179
     )
IFCONFIG=/sbin/ifconfig
ROUTE=/sbin/route
IPVSADM=/sbin/ipvsadm
ARPING=/sbin/arping

#functions
function usage (){
        local script_name
        script_name=$1
        echo "Usgae : $script_name [ start | stop | restart ]"
        echo ""
        return 1
}

function checkCmd (){
        if [ ! -f $1 ]; then
                echo "Can't find "$1
                return 1
        fi
}

function checkSubnet (){
        $IFCONFIG |grep "$1"|wc -l
}

function ipvsStart (){
        #judge if $SUBNET is exist.
        if [ $(checkSubnet $SUBNET) -ne 0 ]; then
                $IFCONFIG $SUBNET down
        fi
        local rs
        #$IFCONFIG $SUBNET $VIP broadcast $VIP netmask 255.255.255.255 up
        $IFCONFIG $SUBNET $VIP broadcast $VIP netmask 255.255.255.0 up
        #$ROUTE add -host $VIP dev $SUBNET
        $IPVSADM -C
        $IPVSADM -A -t $VIP:$PORT -s wrr -p 60

for ((i=0; i<`echo ${#RIP1[*]}`; i++))
        do
                $IPVSADM -a -t $VIP:$PORT -r ${RIP1[$i]}:$PORT -g -w 1
        done

for ((i=0; i<`echo ${#RIP2[*]}`; i++))
        do
                $IPVSADM -a -t $VIP:$PORT -r ${RIP2[$i]}:$PORT -g -w 1
        done
        rs=$?
        $IPVSADM >/tmp/oldboy.log

# update MAC
     NetIf=$(echo ${SUBNET}|awk -F ":" '{print $1}')
        $ARPING -c 1 -I ${NetIf} -s $VIP $GW >>/tmp/oldboy.log
        [ $rs -eq 0 ] && action "Ipvsadm start." /bin/true
        return $rs
}

function ipvsStop (){
        local rs
     rs=1
        #clean ipvs
     $IFCONFIG $SUBNET down
        $IPVSADM -C
        $IPVSADM -Z
       
        rs=$?
        #$ROUTE del $VIP
     $ARPING -c 1 -I ${NetIf} -s $VIP $GW  >/dev/null 2>&1
        [ $rs -eq 0 ] && action "Ipvsadm stoped." /bin/true
        return $rs
}

main ()
{
     #judge argv num by oldboy
        if [ $# -ne 1 ]; then
                usage $0
        fi

case "$1" in
                start)
                        ipvsStart
                        ;;
                stop)
                        ipvsStop
                        ;;
                restart)
                        ipvsStop
                        ipvsStart
                        ;;
                *)
                        usage $0
                        ;;
        esac
}

#start operating
main $*

开发脚本配置LVS RS真实服务器处理脚本

#!/bin/bash
# description: Config realserver lo and apply noarp
VIP=(
        192.168.1.181
     )

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

case "$1" in
start)
        for ((i=0; i<`echo ${#VIP[*]}`; i++))
        do
           interface="lo:`echo ${VIP[$i]}|awk -F . '{print $4}'`"
           /sbin/ifconfig $interface ${VIP[$i]} broadcast ${VIP[$i]} netmask 255.255.255.255 up
        done
        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
         action "Start LVS of RearServer.by old1boy"
        ;;
stop)
        for ((i=0; i<`echo ${#VIP[*]}`; i++))
        do
            interface="lo:`echo ${VIP[$i]}|awk -F . '{print $4}'`"
            /sbin/ifconfig $interface ${VIP[$i]} broadcast ${VIP[$i]} netmask 255.255.255.255 down
        done
        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
         action "Close LVS of RearServer.by old2boy"
        ;;
*)
        echo "Usage: $0 {start|stop}"
        exit 1
esac

一个脚本同时实现自动剔除和加入RS

CURL方法很不错

#!/bin/bash

PORT="80"
VIP=192.168.1.181

RIP=(
    192.168.1.178
    192.168.1.179
)

function check_url()
{

for ((i=0; i<`echo ${#RIP[*]}`; i++))
do
judge=($(curl -I -s http://${RIP[$i]}|head -1|tr "\r" "\n"))
if [[ "${judge[1]}" == '200' && "${judge[2]}"=='OK' ]]
   then
     if [ `ipvsadm -L -n|grep "${RIP[$i]}"|wc -l` -ne 1 ]
      then
      ipvsadm -a -t $VIP:$PORT -r ${RIP[$i]}:$PORT
     fi

else
      if [ `ipvsadm -L -n|grep "${RIP[$i]}"|wc -l` -eq 1 ]
      then
      ipvsadm -d -t $VIP:$PORT -r ${RIP[$i]}:$PORT
     fi
fi
done
}

while true
do
check_url
sleep 5
done

LVS使用整理(1)的更多相关文章

  1. lvs整理

    LVS是Linux Virtual Server的简写,即Linux虚拟服务器,是一个虚拟的服务器集群系统.通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能.高可用的服务器群集,它具有良 ...

  2. ubuntu 12.04 下LVS的一些搭建心得和资料整理

    最近项目上需要使用到IPVS进行负载均衡,针对外部传来的HTTP请求,分摊到多台服务器上进行处理,所以看了一下这方面的资料,在这里纪录一下. Lvs是基于IP层和内容分发请求的负载均衡方法(所以也可以 ...

  3. 整理LVS架构压力测试工作

    首先,测试环境在模拟环境下进行.     测试环境:1director(apache2.2) + 1realserver(jboss4.2.3GA)+1databaseserver(oracle9i) ...

  4. 整理下.net分布式系统架构的思路

    最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...

  5. LVS工作总结之原理篇–DR模式

    原文地址: http://www.chenqing.org/2012/11/%E3%80%90lvs%E3%80%91lvs%E5%B7%A5%E4%BD%9C%E6%80%BB%E7%BB%93%E ...

  6. Linux负载均衡软件LVS简介

    Linux负载均衡软件LVS LVS集群的体系结构以及特点 1. LVS简介        LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起 ...

  7. Mysql+keeplived+lvs

    最近要做个高可用的mysql.用mysql主主复制方式保证两台数据库的数据一致.结合lvs和keepalived一起使用(keepalived+lvs的设置会再另外一篇文章里写). 搭好环境之后,本人 ...

  8. 浅谈lvs和nginx的一些优点和缺点

    借鉴一些网上资料整理了简单的比较: LVS的负载能力强,因为其工作方式逻辑非常简单,仅进行请求分发,而且工作在网络的第4层,没有流量,所以其效率不需要有过多的忧虑. LVS基本能支持所有应用,因为工作 ...

  9. lvs学习笔记

    本人身为一个网工,最近一直在工作中学习linux的相关知识.前短时间通过自查资料学习了lvs的相关内容,摘录部分整理后和大家分享,内容较多,较琐碎,望见谅!!! LVS 从Linux内核版本2.6起, ...

随机推荐

  1. IOS开发之代码之九宫格

    通过UIScrollView展示图片的时候,如果直接向UIScrollView添加UIImageView,在图片数量比较少的时候是没有问题的,但是当我们添加图片数量非常多的时候,会占用大量的内存,我们 ...

  2. python排序算法的实现-插入

    1.算法: 设有一组关键字{ K 1 , K 2 ,…, K n }:排序开始就认为 K 1 是一个有序序列:让 K 2 插入上述表长为 1 的有序序列,使之成为一个表长为 2 的有序序列:然后让 K ...

  3. BpBinder 转换为 BpCameraService 流程

    interface_cast<ICameraService>(binder) : 其中binder 为IBinder类型,实际为BpBinder interface_cast 定义在IIn ...

  4. Jenkins 安装或更新插件失败

    试试这个插件网址是否可以在网页中打开 http://mirror.xmission.com/jenkins/updates/current/update-center.json   如可以,把这个网址 ...

  5. c#上iOS apns p12文件制作记录

    1.在桌面上建一个"apns_p12"文件夹,所有的保存和生成文件都放在这里 2.从钥匙串中生成CertificateSigningRequest.certSigningReque ...

  6. LoadRunner11.52发布,全新的VTS

    LoadRunner11.52发布,全新的VTShttp://automationqa.com/forum.php?mod=viewthread&tid=2252&fromuid=2 ...

  7. [转]silverlight Datagrid 行上增加ToolTip

    有两种办法: 1. 直接在后台处理在数据绑定后 ,注册LoadingRow 事件this.DataGrid.LoadingRow += new EventHandler<DataGridRowE ...

  8. 用手机地图GPS导航费流量吗?

    如果你的手机带有GPS芯片,那么使用手机导航是不会耗费手机流量的.但是如果你的手机没有GPS芯片,而使用的导航软件又是类似于移动提供的导航服务那样的导航功能,那就耗费手机流量了. 目前,导航软件导航主 ...

  9. SharePoint 2010中重置windows 活动目录(AD)域用户密码的WebPart(免费下载)

    由于SharePoint 2013推出不久,并非所有的企业都会升级到SharePoint 2013的,毕竟升级不是打打补丁这么简单,更多的企业还是使用Sharepoint 2010版本的,因此本人自行 ...

  10. Redis内存数据库在Exchange会议室的应用

    本文论述了现有Exchange会议室应用现状和不足之处,并详细介绍了Redis内存数据库在Exchange会议室的应用,并给出了一种高性能的应用架构及采用关键技术和关键实现过程,最终实现大幅改进系统性 ...