LVS集群---二

1.LVS工作模式和相关命令

1.1LVS集群工作模式

  • - lvs-nat:修改请求报文的目标IP,多目标IP的DNAT
  • - lvs-dr:操纵封装新的MAC地址(直接路由)
  • - lvs-tun:隧道模式

1.1.1 LVS的NAT模式

lvs-nat:本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某处的RS的RIP和

PORT实现转发

(1)RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP

(2)请求报文和响应报文都必须经由lvs服务器转发,lvs服务器易于成为系统瓶颈

(3)支持端口映射,可修改请求报文的目标PORT

(4)VS必须是Linux系统,RS可以是任意OS系统

1.1.2 IP隧道

1. RIP和DIP可以不处于同一物理网络中,RS的网关一般不能指向DIP,且RIP可以和公网通信。也就是

   说集群节点可以跨互联网实现。DIP, VIP, RIP可以是公网地址。

2. RealServer的通道接口上需要配置VIP地址,以便接收DIP转发过来的数据包,以及作为响应的

   报文源IP。

3. DIP转发给RealServer时需要借助隧道,隧道外层的IP头部的源IP是DIP,目标IP是RIP,而

   RealServer响应给客户端的IP头部是根据隧道内层的IP头分析得到的,源IP是VIP,目标IP是CIP

4. 请求报文要经由Director,但响应不经由Director,响应由RealServer自己完成

5. 不支持端口映射

6. RS的OS须支持隧道功能

一般来说,隧道模式常会用来负载调度缓存服务器组,这些缓存服务器一般放置在不同的网络环境,可以就近
折返给客户端。在请求对象不在Cache服务器本地命中的情况下,Cache服务器要向源服务器发送请求,将结
果取回,最后将结果返回给用户。

1.1.3直接路由

直接路由(Direct Routing):简称 DR 模式,采用半开放式的网络结构,与 TUN 

模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。 

负载调度器与各节点服务器通过本地网络连接,不需要建立专用的 IP 隧道

直接路由,LVS默认模式,应用最广泛,通过请求报文重新封装一个MAC首部

进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源

IP/PORT,以及目标IP/PORT均保持不变

DR模式的特点:

1. Director和各RS都配置有VIP

2. 确保前端路由器将目标IP为VIP的请求报文发往Director

  • - 在前端网关做静态绑定VIP和Director的MAC地址
  • - 在RS上使用arptables工具

arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP

在RS上修改内核参数以限制arp通告及应答级别

/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce

 RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director

4. RS和Director要在同一个物理网络

5. 请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client

6. 不支持端口映射(端口不能修改)

7. 无需开启 ip_forward

8. RS可使用大多数OS系统

1.1.4 LVS工作模式总结和比较

地方 NAT TUN DR
优点 端口转换 WAN 性能最好
缺点 性能瓶颈 服务器支持隧道模式 不支持跨网段
真实服务器要求 any Tunneling Non-arp device
支持网络 private(私网) LAN/WAN(私网/公网) LAN(私网)
真实服务器数量 low (10~20) High (100) High (100)
真实服务器网关 lvs内网地址 Own router(网工定义) Own router(网工定义)

2.ipvsadm工具

2.1ipvsadm工具选项说明

-A: 添加虚拟服务器
-D: 删除整个虚拟服务器
-s: 指定负载调度算法(轮询: rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc)
-a: 添加真实服务器(节点服务器)
-d: 删除某一个节点
-t: 指定VIP地址及TCP端口
-r: 指定RIP地址及TCP端口
-m: 表示使用NAT群集模式
-g: 表示使用DR模式
-i: 表示使用TUN模式
一w: 设置权重(权重为0时表示暂停节点)
-p 60: 表示保持长连接60秒
-l: 列表查看 LVS虚拟服务器(默认为查看所有)
-n: 以数字形式显示地址、端口等信息,常与"-l“选项组合使用。ipvsadm -ln

#管理集群服务
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]
ipvsadm -D -t|u|f service-address #删除
ipvsadm –C #清空
ipvsadm –R #重载,相当于ipvsadm-restore
ipvsadm -S [-n] #保存,相当于ipvsadm-save
#管理集群中的RS
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]  
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]

选项:
lvs类型:
    -g: gateway, dr类型,默认
    -i: ipip, tun类型
    -m: masquerade, nat类型        
-w weight:权重

例子:
ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.80.11:80 -m

yum install ipvsadm


Unit File: ipvsadm.service
主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
ipvs调度规则文件:/etc/sysconfig/ipvsadm

3.LVS  DR模式部署

3.1原理解释

客户机发起请求,经过调度服务器(lvs),经过算法调度,去访问真实服务器(RS)

由于不原路返回,客户机不知道,真实主机的ip地址,

所以只能通过调度服务器的外网ip(vip)去反回报文信息。
 

第一次访问完整(不考虑实际问题)
客户端---->外网地址12.0.0.100      12.0.0.100---->客户端 
#12.0.0.18-----客户端   客户端会直接丢弃
对每台真实服务器配置外网地址 12.0.0.100
12.0.0.100------>客户端   

问题1
IP 地址冲突的
路由器发送ARP请求(广播)
ARP---->广播去找ip地址解析成mac地址
默认使用调度服务器上的外网地址(vip地址)响应,
在真实服务器上修改内核参数
使真实服务器只对自己服务器上的真实IP地址响应ARP解析。

第二次再有访问请求
问题2
路由器上绑定了 真实服务器1的mac信息,
#请求到达真实服务器
在真实服务器上修改内核参数
只对所有服务器真实网卡上的地址进行反馈,解析

3.2实际操作

#环境简介
DR 服务器:192.168.91.100
web 服务器1:192.168.91.101
web 服务器2:192.168.91.103
vip(虚拟回环):192.168.91.188
客户端:192.168.91.200

3.2.1配置负载调度器

systemctl stop firewalld.service
setenforce 0
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@localhost ~]#yum install ipvsadm.x86_64 -y
#安装服务

#配置虚拟IP地址(VIP:192.168.91.188)

[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-ens33:0
#配置虚拟网卡,若为隧道模式ifcfg-tunl0

[root@localhost network-scripts]#vim ifcfg-ens33:0
#删除dns与网关,注意子网

NAME=ens33:0
DEVICE=ens33:0
IPADDR=192.168.91.188
NETMASK=255.255.255.255
[root@localhost network-scripts]#systemctl restart network
[root@localhost network-scripts]#ifup ifcfg-ens33:0
#启动网卡
[root@localhost network-scripts]#ifconfig ifcfg-ens33:0

#调整/proc响应参数
[root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]#sysctl -p
#刷新配置
#调整/proc响应参数  对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核的重定向参数响应服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能

#配置负载分配策略
[root@localhost ~]#modprobe ip_vs
[root@localhost ~]#cat /proc/net/ip_vs
#加载模块
[root@localhost network-scripts]#ipvsadm-save >/etc/sysconfig/ipvsadm
[root@localhost network-scripts]#systemctl start ipvsadm.service
[root@localhost network-scripts]#ipvsadm -C
[root@localhost ~]#ipvsadm -A -t 192.168.91.188:80 -s rr
[root@localhost ~]#ipvsadm -a -t 192.168.91.188:80 -r 192.168.91.101:80 -g
[root@localhost ~]#ipvsadm -a -t 192.168.91.188:80 -r 192.168.91.103:80 -g
#添加真实服务器-a  指定VIP地址及TCP端口-t   指定RIP地址及TCP端口 -r 指定DR模式-g

[root@localhost network-scripts]#ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost.localdomain:http rr
  -> 192.168.91.101:http          Route   1      0          0         
  -> 192.168.91.103:http          Route   1      0          0         


[root@localhost network-scripts]#ipvsadm-save >/etc/sysconfig/ipvsadm
#保存设置

3.2.2节点服务器

节点1
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0
[root@localhost ~]#yum install httpd -y
[root@localhost ~]#systemctl start httpd
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#cp ifcfg-lo ifcfg-lo:0
[root@localhost ~]#ifconfig lo:0 192.168.91.188 32
[root@localhost ~]#ifconfig lo:0 192.168.91.188 255.255.255.255
[root@localhost network-scripts]#vim ifcfg-lo:0
#修改回环网卡名,IP地址,子网掩码

DEVICE=lo:0
IPADDR=192.168.91.188
NETMASK=255.255.255.255
NETWORK=127.0.0.0

[root@localhost network-scripts]#route add -host 192.168.91.188 dev lo:0
#设置路由

[root@localhost network-scripts]#route -n
#开机执行命令,或者写入 /etc/profile 文件

[root@localhost network-scripts]#vim /etc/rc.d/rc.local 
/usr/sbin/route add -host 192.168.91.188 dev lo:0
[root@localhost network-scripts]#chmod +x /etc/rc.d/rc.local
[root@localhost network-scripts]#ll /etc/rc.d/rc.local 
-rwxr-xr-x. 1 root root 484 11月 17 16:56 /etc/rc.d/rc.local

[root@localhost network-scripts]#vim /etc/sysctl.conf 
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP

[root@localhost network-scripts]#sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

节点2
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0
[root@localhost ~]#yum install httpd -y
[root@localhost ~]#systemctl start httpd
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]#vim ifcfg-lo:0

#修改回环网卡名,IP地址,子网掩码
DEVICE=lo:0
IPADDR=192.168.91.188
NETMASK=255.255.255.255
NETWORK=127.0.0.0
[root@localhost network-scripts]#route add -host 192.168.91.188 dev lo:0
#设置路由

[root@localhost network-scripts]#route -n
#开机执行命令,或者写入 /etc/profile 文件

[root@localhost network-scripts]#vim /etc/rc.d/rc.local 
/usr/sbin/route add -host 192.168.91.188 dev lo:0
[root@localhost network-scripts]#chmod +x /etc/rc.d/rc.local
[root@localhost network-scripts]#ll /etc/rc.d/rc.local 
-rwxr-xr-x. 1 root root 484 11月 17 16:56 /etc/rc.d/rc.local

[root@localhost network-scripts]#vim /etc/sysctl.conf 
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP

[root@localhost network-scripts]#sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

相关推荐

  1. LVS

    2024-03-10 08:28:07       26 阅读
  2. <span style='color:red;'>LVS</span><span style='color:red;'>集</span><span style='color:red;'>群</span>

    LVS

    2024-03-10 08:28:07      49 阅读
  3. LVS+Keepalived

    2024-03-10 08:28:07       55 阅读
  4. <span style='color:red;'>LVS</span><span style='color:red;'>集</span><span style='color:red;'>群</span>

    LVS

    2024-03-10 08:28:07      31 阅读
  5. <span style='color:red;'>LVS</span><span style='color:red;'>集</span><span style='color:red;'>群</span>

    LVS

    2024-03-10 08:28:07      38 阅读
  6. <span style='color:red;'>lvs</span><span style='color:red;'>集</span><span style='color:red;'>群</span>

    lvs

    2024-03-10 08:28:07      44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 08:28:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 08:28:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 08:28:07       82 阅读
  4. Python语言-面向对象

    2024-03-10 08:28:07       91 阅读

热门阅读

  1. HTML:用对 preload、prefetch提升网页加载速度

    2024-03-10 08:28:07       42 阅读
  2. 计算机等级考试:信息安全技术 知识点一

    2024-03-10 08:28:07       44 阅读
  3. Go语言:一门简洁高效的编程语言

    2024-03-10 08:28:07       39 阅读
  4. jupyter notebook

    2024-03-10 08:28:07       40 阅读
  5. Golang中处理map和list的初始化问题

    2024-03-10 08:28:07       39 阅读
  6. SSRF漏洞原理及其修复方式和加固方式

    2024-03-10 08:28:07       41 阅读
  7. ubuntu root登陆桌面及ssh失败

    2024-03-10 08:28:07       40 阅读
  8. 剪枝例题一道

    2024-03-10 08:28:07       44 阅读
  9. linux的fseek函数

    2024-03-10 08:28:07       41 阅读