LVS系列—LVS-DR 模式安装
来源:互联网 发布:珠海广电网络营业厅 编辑:程序博客网 时间:2024/05/17 21:59
一、准备工作——LVS Server
为了让您了解LVS的另外设置方式,本次我们使用VIP的方式,而不是两张网卡的方式(当然您也可以用两张网卡的方式)。VIP的方式是后面我们将讲到的LVS + Keepalived组合工作模式的常用方式。所谓VIP就是虚拟IP,是指这个IP不会固定捆绑到某一个网卡设备,而是通过ifconfig命令绑定,并在“适当时候”这种绑定关系会随之变化。
DIP:192.168.1.57
VIP:192.168.1.100
1、设置VIP信息
[root@bogon ~]# ifconfig ens33:0 192.168.1.100 broadcast 192.168.1.100 netmask 255.255.255.255 up[root@bogon ~]# ifconfigens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.57 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::2a8d:be6:a4a8:ea0 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:24:26:9c txqueuelen 1000 (Ethernet) RX packets 98059 bytes 7746619 (7.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 942 bytes 114751 (112.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.100 netmask 255.255.255.255 broadcast 192.168.1.100 ether 00:0c:29:24:26:9c txqueuelen 1000 (Ethernet)lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 273 bytes 25704 (25.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 273 bytes 25704 (25.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2、设置路由信息
[root@bogon ~]# route add -host 192.168.1.100 dev ens33:0[root@bogon ~]# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacedefault 192.168.1.1 0.0.0.0 UG 101 0 0 ens33192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33192.168.1.100 0.0.0.0 255.255.255.255 UH 0 0 0 ens33
3、通过一个外网IP,可以ping通这个VIP(下面这个DOS系统是VM的母机)
C:\Users\1234>ping 192.168.1.100正在 Ping 192.168.1.100 具有 32 字节的数据:来自 192.168.1.100 的回复: 字节=32 时间<1ms TTL=64来自 192.168.1.100 的回复: 字节=32 时间<1ms TTL=64来自 192.168.1.100 的回复: 字节=32 时间<1ms TTL=64来自 192.168.1.100 的回复: 字节=32 时间<1ms TTL=64192.168.1.100 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),往返行程的估计时间(以毫秒为单位): 最短 = 0ms,最长 = 0ms,平均 = 0ms
以上,我们完成了LVS主机设置LVS-DR工作模式的准备工作。注意:
- 在您设置过程中,防火前最好关闭,但在正式生产环境中,LVS的防火强最好打开。
- VIP信息在LVS主机重启后,会消失。所以您最好将设置VIP的命令做成一个脚本。
二、准备工作——Real Server
RIP:192.168.1.51
真实服务器的准备工作,需要保证真实服务器能够访问外网网关,并且保证由LVS改写的报文能够被Real Server处理,这就需要做一个回环IP。
1、设置回环IP
将报文的帧重新交给交换机的时候,交换机会根据目标MAC重新发往realserver,当realserver收到请求之后目标地址由于是VIP,因此为了让realserver接收目标地址为vip的报文,在每个realserver必须配置vip的地址,不然不匹配报文无法接收,也就意味着每个realserver都必须配置vip
# 指定广播地址为自己本机,不对外做任何广播,说明不需要与任何主机通信,只将在响应客户端的请求的时候将自己做为源地址。[root@bogon www.test1.com]# ifconfig lo:0 192.168.1.100 broadcast 192.168.1.100 netmask 255.255.255.255 up[root@bogon www.test1.com]# ifconfigens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.51 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::853a:c1a1:7172:a45d prefixlen 64 scopeid 0x20<link> inet6 fe80::2a8d:be6:a4a8:ea0 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:1a:76:7e txqueuelen 1000 (Ethernet) RX packets 100117 bytes 7785003 (7.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1568 bytes 218186 (213.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 72 bytes 6248 (6.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 72 bytes 6248 (6.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 192.168.1.100 netmask 255.255.255.255 loop txqueuelen 1 (Local Loopback)
2、设置路由信息
响应报文从哪个接口出去,则将哪个接口的地址当做源地址。所以,为了使得源地址是VIP还必须加一条路由,如果主机目标地址是vip的,那么一定要通过lo接口出去。
[root@bogon www.test1.com]# route add -host 192.168.1.100 dev lo:0[root@bogon www.test1.com]# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacedefault 192.168.1.1 0.0.0.0 UG 100 0 0 ens33192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33192.168.1.100 0.0.0.0 255.255.255.255 UH 0 0 0 lo
3、关闭这台机器进行ARP查询的功能
事实上路由器将报文转发至directory之前要先进行arp广播请求,arp广播的意义是将vip转换为mac地址,那么按理来讲我们的realserver都配置了vip,也就意味着所有配置vip的主机都能响应其报文,很显然这么就乱套了,所以我们就期望进来的请求只到达directory,不然负载均衡就没有意义了。
[root@bogon www.test1.com]# echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore[root@bogon www.test1.com]# echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce[root@bogon www.test1.com]# echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore[root@bogon www.test1.com]# echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
以上设置完成。完成后,您需要通过ping命令,检查一下网关是否可用(最好可以瓶ping一下外网的某个地址,例如163.com)。LVS-DR模式下,Real Server是直接向请求方返回结果,所以一定要保证网关时可用的。
[root@bogon www.test1.com]# ping www.baidu.comPING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=1 ttl=55 time=18.0 ms64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=2 ttl=55 time=17.6 ms64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=3 ttl=55 time=19.6 ms64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=4 ttl=55 time=17.1 ms^C--- www.a.shifen.com ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3010msrtt min/avg/max/mdev = 17.130/18.112/19.602/0.932 ms
4、看看Nginx是不是工作正常的
很重要的一点:Nginx服务器要监听在VIP上,即 lo:0 上。
[root@localhost ~]# curl 192.168.1.100192.168.3.11
Nginx的安装配置请参考Nginx系列—服务器安装与配置
Nginx虚拟机的配置请参考
- Nginx系列—虚拟主机配置的三种方式(一)
- Nginx系列—虚拟主机配置的三种方式(二)
- Nginx系列—虚拟主机配置的三种方式(三)
按照同样的步骤多陪几台服务器,便于测试。
完成准备工作后,我们可以开始安装和配置LVS了。
三、开始安装和配置LVS-DR模式
[root@bogon www.test1.com]# ipvsadm -C[root@bogon www.test1.com]# ipvsadm -At 192.168.1.100:80 -s rr[root@bogon www.test1.com]# ipvsadm -at 192.168.1.100:80 -r 192.168.1.51 -g
介绍一下新出现的参数:
- -g –gatewaying 指定LVS 的工作模式为直接路由模式DR模式(也是LVS默认的模式)。
四、配置完成,进行测试
接下来,我们就可以在外网,通过192.168.1.100这个IP访问配置的这几台Real Server上的Nginx服务了:
测试时,每次请求之前要清空浏览器缓存,这样才可以看到轮询的结果。
附、配置过程中问题
1、测试时,出现“192.168.1.10 连接被拒绝的”情况
使用命令 ipvsadm -lcn ,出现如下问题:
CP 00:54 SYN_RECV h100:12949 192.168.1.100:80 h104:80
原因如下:
realserver的服务监听IP我选择了监听指定的IP,即eth0的IP,而未监听lo,即本地地址,那么即使收到了由directoryserver转发的请求,通过本地广播给本机的lo:0,因为服务没有监听lo,所以也不会有响应。
2、arp_ignore 和 arp_announce
arp_ignore 响应级别:当接收到ARP请求时是否选择响应的级别。
- 默认0 将本机任何接口上的任何地址向外通告;
- 1:请求的目标IP配置在对外通信接口(一般是eth0)上,才响应;
- 2:..
- 3:..
arp_announce 向外通知级别:定义将自己地址主动向外通知的级别;
- 默认0;
- 1:本地接口地址不止一个,如果某个本地接口地址不在ARP请求的目标地址所在的子网络,就避免通告;
- 2:响应最佳本地地址。即只有目标地址在网络接口的通信接口上,才予以回应。即通信接口(eth0)上的地址就是目标地址,才予以响应,当然如果没匹配,还是可以有其他响应的,先理解到这就可以了。
例如:假设一台主机,两个网卡,MAC1和MAC2
MAC1上边的网络接口有 eth0 和 lo。
IP地址配置为:
- eth0配置192.168.10.3/24;
- lo:0配置172.168.19.2/16;
- lo:1配置192.168.10.111/24。
这里eth0和lo:1在同一子网。
MAC2 上边就一个接口eth0,配置IP 192.168.122.7/24。
若arp_announce=1:我们知道如果要通信,则一定是经过eth0接口,所以
- 当目标请求lo:1时,则在目标子网络中的接口有eth0,所以就会响应ARP请求;
- 当目标请求lo:0,则目标网络中没有eth0,所以不响应。
注意到LVS-DR模型,VIP、DIP和RIP都在同一网段哦,所以设置arp_announce=1是不行的,因为RS主机上eth0上的RIP和lo:0上的VIP在同一网段,所以收到ARP广播是会响应的。
若arp_announce=2:通告最佳本地地址,即只有目标地址在网络接口的通信接口上,才予以回应。即通信接口(eth0)上的地址就是目标地址,才予以响应。
再了解一个概念:
一个RS主机有两个网络接口(不是两个网卡哦,说白了就是eth0和lo是两个接口,但是是同一个网卡,所以只有一个MAC,但是所有向外通信都是通过eth0这个接口),一个eth0一个lo,对吧,我们将VIP配置到lo接口的别名lo:0上,如果VIP要通信,则一定是通过eth0,对吧,也就是说当收到ARP广播请求VIP地址时,请求是通过eth0进来的,而VIP将以eth0的MAC并通过eth0予以响应,所以我们只要设置了忽略响应级别和响应级别,即设置只要请求的IP不是配置在eth0接口上,一律不予响应(arp_ignore的意义)
3、关于LVS-DR中的一个普遍误区:lo:0配置路由
关于LVS-DR中的一个普遍误区:lo:0配置路由
- LVS系列—LVS-DR 模式安装
- LVS系列—LVS-NAT 模式安装
- lvs-dr模式 安装配置
- 负载均衡LVS(DR模式)安装实战
- 配置 LVS DR模式
- LVS DR模式配置
- LVS的DR模式
- LVS的DR模式
- lvs DR模式
- lvs DR模式
- Centos 安装LVS(dr)
- LVS之——DR模式
- LVS(一)LVS简介及LVS-DR模式配置搭建
- LVS-DR模式配置详解
- LVS/DR模式原理剖析
- lvs DR模式的笔记
- lvs DR NAT模式练习
- LVS/DR模式原理剖析
- DFS&BFS专题(一)
- input输入框type=text触发的相关事件
- springMVC工作原理
- 风力摆控制系统赛题分析
- 学习java第一天
- LVS系列—LVS-DR 模式安装
- 增删查改的业务逻辑
- hdu2090 算菜价(C语言)
- Go语言的素数对象编程实现及其使用
- MySQL删除视图
- Fragment 生命周期
- 奇怪的非同寻常的金币
- flowable ContentEngine和ContentEngineConfiguration的关系
- n个数中y数字出现了几次