1,环境

VMWare10, CentOS6.3

2,LVS DR网络规划

所有机器都只需要一张网卡,给Director的eth0网卡起个别名eth0:1即VIP的值;给RealServer的lo网卡起个别名lo:0,地址指向VIP

VIP: 虚拟IP,终端用户在浏览器端输入VIP,Director通过lvs调度算法将请求转给Real Server

RIP: Real Server的IP

3,Director配置

3.1,lvs软件安装

检查内核是否加载了ipvs模块:

# lsmod | grep ip_vs

如果没有加载,则手动加载:

# modprobe ip_vs

安装ipvsadm

sudo yum install ipvsadm

3.2,配置网卡

# setup

setup之后最终效果如下:

网卡eth0: (使用VMware NAT模式连接网络)

ip : 192.168.22.128

mask: 255.255.255.0

gateway: 192.168.22.2(VMware NAT的网关IP)

网卡eth0别名: eth0:1 (别名是通过后面的脚本来配置)

ip: 192.168.22.222 (VIP)

mask: 255.255.255.0

设置Director路由转发

net.ipv4.ip_forward=1

3.3,ipvsadm命令、启动脚本

ipvsadm命令

1, 添加/编辑集群服务

-A|E -t|u|f vip:port -s SCHEDULE_METHOD

A|E: 添加|编辑

-t|u|f: tcp|udp|firewall

vip:port: 集群服务

-s: 指定调度算法(默认wlc)wlc | wrr | rr

2, 删除集群服务

-D -t|u|f vip:port

3, 添加/编辑Real Server

-a|e -t|u vip:port -r rip:port -g|i|m -w weight

-a|e: 添加|修改realserver

-t|u: tcp|udp

vip:port 同上

-r rip:port: 指定Real Server的ip及服务端口

-g|i|m: 指定lvs模型, g: 默认gateway直接路由(director routing); i: internet turn隧道; m: nat地址伪装

-w weight: 指定此Real Server的权重

4, 删除realserver

-d -t|u vip:port -r rip:port

5, 查看当前的规则

-L -n --stats/rate

6, 清空规则

-C

7, 保证机器重启依然生效

service ipvsadm save

编写一个shell脚本,避免每次都输入命令:

director.sh


#!/bin/bash
#description: Config director
VIP=192.168.22.222
RIP1=192.168.22.131
RIP2=192.168.22.132
case "$1" in
start)
#**配置别名保存vip, vip只跟自己通信**
ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
route add -host $VIP dev eth0:1 #如果目标是vip,则通过eth0:1出去。
echo 1 > /proc/sys/net/ipv4/ip_forward #打开路由转发
/sbin/iptables -F #清空iptables,iptables与ipvsadm不能同时用
/sbin/iptables -Z #重置iptables
/sbin/ipvsadm -C #清空ipvsadm
ipvsadm -A -t $VIP:80 -s wrr
ipvsadm -a -t $VIP:80 -r $RIP1:80 -w 1 -g
ipvsadm -a -t $VIP:80 -r $RIP2:80 -w 1 -g
echo "ipvsadm start ok"
;;
stop)
ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 down
echo 0 > /proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
echo "ipvsadm stoped"
;;
status)
isrunning=`ipvsadm -L -n | grep $VIP`
if [ ! "$isrunning" ]; then
echo "ipvsadm is stoped..."
else
echo "ipvsadm is running..."
ipvsadm -L -n
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0

start: sh director.sh start

stop: sh director.sh stop

status: sh director.sh status

4,Real Server配置

4.1, 配置网卡

这里只把Real Server 1的配置列出来,Real Server 2配置步骤与此相同。

# setup

setup之后最终效果如下:

网卡eth0: (使用VMware NAT模式连接网络)

ip: 192.168.22.131

mask: 255.255.255.0

gateway: 192.168.22.2(VMware NAT的网关IP)

4.2, 安装web服务

安装nginx/apache/...,步骤省略

安装完后启动web服务

查看服务是否启动

# netstat -tnlp

4.3, 启动脚本

用脚本完成对lo网卡的别名操作:

director.sh


VIP=192.168.22.222
case "$1" in
start)
/sbin/ifconfig lo down
/sbin/ifconfig lo up
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
echo "realserver start ok"
;;
stop)
/sbin/ifconfig lo:0 down
/sbin/route del $VIP >/dev/null 2>&1
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo "realserver stoped"
;;
status)
islothere=`/sbin/ifconfig lo:0 | grep $VIP`
isrothere=`netstat -rn | grep "lo" | grep $VIP`
if [ ! "$islothere" -o ! "$isrothere" ]; then
echo "LVS-DR real server stopped."
else
echo "LVS-DR real server running."
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0

start: sh realserver.sh start

stop: sh realserver.sh stop

status: sh realserver.sh status

5, 测试

至此LVS NAT环境搭建完成,我们来测试一下:

在浏览器中输入VIP来访问:

http://192.168.22.222/index.html

使用linux提供的并发测试命令来测试lvs调度情况:

ab -c 100 -n 1000 http://192.168.22.222/index.html

可以修改lvs调度算法

ipvsadm -E -t 192.168.22.222:80 -s wrr

ipvsadm -E -t 192.168.22.222:80 -s rr

查看lvs调度情况

ipvsadm -L -n --stats|rate

LVS DR模型的更多相关文章

  1. lvs dr 模型配置详解

    前期准备: 两台服务器 note01(lvs服务器) note02(real sever) 1 首先在note01配置子网卡: ifconfig eth0: :2意思是eth0的子接口,随便一个数字就 ...

  2. LVS DR模型RS端修改配置脚本

    #!/bin/bash vip=x.x.x.x in start) > /proc/sys/net/ipv4/conf/all/arp_ignore > /proc/sys/net/ipv ...

  3. LVS简单实现NAT&DR模型

    LVS:Linux Virtual Server  一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org. 现在LVS已经是Linux标准内核的一部分 ...

  4. 负载均衡集群之LVS的DR模型详解(Diretor Routing)

    LVS的默认模型:默认模型DR DR模型原理图--> 在讲DR模型要点之前,需要了解网络的相关知识: 接收的报文拆解顺序:帧(MAC)-->数据包(IP)-->数据报文(port) ...

  5. LVS的DR模型配置

    LVS的DR模型配置 介绍 下图为DR模型的通信过程,图中的IP不要被扑结构中的IP迷惑,图里只是为了说明DR的通信原理,应用到本例中的拓扑上其工作原理不变. 拓扑结构 服务器 IP地址 角色 Srv ...

  6. LVS负载均衡器DR模型的实现

    概述: 在大规模互联网应用中,负载均衡设备是必不可少的一个节点,源于互联网应用的高并发和大流量的冲击压力,我们通常会在服务端部署多个无状态的应用服务器和若干有状态的存储服务器(数据库.缓存等等) 一. ...

  7. LVS之NAT模型、DR模型配置和持久连接

    前言:继LVS概述,本篇实现NAT模型和DR模型下的负载均衡. NAT模型: LVS-NAT基于cisco的LocalDirector.VS/NAT不需要在RealServer上做任何设置,其只要能提 ...

  8. LVS跨网段DR模型

    客户端IP地址:172.16.8.147 路由器服务器IP地址:172.16.8.167内网IP地址:192.168.1.3 一.将客户端的网关修改为路由服务器IP地址 vim ifcfg-ens33 ...

  9. LVS nat模型+dr模型

    nat模型 在 rs1 和 rs2  安装httpd  并配置测试页,启动 [root@rs1 ~]# yum install httpd -y[root@rs1 ~]# echo "thi ...

随机推荐

  1. knockout 绑定 jquery ui datepicker (转)

    ko.bindingHandlers.datepicker = { init: function(element, valueAccessor, allBindingsAccessor) { //in ...

  2. bzoj3196

    平衡树系列终于完结,撒花 裸的树套树,扔代码跑 ; ..] of longint; son:..,..] of longint; a,root:..*] of longint; i,n,m,x,y,k ...

  3. tap,touch,touchstart,事件与click事件的区别

    根据源码所见, 移动端为了将将单击事件更加灵敏,所以现在的JQM,ST...框架都将JS单击事件封装成tap,或者touch或者touchstart事件, 其实现本质是将click触发多次,以打成移动 ...

  4. [转] 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽

    字符串模式匹配算法——BM.Horspool.Sunday.KMP.KR.AC算法一网打尽 转载自:http://dsqiu.iteye.com/blog/1700312 本文内容框架: §1 Boy ...

  5. 解决angular的post请求后SpringMVC后台接收不到参数值问题的方法

    这是我后台SpringMVC控制器接收isform参数的方法,只是简单的打出它的值: @RequestMapping(method = RequestMethod.POST) @ResponseBod ...

  6. angularjs的事件 $broadcast and $emit and $on

    angularjs的事件 $broadcast and $emit and $on <!DOCTYPE html> <html> <head> <meta c ...

  7. 【 D3.js 高级系列 — 5.0 】 颜色

    颜色是作图不可少的概念,常用的标准有 RGB 和 HSL,D3 提供了创建颜色对象的方法,能够相互转换和插值. RGB色彩模式是通过对红(Red).绿(Green).蓝(Blue)三个颜色通道相互叠加 ...

  8. 【转】用Pthread创建线程的一个简单Demo

    一.我们直接在COCOS2D-X自带的HelloWorld工程中添加代码.首先将Pthread的文件包含进来包括lib文件.在HelloWorld.cpp中引入头文件和库. #include &quo ...

  9. Button的四种Click响应方法

    Button用得挺多的,在这整理了下它的事件处理方法,发现实现方法还不少,我比较喜欢第二种,你呢,最常用哪一种? 实现一: Button bt_Demo = (Button)findViewById( ...

  10. 【译】 AWK教程指南 1前言

    前面的话: 这几天写了一个程序,在同一个目录里生成了很多文件,需要统计其中部分文件的总大小,发现经常用到的ls.du等命令都无济于事,我甚至都想到了最笨的方法,写一个脚本:mkdir一个新目录,把要统 ...