DR模式:

DR模式:

lvs的三种模式:nat 地址转换

DR 直接路由模式

tun 隧道模式

DR模式的特点:

调度器在整个lvs集群当中是最重要的,在nat模式下,既负责接收请求,同时根据负载均衡的算法转发流量,响应发送给客户端。

DR模式:调度器依然负责接收请求,同时也根据负载均衡算法转发流量到RS,响应直接由RS响应给客户端。

直接路由:Direct Routing 是一种二层转发模式。二层转发数据帧。根据源mac地址和目的mac地址进行转发。

不会修改数据包源ip和目的ip。根据数据包mac地址进行转发。

DR模式下,lvs也是维护一个虚拟的ip的地址,所有的请求都是发送到这个vip,既然是走二层转发,当客户端的请求到达调度之后,根据负载均衡的算法选择一个RS,修改vip服务器的目的mac变成RS的mac地址,RS处理完请求之后,根据报文当中客户端的源mac地址直接把响应发送到客户端即可,不需要走调度器了。

1、调度器配置了vip,RS上也配置了vip地址。

vip地址冲突,调度器和RS都在同一网段,ARP通信的紊乱。因为是整个局域网广播,所有的设备都收到了。

这么把lo这个回环的响应屏蔽掉,只有本机的物理ip地址响应。

修改内核参数:

arp_ignore=1

系统的物理ip地址才会响应请求。lo不会响应ARP请求。

2、返回报文时,vip地址还在,怎么样能让客户端来响应。

arp_announce=2

系统不使用ip数据包的源地址来响应ARP请求,直接发送物理接口的ip地址。

节点服务器的配置:

DR模式的实现:

nginx1 RS1 192.168.60.30

nginx2 RS2 192.168.60.40

vip 192.168.60.100

test1 调度器 192.168.60.70

test2 客户端 192.168.60.80

route   add -host    192.168.60.100 dev lo:0

设置ip地址为192.168.60.100的只添加到回环接口,作为lvs的vip。通过路由的模式转发到RS。

能让vip识别到真实的服务器

DR模式的具体操作:

1、启动内核和下载ipvsadm管理工具

[root@test7 ~]# modprobe ip_vs
[root@test7 ~]# yum -y install ipvsadm*

2、创建一个虚拟网卡

[root@test7 network-scripts]# vim ifcfg-ens33:0
​
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.60.100
NETMASK=255.255.255.255

3、更改调度器的响应参数

[root@test7 network-scripts]# vim /etc/sysctl.conf
net.ipv4.ip_forward=0
#关闭数据包转发功能
net.ipv4.conf.all.send_redirects=0
#禁止系统发送icmp重定向的消息。
net.ipv4.conf.default.send_redirects=0
#禁止默认网络接口发送ICMP重定向的消息
net.ipv4.conf.ens33.send_redirects=0
#针对ens33设备,禁止发送ICMP重定向消息

4、指定负载的vip和策略

[root@test7 opt]# ipvsadm -A -t 192.168.60.100:80 -s rr
[root@test7 opt]# ipvsadm -a -t 192.168.60.100:80 -r 192.168.60.30:80 -g
[root@test7 opt]# ipvsadm -a -t 192.168.60.100:80 -r 192.168.60.40:80 -g
[root@test7 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.60.100:80 rr
  -> 192.168.60.30:80             Route   1      0          0         
  -> 192.168.60.40:80             Route   1      0          0         

5、更改回环地址

nginx1和nginx2的两台机器都要以下操作

[root@test3 ~]# cd /etc/sysconfig/network-scripts/
[root@test3 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@test3 network-scripts]# vim ifcfg-lo:0
​
DEVICE=lo:0
IPADDR=192.168.60.100
NETMASK=255.255.255.255
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
ONBOOT=yes
[root@test3 network-scripts]# ifup lo:0

6、添加lo接口作为vip

nginx1和nginx2的两台机器都要以下操作

[root@test3 network-scripts]# route add -host 192.168.60.100 dev lo:0

7、调整真实服务器的内核响应

nginx1和nginx2的两台机器都要以下操作

[root@test4 network-scripts]# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
#设置回环接口忽略来自任何接口的arp请求
net.ipv4.conf.lo.arp_announce = 2
#设置回环地址仅仅公共本地的IP地址,但是不响应ARP请求
net.ipv4.conf.all.arp_ignore = 1
#设置所有接口忽略来自任何接口的ARP请求
net.ipv4.conf.all.arp_announce = 2
#设置所有接口仅仅公告本地的IP地址,但是不响应ARP请求

8、结果

[root@test8 ~]# curl 192.168.60.100
this is test4
[root@test8 ~]# curl 192.168.60.100
this is test3
[root@test8 ~]# curl 192.168.60.100
this is test4
[root@test8 ~]# curl 192.168.60.100
this is test3
[root@test8 ~]# curl 192.168.60.100
this is test4

lvs的三种工作模式:

NATDRTUN
优点地址转换,配置简单性能最好WAN,可以实现较远距离的数据包传送
缺点性能瓶颈不支持跨网段专用的通道,需要开通vpn(花钱)
RS的要求无限制必须要禁止非物理接口的ARP响应要支持隧道模式
RS的数量10~20台100台100台

面试题1:

简述lvs的三种模式和他们的区别

NATDRTUN
优点地址转换,配置简单性能最好WAN,可以实现较远距离的数据包传送
缺点性能瓶颈不支持跨网段专用的通道,需要开通vpn(花钱)
RS的要求无限制必须要禁止非物理接口的ARP响应要支持隧道模式
RS的数量10~20台100台100台

面试题2:

keepalive的脑裂怎么解决?

lvs集群当中的高可用架构,只是争对调度器的高可用。

基于vrrp来实现调度器的主和备。

高可用的HA架构

主调度器和备调度器(多台)

在主调度器正常工作的时候,备完全处于冗余状态(待命)。不参与集群的运转,只有当主调度器出现故障时,备才会承担主调度器的工作。主调度器恢复功能之后,主又会成为主,主继续作为集群的入口,备继续处于冗余状态(取决于优先级)

keepalive基于vrrp协议来实现lvs高可用的方案。

1、组播地址:

224.0.0.18根据组播地址来进行通信,主和备之间发送报文。确定对方是否存活。

2、根据优先级的大小来确定主和备的位置

3、故障切换主挂了,备来继续工作,主恢复了,备继续等待。

4、主和备之间的切换是vip地址的切换。

keepalive是专门为了lvs而出现的,但是不是lvs专用的。

题目:lvs和nginx做负载均衡的区别:

lvs 是四层转发 内核态 ip+端口 四层代理

nginx 四层代理 也可以是七层代理

lvs(DR模式)+nginx+tomcat

lvs实现四层转发+nginx实现7层转发(动态)

访问lvs的vip地址可以实现动静分离。

    upstream tomcat_server {
        server 192.168.60.50:8080 weight=1;
        server 192.168.60.60:8080 weight=1;
}
        location ~ .*\.jsp$ {
                        proxy_pass http://tomcat_server;
                        proxy_set_header HOST $host;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值