AI 助理
备案 控制台
开发者社区 开发与运维 文章 正文

LVS-DR配置

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

LVS-DR 模式网络拓扑图:

wKiom1fFLOuDltTdAAE4vpmYUDg715.png


LVS-DR 工作原理:

1、客户端向VIP发出请求,请求报文中源IP为CIP,目标IP为VIP,源MAC为客户端的MAC,目标MAC为LVS调度器的MAC(Director)

2、LVS调度器接收到请求后,修改了请求报文中的目标MAC地址(Director会根据算法将请求报文中的目标MAC地址,修改成指定的RS的MAC地址)。并将请求进行广播。

3、RS接受到广播后,拆开报文,发现目标MAC地址是自己,于是开始响应请求。并直接将响应请求发送到客户端。响应的过程不经过LVS调度器。



LVS DR模式的特性:

1、CIP必须能够和VIP通讯,所以通常VIP是外网地址

2、DIP和RIP为同一物理网络,否则无法向RS发送ARP广播

3、RS上必须配置VIP地址,否则响应报文无法送达客户端,RS上的VIP对外界是不可见的,但RS可以接收目标地址为VIP的网络请求,并在回应数据包时将源地址设置为该VIP地址

4、RS上必须做ARP抑制,使RS不响应来自CIP的请求,相当于指定Director来响应CIP的请求

5、调度器几乎支持所有的UNIX、LINUX系统,但不支持windows,但是RS可以为windows

6、RS的网关不能指向DIP,应该指向出口网关

7、DR模式下,不支持端口映射,即Director不能更改请求报文的端口

8、DR模式效率很高,但配置麻烦,访问量不是非常大的情况下推荐使用haproxy或者nginx。标准:日访问量2000W PV以下,或者并发请求1W以下的可以考虑使用haproxy或nginx或使用LVS-NAT模式。

9、直接对外的访问业务,例如:web服务做RS节点,RS最好使用外网IP,如果不直接对外的业务,例如MySQL、存储系统RS节点,最好使用内网IP



LVS-NAT 模式的特性:

1、NAT模式将请求的报文的响应的报文通过调度器进行重写,再转发给RS

2、只需要调度器LB上配置WAN公网IP即可,调度器也要有私网IP和RS节点通讯

3、所有RS节点的网关指向LVS调度器

4、由于请求和响应报文的数据都经过LVS调度器,所有访问量较大的情况下,LVS调度器有较大的瓶颈,一般最多支持节点数10-20台

5、NAT模式支持端口映射,即用户请求为10.10.10.1:80  可以通过调度器转发到10.10.10.2:8080

6、所有NAT内部RS节点只需要配置私有LAN IP即可

7、由于数据包要经过LVS调度器转发,因此需要调度器开启内核转发功能


LVS应用场景:

LVS负载调度器可以应用于绝大多数的TCP和UDP协议

TCP:HTTP、FTP、PROXY、SMTP、POP3、IMAP4、DNS、LDAP、HTTPS、SSMTP等

UDP:DNS、NTP、ICP、视频、音频流播放协议等



LVS-DR安装配置:

查看内核版本

1
2
# uname -rm
2.6.32-573.el6.x86_64 x86_64


确认系统内核是否安装了ip_vs

1
2
3
4
5
# lsmod | grep ip_vs
ip_vs_rr                1420  1 
ip_vs                 126534  3 ip_vs_rr
libcrc32c               1246  1 ip_vs
ipv6                  335589  314 ip_vs,bridge,ip6t_REJECT

如果grep不到任何信息,则通过创建软连接来解决

1
2
3
4
5
6
7
ln  -sf  /usr/src/kernels/2 .6.32-642.4.2.el6.x86_64/  /usr/src/linux
 
ll  /usr/src
total 8
drwxr-xr-x. 2 root root 4096 Sep 23  2011 debug
drwxr-xr-x. 3 root root 4096 Aug 30 18:05 kernels
lrwxrwxrwx  1 root root   43 Aug 30 18:12 linux ->  /usr/src/kernels/2 .6.32-642.4.2.el6.x86_64/

注意 /usr/src/kernel/目录后面有多个文件,以uname -r的结果为准。如果上面的

1
<span style= "color:rgb(255,0,0);" >2.6.32-642.4.2.el6.x86_64<br>< /span >

不存在,则可能是系统没有安装kernel-devel包,可以通过yum -y install kernel 解决


安装lvs

1、yum安装

1
yum -y  install  ipvsadm


2、源码安装

下载ipvsadm源码包:

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz


安装依赖包:

1
  yum -y  install  libnl* popt*


安装ipvsadm:

1
2
3
# tar zxf ipvsadm-1.26.tar.gz 
# cd ipvsadm-1.26
#make && make install
1
2
3
4
5
#ipvsadm       //执行ipvsadm命令,把命令装载到内核
#lsmod | grep ip_vs
ip_vs                 126534  0 
libcrc32c               1246  1 ip_vs
ipv6                  335589  312 ip_vs,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6


ipvsadm 命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
集群服务相关:
   -A:添加一个集群服务
   -t:tcp服务
   -u:udp服务
   -f:firewall mark,通常用于将两个或以上的服务绑定为一个服务进行处理时使用
   service-address:
   -t:IP:port
   -u:IP:port
   -f firewall_mark
   -s:指定调度方法,默认为wlc
   -p timeout:persistent connection,持久连接
  
   -E:修改定义过的集群服务
  RS相关命令:
  -a:向指定的集群中添加RS
  -t|-u|-f  service—address:指明将RS添加至哪个Cluster Service中
  -r:指定RS,可以包含IP+port  只有支持端口映射的LVS类型才允许此处使用跟集群服务中不同的端口
  LVS类型:
  -g:Gateway,DR  默认为DR类型
  -i:ipip,TUN
  -m:masquerade,NAT
  -w:指定RS的权重
  -e:修改指定的RS属性
  -d -t|u|f service-address::删除指定的集群服务
  清空所有的集群服务:
  -C
  保存规则:(使用输出重定向)
  ipvsadm-save  
  ipvsadm -S
  载入执行的规则:(使用输入重定向)
  ipvsadm-restore
  ipvsadm -R
  查看ipvs规则等:
  -L:[option]
  -n:以数字格式显示IP地址
  -c:显示连接数相关信息
  --stats:显示统计数据(进来的报文数,出去的报文数等)
  --rate:报文传输速率(平均每秒连接数、平均每秒进来的连接数、平均每秒出去的字节数、平均每秒进来的字节数)
  --timeout:超时时常输出
  --daemon:显示ipvs集群服务本身的状态数据以及多播接口
  -- sort :对虚拟服务和RS做排序
  --exact:对输出数据不做单位换算,显示其精确值
  -Z:计数器清零,清楚统计数据


LVS-DR配置示例:

环境:

3台CentOS 6.7  1台物理机Mac

1
2
cat  /etc/redhat-release 
CentOS release 6.7 (Final)


角色:

   CIP:172.16.206.1

   DIP:172.16.206.129

   VIP:172.16.206.110

   RIP:172.16.206.128 (web server) 172.16.206.130(web server)


Director配置:

    1、配置VIP

1
#ifconfig eth0:0 172.16.206.110 netmask 255.255.255.255 broadcast 172.16.206.110

 

    2、关闭防火墙或者清空规则

1
service iptables stop / iptables-F


    3、配置IPVS

1
2
3
4
5
6
7
8
9
10
# ipvsadm -A -t 172.16.206.110:80 -s rr 
# ipvsadm -a -t 172.16.206.110:80 -r 172.16.206.128 -g 
# ipvsadm -a -t 172.16.206.110:80 -r 172.16.206.130 -g   
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.206.110:80 rr
   -> 172.16.206.128:80            Route   1      0          0         
   -> 172.16.206.130:80            Route   1      0          0


RS配置:

   1、配置VIP与路由, 注意两台RS都需要配置

1
2
# ifconfig lo:0 172.16.206.110 netmask 255.255.255.255 broadcast 172.16.206.110
# route add -host 172.16.206.110 dev lo:0 //这条配置不是必须的

    2、抑制ARP配置

1
2
3
4
# 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

    3、在RS上测试访问本地的web服务器

1
2
# curl 172.16.206.130
<h>130< /h >
1
2
# curl 172.16.206.128
<h>128< /h >


    4、客户端测试访问 http://172.16.206.110

wKiom1fGajeDl64uAAB27H2yFa0394.png


刷新页面后,变成130 ,表示配置成功

wKioL1fGajjSxu4NAABjDlfxOoU874.png

arp_ignore参数是定义linux主机在收到ARP请求数据包后,发送ARP响应数据包的条件级别,该参数的取值范围是0~8,各取值的意义分别是:
0(默认值)-- 只要ARP请求数据包所请求的IP地址属于任一本地地址(即任意一个本机配置的IP地址),就会回应ARP响应数据包,即使该IP地址不属于接收到ARP请求数据包的网卡。
1 -- 只有ARP请求数据包所请求的IP地址属于当前网卡的IP地址,才会回应ARP响应数据包
2 -- 除了满足1的条件外,还要满足ARP请求数据包的发送方IP地址也属于当前网卡所属子网,这样才会回应ARP响应数据包。
3 -- 如果ARP请求数据包所请求的IP地址对应的本地地址其作用域(scope)为主机(host),则不回应ARP响应数据包,如果作用域为全局(global)或链路(link),则回应ARP响应数据包。
4~7 -- 保留
8 -- 即使ARP请求数据所请求的IP地址属于任何一个本地地址,也不回应ARP响应数据包。

将arp_ignore级别设置为1,表示只有RIP所在网卡接受的请求报文中的目标IP


 arp_announce参数是定义linux主机发送ARP请求数据包时如何选择数据包中使用的发送方IP地址(即Sender IP address)。在系统准备通过网卡发送一个IP数据包前,该IP数据包的源IP地址和目标IP地址通常是已经知道的,同时发送的网卡也已经确定,那数据链路层的源MAC地址当然也确定了,最后剩下的就是确定数据链路层的目标MAC地址了,而该目标MAC地址就需要通过ARP地址解释协议来获取,于是系统首先需要发送ARP请求数据包获取目标MAC地址。结合上面关于ARP原理的描述,我们知道,发送ARP请求数据包时需要包含发送方IP地址,该IP地址应该是什么呢?大家可能想当然的以为就是要发送的IP数据包的源IP地址,其实这个是不一定的,尤其是主机有多个网络接口和IP地址时,而arp_announce正是控制该发送方IP地址的选择条件的。arp_announce参数的取值分别是0、1、2,这些取值的意义如下:
0(默认值)-- 允许使用任一网络接口配置的IP地址(即任一本地地址),通常就是待发送的IP数据包的源IP地址。
1 -- 尽量避免使用不属于该网络接口(即发送数据包的网络接口)子网的本地地址作为发送方IP地址。根据我对官方原文的理解,就是说如果主机包含多个子网,而IP数据包的源IP地址属于其中一个子网,虽然该IP地址不属于本网口的子网,但是也可以作为ARP请求数据包的发送方IP地址,否则就会按照取值为2的方式选择发送方IP地址。
2 -- 忽略IP数据包的源IP地址,总是选择网口所配置的最合适的IP地址作为ARP请求数据包的发送方IP地址(一个网口可能会配置多个IP地址)。

arp_announce的作用是什么呢?设置为不同的值会有什么不同的作用呢?或者说有什么不同的影响呢?下面我们来举个例子说明不同值的影响。不过要理解以下的影响,我们要了解,对于网络设备(三层交换机、路由器)及主机,其ARP地址表(包含IP地址和MAC地址对应关系的表)是如何建立的:当设备或主机收到一个ARP请求数据包时,它会把ARP请求数据包的发送方IP地址和MAC地址的对应关系放入自身的ARP地址表。理解了上面所说的,我们来看看实际的案例场景:假设linux主机有A、B两块网卡,其对应的IP地址分别为IP_A、IP_B,对应的MAC地址为MAC_A、MAC_B,假设一个应用程序准备与外部通信,它的socket绑定了源IP地址为IP_A,但是根据系统路由及相关设置,其通信数据包将会从B网卡发送,在发送数据包前,系统会通过网卡B发送ARP请求数据包。如果我们将arp_announce的值设定为0,那该ARP请求数据包的发送方IP地址是IP_A,而发送方MAC地址为MAC_B,这样就会在网络设备或对方主机的ARP地址表上留下IP_A与MAC_B的对应记录,但是实际正确的应该是IP_A对应MAC_A、IP_B对应MAC_B,所以这可能会引起潜在的网络问题,具体问题和表现与网络的拓扑结构及网络配置有关。而如果我们将arp_announce设置为2,那在发送ARP请求数据包时,发送方IP地址将不是IP_A,而是IP_B,这样就不会引起刚才所说的问题

关于arp_ignore 和arp_announce的配置解释,请参考:

http://www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html

http://blog.chinaunix.net/uid-13423994-id-5146098.html











本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1844089,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
余二五
目录
相关文章
GG2020gg
|
4月前
|
运维 算法 Linux
LVS详解(四)——LVS安装与配置命令
LVS详解(四)——LVS安装与配置命令
GG2020gg
105 2
shudiFu
|
2月前
|
网络协议 应用服务中间件 Linux
LVS介绍与配置
LVS介绍与配置
shudiFu
96 8
泥腿子架构师
|
2月前
|
负载均衡 网络协议 算法
使用IPVSADM配置LVS负载均衡
使用IPVSADM配置LVS负载均衡
泥腿子架构师
43 1
hy151217
|
4月前
|
负载均衡 监控 调度
Keepalived+Lvs(dr)调度器主备配置小实验
Keepalived和LVS(Linux Virtual Server)是两个常用的开源软件,通常结合使用以提供高可用性和负载均衡的解决方案。 Keepalived是一种用于实现高可用性的软件,它可以监控服务器的健康状态,并在主服务器出现故障时自动切换到备份服务器。
hy151217
157 2
小小工匠
|
监控 网络协议 数据安全/隐私保护
高可用 - 05 Keepalived配置(全局配置、VRRPD、LVS)
高可用 - 05 Keepalived配置(全局配置、VRRPD、LVS)
小小工匠
579 0
金雪人
|
负载均衡 Linux Docker
LVS+keepalived配置高可用架构和负载均衡机制(2)
LVS+keepalived配置高可用架构和负载均衡机制(2)
金雪人
228 0
金雪人
|
负载均衡 网络协议 前端开发
LVS+keepalived配置高可用架构和负载均衡机制(1)
LVS+keepalived配置高可用架构和负载均衡机制(1)
金雪人
729 1
CTO技术共享
|
负载均衡 并行计算 算法
Lvs-负载均衡配置 NAT与DR模式
Lvs-负载均衡配置 NAT与DR模式
CTO技术共享
373 1
Lvs-负载均衡配置 NAT与DR模式
小榕
|
负载均衡
LVS负载均衡配置(二)
敬请期待!
小榕
542 0
sktj
|
网络协议
KEEPALIVED 做LVS+HA实例安装与配置
--------------------------------------master------------------------------------------------------- wget http://www.
sktj
1034 0

热门文章

最新文章

  • 1
    LVS+Keepalived实现高可用负载均衡(转)
  • 2
    负载均衡--集群 LVS+keepalived
  • 3
    Linux下群集服务简介&lvs集群详解
  • 4
    配置lvs nat模式下real server服务器端lvsrs脚本
  • 5
    LVS负载均衡-DR模式
  • 6
    LVS_DR + keepalived配置
  • 7
    keepalived整合lvs实现nginx高可用负载均衡
  • 8
    lvs十种调度策略+三种模式
  • 9
    Keepalived+lvs
  • 10
    LVS配置--下
  • 1
    keepalived+LVS实现高可用性集群
    108
  • 2
    CentOS6.5高可用集群LVS+Keepalived(DR模式)
    57
  • 3
    LVS详解(六)——LVS DR模式实战
    133
  • 4
    LVS详解(五)——LVS NAT模式实战
    111
  • 5
    LVS详解(四)——LVS安装与配置命令
    105
  • 6
    百度搜索:蓝易云【LVS/Nginx/HAProxy原理及应用场景介绍】
    70
  • 7
    【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
    269
  • 8
    Keepalived+Lvs(dr)调度器主备配置小实验
    157
  • 9
    LVS集群
    111
  • 10
    小白带你学习linux的keepalived+lvs和keepalived双机热备(三十七)
    139
  • 相关课程

    更多
  • LVS负载均衡实战
  • 企业集群平台架构设计与实现:lvs/haproxy/keepalived
  • 相关电子书

    更多
  • 低代码开发师(初级)实战教程
  • 冬季实战营第三期:MySQL数据库进阶实战
  • 阿里巴巴DevOps 最佳实践手册
  • 下一篇
    对象OSS生命周期(LifeCycle)管理功能|学习笔记

    深圳SEO优化公司沧州网站竞价优化代运营快速优化网站公司巩义百度网站优化哪家好郯城网站优化报价网站按天计费优化推广专业网站SEO优化外包服务晋城关键词网站优化益阳外贸网站优化推广无锡个人网站优化石家庄知名的网站优化收费标准亳州seo网站优化html源码网站能优化吗舟山怎么做网站优化广州网站关键词优化定制驻马店网站优化哪家专业慈东工业区网站优化推广西湖区网站推广优化公司乌海网站优化厂家淘宝优化网站靠谱吗荆门外包网站优化要多少钱搜狗优化好的网站医疗类网站优化好的网站推广与优化咨询热线郑州网站优化推广排名黎平网站优化推广价格成都网站优化松江区搜索引擎网站优化哪家好厦门seo网站内部优化宜昌外包网站优化价格武汉站外网站优化技能歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化