LVS简单实现NAT&DR模型
LVS:Linux Virtual Server
一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。
现在LVS已经是Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。
LVS是LB集群的一种软件实现方案,类似的有haproxy,nginx,ats(apache traffice server),perbal等。
硬件实现方法:F5公司的BIG-IP(中高端60W+一台),Citrix的Netscaler,A10公司的A10等。
LVS的组成:ipvs/ipvsadm
ipvs:工作于内核空间netfilter中的INPUT链上的程序,可根据用户定义的集群实现请求转发
ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的real server
ipvsadm命令的用法:由于此命令的选项很多,可归纳为两类,
①管理集群服务:
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
/*
-A:添加
-E:修改
-t:TCP
-u:UDP
-f:firewall mark
service-address:
-t,tcp,vip:port
-u,udp,vip:port
-f,fwm,mark
-s scheduler:调度方法,默认是wlc
*/
ipvsadm -D -t|u|f service-address
// -D:删除
②管理集群上的RS:
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
/*
-a:增加
-e:修改
-r server-address:RS的地址,rip[:port]
-g:gateway,dr(默认)
-i:ipip,tun
-m:masquerade,nat
*/
③查看
ipvsadm -L|l [options]
/*
-n,--numeric:数字格式显示IP和PORT
--exact:精确值
-c,--connection:显示IPVS连接
--stats:统计数据
--rate:速率
*/
④保存和重载
//保存:
ipvsadm -S > /PATH/TO/SOME_RULE_FILE
ipvsadm-save > /PATH/TO/SOME_RULE_FILE
//重载:
ipvsadm -R < /PATH/TO/SOME_RULE_FILE
ipvsadm-restore < /PATH/TO/SOME_RULE_FILE
⑤清空
//清空规则
ipvsadm -C
//清空计数器
ipvsadm -Z [-t|u|f service-address]
LVS-NAT模型实现
Director:双网卡
外网地址:192.168.1.102(VIP)
内网地址:172.18.100.6(DIP)
RS1:装载httpd做测试
内网地址:172.18.100.11
RS2:装载httpd做测试
内网地址:172.18.100.12
部署:
(1)关闭防火墙,Selinux;RS1,RS2安装httpd,并写好测试页面,开启服务,确保服务可用。
(2)Director关闭防火墙,Selinux;清空iptables规则,开启内核ipv4_forward功能
echo 1 >> /proc/sys/net/ipv4/ip_forward
(3)安装ipvsadm命令行工具
yum -y install ipvsadm
(4)设定集群规则
ipvsadm -A -t 192.168.1.102:80 -s rr
ipvsadm -a -t 192.168.1.102:80 -r 172.18.100.11 -m -w 1
ipvsadm -a -t 192.168.1.102:80 -r 172.18.100.12 -m -w 1
(5)查看指定的规则
ipvsadm -Ln

(6)启动另外一个主机开始测试,效果如下:

总结:
LVS-NAT设计要点:
(1)VIP和RIP必须在同一IP网络,RIP的网关要指向DIP
(2)支持端口映射
LVS-NAT的缺点:
在LVS/NAT的集群系统中,请求和响应的数据报文都需要通过负载调度器(Director),当真实服务器(RealServer)的数目在10台和20台之间时,负载调度器(Director)将成为整个集群系统的新瓶颈。
LVS-DR模型实现
Director:
eno16777736:192.168.1.102(DIP)设置DIP目的:如果是用了keepalived等工具做HA或者Load Balance,则在健康检查时需要用到DIP。
eno16777736:0:192.168.1.100(VIP)
RS1:192.168.1.103
RS2:192.168.1.104
部署:
(1)关闭防火墙,Selinux;RS1,RS2安装httpd,并写好测试页面,开启服务,确保服务可用。
(2)Director上设置VIP:
ifconfig eno16777736:0 192.168.1.100 netmask 255.255.255.255
route add -host 192.168.1.100 dev eno16777736:0 /*
lvs/dr里,director的vip的netmask 没必要一定设置为255.255.255.255,也不需要再去
route add -host $VIP dev eth0:0
director的vip本来就是要像正常的ip地址一样对外通告的,不要搞得这么特殊.
*/
(3)Director上设置规则:
ipvsadm -A -t 192.168.1.100:80 -s wrr
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.103 -g -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.104 -g -w 2
(4)RS1和RS2的设置:主要是调整内核参数和物理接口lo的地址绑定,通过脚本实现:
#!/bin/bash
#
VIP=$2
case "$1" in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
route add -host $VIP dev lo:0
;;
stop)
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
route del $VIP
;;
*)
echo "Tips:$0{start|stop}"
;;
esac
(5)用另外一个主机去访问VIP,可以看到效果了
总结:
核心要点
(1)调度器与实际服务器都有一块网卡连在同一物理网段上。
(2)RIP和DIP一般在同一网络(因为转发是在数据链路层实现的,必须保证MAC不会变),且RIP的网关不能指向DIP;但两者未必和VIP在同一网络。
(3)各RS需先设置内核参数,再设置物理接口lo的VIP和路由。
(4)不支持端口映射
(5)Director的ip_forward不需要开启转发,因为Director和RS在同一网络。
(6)Director的VIP一般设置在网卡的别名上,如eth0:0或eno16777736:0上
LVS简单实现NAT&DR模型的更多相关文章
- 关于LVS中默认的DR模型图
虽然常用,但是关于DR模型最大的一个缺点就是Director和RS必须在同一个网络中,通过交换机连接,中间不能有路由
- LVS之NAT模型、DR模型配置和持久连接
前言:继LVS概述,本篇实现NAT模型和DR模型下的负载均衡. NAT模型: LVS-NAT基于cisco的LocalDirector.VS/NAT不需要在RealServer上做任何设置,其只要能提 ...
- LVS nat模型+dr模型
nat模型 在 rs1 和 rs2 安装httpd 并配置测试页,启动 [root@rs1 ~]# yum install httpd -y[root@rs1 ~]# echo "thi ...
- LVS负载均衡器DR模型的实现
概述: 在大规模互联网应用中,负载均衡设备是必不可少的一个节点,源于互联网应用的高并发和大流量的冲击压力,我们通常会在服务端部署多个无状态的应用服务器和若干有状态的存储服务器(数据库.缓存等等) 一. ...
- LVS NAT,DR,TUN三种负载原理
负载均衡简单介绍 用通俗的话来说负载均衡,就是通过不同的调度机制将用户的请求分派到后端不同的服务器.缓解服务器的请求压力,实现负载均衡的方案有多种,下面简单说说了解的几种方式: DNS 负载:利用DN ...
- LVS的DR模型配置
LVS的DR模型配置 介绍 下图为DR模型的通信过程,图中的IP不要被扑结构中的IP迷惑,图里只是为了说明DR的通信原理,应用到本例中的拓扑上其工作原理不变. 拓扑结构 服务器 IP地址 角色 Srv ...
- lvs dr 模型配置详解
前期准备: 两台服务器 note01(lvs服务器) note02(real sever) 1 首先在note01配置子网卡: ifconfig eth0: :2意思是eth0的子接口,随便一个数字就 ...
- 负载均衡集群之LVS的DR模型详解(Diretor Routing)
LVS的默认模型:默认模型DR DR模型原理图--> 在讲DR模型要点之前,需要了解网络的相关知识: 接收的报文拆解顺序:帧(MAC)-->数据包(IP)-->数据报文(port) ...
- LVS跨网段DR模型
客户端IP地址:172.16.8.147 路由器服务器IP地址:172.16.8.167内网IP地址:192.168.1.3 一.将客户端的网关修改为路由服务器IP地址 vim ifcfg-ens33 ...
随机推荐
- git上传到阿里云code
一.在阿里云code(kelude)注册用户,新建项目.二.安装Git后使用GitBash生产ssh key:(https://zhidao.baidu.com/question/1303468264 ...
- Oracle分区表!
Oracle 数据库分区表的创建和操作 摘要:在大量业务数据处理的项目中,可以考虑使用分区表来提高应用系统的性能并方便数据管理,本文详细介绍了分区表的使用. 在大型的企业应用或企业级的数据库应用中,要 ...
- android 绑定spinner键值对显示内存地址的问题
初学android,估计是.net学傻了,觉得android好麻烦. 绑定下拉菜单Spinner键值对. 参照这篇文章,地址:http://blog.csdn.net/shouliang52000/a ...
- Maven基础笔记,原理
1.什么是Maven ①Maven是一款实现自动化构建的工具软件. ②构建:从源程序→程序的执行 清理→编译→测试→报告→打包→部署→执行 ③构建工具:Make→Ant→Maven→Gradle... ...
- 项目中用到RouteTable,发布到IIS7中无法访问
项目中用到RouteTable,发布到IIS7中,访问之后没有任何反应,google半天终于找到了解决方法,就是要把iis的“HTTP重定向”功能打开
- window.returnValue跨域传值问题[转]
主页面用window.showModalDialog的时候,如果直接打开其它系统的页面,这时候别人的页面在window.returnValue=1;这样返回值的时候,主页面是取不到返回值的,原因就是因 ...
- .net framework 3.5sp1 安装不成功
主要还是进程中有程序和正在安装的 framework 3.5sp1有冲突.打开任务管理器,关闭所有360进程和与Framework有关的进程.竟然安装成功了,折腾了3.4天的问题,就这么解决了.
- Tableau 地图无法识别怎么办
Tableau地图是一个很优秀的工具,可以选择城市或者省份作为单位来显示地图. 前几天做了一个省份的感觉很好,今天用城市做单位居然有些城市识别不了,其中包括贵阳和宿迁. 换了拼音之后贵阳能够识别了 ...
- 思考力——提升企业竞争力的核心因素
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 · 思考力就是竞争力:在这个科技飞跃进步的时代,很多事物是我们未曾经历也难以预料的. ...
- iPad 控件 UIPopoverPresentationController 使用 iPhone可用
UIPopoverController 在iOS9之后被废弃了,,, iOS8 新控件UIPopoverPresentationController可运用在iphone和iPad上,使用基本同 UIP ...