无为县城乡建设局网站,如何用discuz做网站,黑龙江省建设安全教育信息网,外贸流程图片目录
一、什么是LVS
二、LVS的核心思想
三、 LVS的优势
四、LVS的调度算法 4.1. LVS的调度算法类型
4.2. LVS静态调度算法
4.3. LVS动态调度算法 4.4.在4.15版本内核以后新增调度算法 五、LVS软件相关信息
六、ipvsadm命令
七、 LVS的NAT模式实验详解
7.1实验环境
7.…
目录
一、什么是LVS
二、LVS的核心思想
三、 LVS的优势
四、LVS的调度算法 4.1. LVS的调度算法类型
4.2. LVS静态调度算法
4.3. LVS动态调度算法 4.4.在4.15版本内核以后新增调度算法 五、LVS软件相关信息
六、ipvsadm命令
七、 LVS的NAT模式实验详解
7.1实验环境
7.2实验要求
7.3实验步骤
1.环境搭建
2. Lvs中打开内核路由功能
3.webserver1和webserver2配置
4.webserver1和webserver2下载httpd模块并写页面内容
5. LVS中测试保证可以正常访问后端两台真实服务器 6. LVS中安装软件
7. LVS添加服务和算法规则-s rr表示调度算法是轮询算法
8.客户机访问测试
7.4 nat模式数据逻辑
八、LVS的DR模式实验详解
8.1实验环境
8.2实验要求
8.3实验步骤
1.环境搭建
2.路由器开启内核路由功能
3.配置rs主机中使vip不对外响应webserver1和webserver2
4.在LVS主机中和rs主机中添加VIP
5.客户机测试
6.Wireshark抓包查看MAC地址变化
8.4 DR模式数据逻辑
九、LVS-火墙mark标记解决调度问题
9.1实验环境
9.2实验要求
9.3实验步骤
1.RS安装mod_ssl模块让RS支持https
2.查看端口确保端口都存在
3.LVS主机中为端口做标记 4.客户端访问测试
十、LVS的TUN模式不常用了解一下
10.1转发方式
10.2 TUN模式数据传输过程
10.3 TUN详解
十一、LVS的fullnet模式了解
11.1 fullnet模式简介
11.2 fullnet模式详解
十二、LVS各种模式之间的对比 一、什么是LVS LVS是Linux Virtual Server的简写也就是Linux虚拟服务器是一个虚拟的服务器集群系统。这个项目在1998年5月由章文嵩博士成立是中国国内最早出现的自由软件项目之一。LVS实际上相当于基于IP地址的虚拟化应用为基于IP地址和内容请求分发的负载均衡提出了高效的解决方法。现在LVS已经是Linux内核标准的一部分。使用LVS可以达到的技术目标是通过LVS达到的负载均衡技术和Linux操作系统实现一个高性能高可用的Linux服务器集群具有良好的可靠性、可扩展性和可操作性从而以低廉的成本实现最优的性能。LVS是一个实现负载均衡集群的开源软件项目LVS架构从逻辑上可分为调度层、Server集群层和共享存储层。 LVS基于4层的负载均衡技术它是Linux内核的一个模块。LVS提供了四种模式包括lvs-nat、lvs-fullnat、lvs-dr和lvs-tun。这些模式各有特点例如lvs-nat与lvs-fullnat模式下请求和响应报文都经由Director而lvs-dr与lvs-tun模式下请求报文要经由Director但响应报文由RS直接发往Client。 总的来说LVS是一种高效的负载均衡解决方案通过调度层将请求分发到Server集群层中的多个服务器上以提高系统的可用性和性能。它是通过修改Linux内核来实现的具有成本低、性能高、可靠性好等优点。 二、LVS的核心思想 LVS的核心思想是实现负载均衡和容错性。 LVSLinux Virtual Server是一种高性能的服务器负载均衡解决方案它通过在Linux内核中集成ip_vs模块来实现四层负载均衡。LVS的核心思想主要体现在以下几个方面 负载均衡LVS通过调度器Director Server将客户端的请求分发到后端真实服务器Real Server从而实现负载均衡。这种分发基于预设的算法进行确保请求被均匀分配到各个真实服务器上以提高服务器的整体处理能力和资源利用率。 容错性LVS支持动态添加或删除真实服务器允许在不影响服务的情况下进行扩展或缩减服务能力。这种动态调整的能力使得系统具有很好的容错性能够应对真实服务器的宕机、升级或弹性伸缩等变化。 透明性对于客户端而言LVS提供了一个虚拟的IP地址VIP用户通过访问这个虚拟IP地址来访问服务而不需要知道背后真实的服务器结构和数量。这种透明性使得LVS能够保护后端服务器的隐私和安全性。 高性能LVS利用IP负载均衡技术通过调度器直接处理网络层的请求避免了应用层代理的额外开销从而提高了数据传输的效率和性能。 综上所述LVS的核心思想是通过负载均衡和容错性来提高服务器的整体性能和可用性同时保持对用户透明的访问方式保护后端服务器的安全和隐私。 三、 LVS的优势 LVS的优势主要包括高性能、稳定性、广泛的协议支持、低成本和配置简单。 高性能LVS运行在Linux内核空间具有较低的延迟和较高的吞吐量能够提供高性能的网络服务。稳定性作为内核模块LVS可以提供较高的稳定性具有强大的抗负载能力并且自身有完整的双机热备方案如LVSKeepalived确保了服务的稳定运行。广泛的协议支持LVS几乎可以对所有应用做负载均衡包括http、数据库、在线聊天室等工作在4层网络协议上提供了广泛的协议支持。低成本LVS只需一台服务器即可免费部署使用性价比极高相对于硬件负载均衡器的成本要低得多。配置简单LVS的配置非常简单仅需几行命令即可完成配置也可写成脚本进行管理大大减少了人为出错的几率。 此外LVS还支持多种负载均衡算法包括轮询、加权轮询、最小连接数等以及支持TCP、UDP等多种传输层协议使其能够根据业务场景灵活调配使用。这些优势使得LVS在高性能网络服务中成为一个受欢迎的选择。 四、LVS的调度算法 4.1. LVS的调度算法类型 ipvs scheduler根据其调度时是否考虑各RS当前的负载状态被分为两种静态方法和动态方法 静态方法仅根据算法本身进行调度不考虑RS的负载情况 动态方法主要根据每RS当前的负载状态及调度算法进行调度Overheadvalue较小的RS将被调度 4.2. LVS静态调度算法 1、RRroundrobin 轮询 RS分别被调度当RS配置有差别时不推荐 2、WRRWeighted RR加权轮询根据RS的配置进行加权调度性能差的RS被调度的次数少 3、SHSource Hashing实现session sticky源IP地址hash将来自于同一个IP地址的请求始终发往 第一次挑中的RS从而实现会话绑定 4、DHDestination Hashing目标地址哈希第一次轮询调度至RS后续将发往同一个目标地址的请 求始终转发至第一次挑中的RS典型使用场景是正向代理缓存场景中的负载均衡如宽带运营商 4.3. LVS动态调度算法 原理 主要根据RS当前的负载状态及调度算法进行调度Overheadvalue较小的RS会被调度 1、LCleast connections最少链接发 适用于长连接应用Overhead负载值activeconns活动链接数 x 256inactiveconns非活 动链接数 2、WLCWeighted LC权重最少链接 默认调度方法Overhead(activeconns x 256inactiveconns)/weight 3、SEDShortest Expection Delay, 初始连接高权重优先Overhead(activeconns1inactiveconns) x 256/weight 但是当node1的权重为1node2的权重为10经过运算前几次的调度都会被node2承接 4、NQNever Queue第一轮均匀分配后续SED 5、LBLCLocality-Based LC动态的DH算法使用场景根据负载状态实现正向代理 6、LBLCRLBLC with Replication带复制功能的LBLC解决LBLC负载不均衡问题从负载重的复制 到负载轻的RS 4.4.在4.15版本内核以后新增调度算法 1.FO(Weighted Fai Over)调度算法常用作灰度发布 在此FO算法中遍历虚拟服务所关联的真实服务器链表找到还未过载(未设置IP_VS_DEST_F OVERLOAD标志)的且权重最高的真实服务器进行调度 当服务器承接大量链接我们可以对此服务器进行过载标记IP_VS_DEST_F OVERLOAD那么vs调度 器就不会把链接调度到有过载标记的主机中。 2.OVF(Overflow-connection)调度算法基于真实服务器的活动连接数量和权重值实现。将新连接调度到权重值最高的真实服务器直到其活动 连接数量超过权重值之后调度到下一个权重值最高的真实服务器,在此OVF算法中遍历虚拟服务相关 联的真实服务器链表找到权重值最高的可用真实服务器。一个可用的真实服务器需要同时满足以下条 件: 未过载(未设置IP_VS_DEST_F OVERLOAD标志) 真实服务器当前的活动连接数量小于其权重值 其权重值不为零 五、LVS软件相关信息 程序包ipvsadm Unit File: ipvsadm.service主程序/usr/sbin/ipvsadm规则保存工具/usr/sbin/ipvsadm-save规则重载工具/usr/sbin/ipvsadm-restore配置文件/etc/sysconfig/ipvsadm-config ipvs调度规则文件/etc/sysconfig/ipvsadm 六、ipvsadm命令
核心功能:
集群服务管理:增、删、改集群服务的RS管理:增、删、改查看
部分命令展示
命令描述示例ipvsadm -A添加一个新的虚拟服务ipvsadm -A -t 192.168.1.100:80 -s rripvsadm -E修改已存在的虚拟服务ipvsadm -E -t 192.168.1.100:80 -s wrripvsadm -D删除虚拟服务ipvsadm -D -t 192.168.1.100:80ipvsadm -a添加一个真实服务器到虚拟服务中ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.200 -mipvsadm -e修改真实服务器的参数ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.200 -g -w 10ipvsadm -d从虚拟服务中删除真实服务器ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.200ipvsadm -L查看 IPVS 表ipvsadm -L -nipvsadm -C清空 IPVS 表ipvsadm -Cipvsadm -S保存 IPVS 表到指定文件ipvsadm -S /etc/sysconfig/ipvsadmipvsadm -R从指定文件恢复 IPVS 表ipvsadm -R /etc/sysconfig/ipvsadm 如果想要了解更多的ipvsadm命令可以访问下面链接学习https://www.cnblogs.com/rushiyi/p/12425905.htmlhttps://www.cnblogs.com/rushiyi/p/12425905.html 七、 LVS的NAT模式实验详解 7.1实验环境 前提因为ipvs的作用点是在PREROUTING和INPUT链之间所以如果在prerouting中设定规则会干扰ipvs的工 作。所以在做lvs时要把iptables的火墙策略全清理掉。 1.使用母盘主机克隆四台红帽9机子。
2.两台作为真实服务器一台作为LVS负载调度器一台作为客户端。
3.LVS负载调度器两张网卡一张NAT一张仅主机NAT作为VIP连接客户端仅主机作为DIP连接两台服务器作为两台服务器的网关NAT网卡在172.25.254.0/24网段IP地址是172.25.254.100/24仅主机在192.168.0.0/24网段IP地址是192.168.0.100。
4.两台真实服务器一张网卡模式为仅主机网段是192.168.0.0/24webserver1的IP地址是192.168.0.10/24webserver2的IP地址是192.168.0.20/24。
5.客户端一张网卡模式为NAT模式网段是172.25.254.0/24IP地址是172.25.254.200。 7.2实验要求
要求从客户端访问LVS能做到负载均衡
第一次如果是webserver1响应的第二次就是webserver2响应。 7.3实验步骤
1.环境搭建
LVS主机两张网卡一张NAT模式一张仅主机模式。NAT作为VIP连接客户端仅主机作为DIP连接两台服务器作为两台服务器的网关。 NAT网卡在172.25.254.0/24网段仅主机在192.168.0.0/24网段对应的IP配置如下图
NAT 仅主机 2. Lvs中打开内核路由功能
#查看打开内核路由功能的命令
[rootLVS ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward 0 # 0表示关闭1表示打开
net.ipv4.ip_forward_update_priority 1
net.ipv4.ip_forward_use_pmtu 0#修改配置文件
[rootLVS ~]# vim /etc/sysctl.conf
[rootLVS ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward 1
[rootLVS ~]# sysctl -p
net.ipv4.ip_forward 13.webserver1和webserver2配置
webserver1
#配置IP地址和网关ipv4.method manual表示为手动模式 connection.autoconnect yes表示为自动连接
[rootwebserver1 ~]# nmcli connection modify ens160 ipv4.addresses 192.168.0.10/24 ipv4.gateway 192.168.0.100 ipv4.method manual connection.autoconnect yes#重启网卡
[rootwebserver1 ~]#nmcli connection up ens160webserver2
#配置IP地址和网关ipv4.method manual表示为手动模式 connection.autoconnect yes表示为自动连接
[rootwebserver2 ~]# nmcli connection modify ens160 ipv4.addresses 192.168.0.20/24 ipv4.gateway 192.168.0.100 ipv4.method manual connection.autoconnect yes#重启网卡
[rootwebserver2 ~]#nmcli connection up ens160 4.webserver1和webserver2下载httpd模块并写页面内容
webserver1
[rootwebserver1 ~]# yum install httpd -y
[rootwebserver1 ~]# echo webserver1 192.168.0.10 /var/www/html/index.html
[rootwebserver1 ~]# cat /var/www/html/index.html
webserver1 192.168.0.10
webserver2
[rootwebserver2 ~]# yum install httpd -y
[rootwebserver2 ~]# echo webserver1 192.168.0.20 /var/www/html/index.html
[rootwebserver2 ~]# cat /var/www/html/index.html
webserver1 192.168.0.20
注意
在企业中两个服务器的页面应该是一致的但是这里是实验环境我们设不一致方面我们观察实验结果。 5. LVS中测试保证可以正常访问后端两台真实服务器
[rootLVS ~]# curl 192.168.0.10
webserver1 192.168.0.10
[rootLVS ~]# curl 192.168.0.20
webserver2 192.168.0.20 6. LVS中安装软件 7. LVS添加服务和算法规则-s rr表示调度算法是轮询算法 8.客户机访问测试
[rootlocalhost ~]# curl 172.25.254.100
webserver1 192.168.0.10
[rootlocalhost ~]# curl 172.25.254.100
webserver2 192.168.0.20
[rootlocalhost ~]# curl 172.25.254.100
webserver1 192.168.0.10
[rootlocalhost ~]# curl 172.25.254.100
webserver2 192.168.0.207.4 nat模式数据逻辑 1.客户端发送访问请求请求数据包中含有请求来源cip访问目标地址VIP访问目标端口 9000port
2.VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口
3.RS1相应请求发送响应数据包包中的相应保温为数据来源RIP1响应目标CIP相应端口 9000port
4.VS服务器接收到响应数据包改变包中的数据来源RIP1--VIP,响应目标端口9000--80
5.VS服务器把修改过报文的响应数据包回传给客户端 八、LVS的DR模式实验详解 8.1实验环境
1.母盘克隆五台红帽9机子
2.两台作为真实服务器一台作为LVS负载调度器一台作为路由器一台作为客户端
3.webserver1和webserver2环境配置和上个实验一样。
4.LVS只需一张仅主机的网卡IP地址为192..168.0.50禁用上个实验NAT那张网卡。
5.路由器两张网卡一张NAT模式IP地址为172.25.254.100作为客户端的网关一张仅主机连接内网IP地址为192.168.0.100作为内网的网关。
6.客户端IP地址为172.25.254.200网关为172.25.254.100. 8.2实验要求
要求从客户端访问LVS能做到负载均衡第一次如果是webserver1响应的第二次就是webserver2响应。且服务器返回数据的时候是直接通过VIP返回给客户端不经过交换机这些。 8.3实验步骤
1.环境搭建
IP配置与上一个实验操作相同这里不细说。参考上一个实验配置IP的方式将实验环境搭建完成。LVS记得禁用网卡和内核路由功能。
LVS中禁用网卡的命令格式为
nmcli device disconnect 网卡名
2.路由器开启内核路由功能
与上一个实验相同在配置文件中加入命令即可。 3.配置rs主机中使vip不对外响应webserver1和webserver2
webserver1 webserver2 4.在LVS主机中和rs主机中添加VIP 在DR模式中RS接收到访问请求后不需要回传给LVS调度器直接把回传数据发送给client所以RS和LVS上都要有vip
#配置环回网卡IP
[rootLVS ~]# ip a a 192.168.0.200/32 dev lo
rs主机配置相同都是上面这一条命令。
注意网段是/32一定不要写错了VIP要独立的应该网段。 5.客户机测试
[rootclient ~]# curl 192.168.0.200
webserver2 192.168.0.20
[rootclient ~]# curl 192.168.0.200
webserver2 192.168.0.20
[rootclient ~]# curl 192.168.0.200
webserver1 192.168.0.10
[rootclient ~]# curl 192.168.0.200
webserver2 192.168.0.20
[rootclient ~]# curl 192.168.0.200
webserver2 192.168.0.20
[rootclient ~]# curl 192.168.0.200
webserver1 192.168.0.106.Wireshark抓包查看MAC地址变化
将自己所有主机的MAC地址记录一下然后用抓包工具抓包查看一下注意抓的是内网的包。 8.4 DR模式数据逻辑
这也是前面要抓包的原因因为DR模式在传递的时候IP层是不变的IP地址都一样改变的第二层MAC地址所有只有通过抓包查看MAC地址的变化来观察原理。
1.客户端发送数据帧给vs调度主机帧中内容为客户端IP客户端的MACVIPVIP的MAC
2.VS调度主机接收到数据帧后把帧中的VIP的MAC该为RS1的MAC此时帧中的数据为客户端IP客户端 的MACVIPRS1的MAC
3.RS1得到2中的数据包做出响应回传数据包数据包中的内容为VIPRS1的MAC客户端IP客户端IP的MAC 九、LVS-火墙mark标记解决调度问题
9.1实验环境
1.在上一个实验的环境下继续完成实验。 9.2实验要求
问题以http和https为例当我们在RS中同时开放80和443端口那么默认控制是分开轮询的这样我们就出 现了一个轮询错乱的问题 当我第一次访问80被轮询到RS1后下次访问443仍然可能会被轮询到RS1上
1.如果不做火墙mark标志当客户端通过http的80端口和https的443端口访问时两次是后端同一台服务器发来的如下所示
[rootclient ~]# curl 192.168.0.200; curl -k https://192.168.0.200
webserver1 192.168.0.20
webserver2 192.168.0.20
2.这是我们不想看见的我们LVS执行的算法是rr轮询要做到负载均衡第一次http如果是10主机发来的回复那么第二次https的应该是20主机发来的。这就是本次实验要实现的要求。 9.3实验步骤
1.RS安装mod_ssl模块让RS支持https
webserver1
[rootwebserver1 ~]# yum install mod_ssl -y
#一定要重启不让不行
[rootwebserver1 ~]# systemctl restart httpd
webserver2
[rootwebserver2 ~]# yum install mod_ssl -y
[rootwebserver1 ~]# systemctl restart httpd 2.查看端口确保端口都存在
[rootwebserver1 ~]# netstat -lnupt | grep httpd
tcp6 0 0 :::80 :::* LISTEN 3855/httpd
tcp6 0 0 :::443 :::* LISTEN 3855/httpd
[rootwebserver2 ~]# netstat -lnupt | grep httpd
tcp6 0 0 :::80 :::* LISTEN 3855/httpd
tcp6 0 0 :::443 :::* LISTEN 3855/httpd 3.LVS主机中为端口做标记
#先清空规则
[rootLVS ~]# ipvsadm -C
[rootLVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size4096)
Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConn#为端口做标记 -A添加-D删除
[rootLVS ~]# -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66#基于标记定义集群服务
[rootLVS ~]# ipvsadm -A -f 66 -s rr
[rootLVS ~]# ipvsadm -a -f 66 -r 192.168.0.10 -g
[rootLVS ~]# ipvsadm -a -f 66 -r 192.168.0.20 -g
[rootLVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size4096)
Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConn
FWM 66 rr- 192.168.0.10:0 Route 1 0 0 - 192.168.0.20:0 Route 1 0 0 4.客户端访问测试
#-k忽略https证书不然访问不了
[rootclient ~]# curl 192.168.0.200; curl -k https://192.168.0.200
webserver1 192.168.0.10
webserver2 192.168.0.20
[rootclient ~]# curl 192.168.0.200; curl -k https://192.168.0.200
webserver1 192.168.0.10
webserver2 192.168.0.20 十、LVS的TUN模式不常用了解一下
10.1转发方式
不修改请求报文的IP首部源IP为CIP目标IP为VIP而在原IP报文之外再封装一个IP首部 源IP是DIP目标IP是RIP将报文发往挑选出的目标RSRS直接响应给客户端源IP是VIP目标IP是CIP 10.2 TUN模式数据传输过程
1.客户端发送请求数据包包内有源IPvipdport
2.到达vs调度器后对客户端发送过来的数据包重新封装添加IP报文头新添加的IP报文头中包含TUNSRCIP(DIP)TUNDESTIP(RSIP1)并发送到RS1
3.RS收到VS调度器发送过来的数据包做出响应生成的响应报文中包含SRCIP(VIP)DSTIPCIPport响应数据包通过网络直接回传给client 10.3 TUN详解
如果想要了解更多可以访问一下链接
https://www.cnblogs.com/luwei0915/articles/10488825.htmlhttps://www.cnblogs.com/luwei0915/articles/10488825.html 十一、LVS的fullnet模式了解
11.1 fullnet模式简介
fullnat通过同时修改请求报文的源IP地址和目标IP地址进行转发
CIP -- DIP
VIP -- RIP
1.VIP是公网地址RIP和DIP是私网地址且通常不在同一IP网络因此RIP的网关一般不会指向DIP
2.RS收到的请求报文源地址是DIP因此只需响应给DIP但Director还要将其发往Client
3.请求和响应报文都经由Director
4.支持端口映射 11.2 fullnet模式详解
如果想要了解更多可以访问一下链接
https://blog.51cto.com/u_16099331/9937768https://blog.51cto.com/u_16099331/9937768 十二、LVS各种模式之间的对比 模式特点优点缺点适用场景NAT 模式Network Address Translation通过修改请求报文的目标 IP 地址实现转发。配置简单容易实现。扩展性较差较大规模时可能成为系统瓶颈。中小规模的网络服务。TUN 模式IP Tunneling采用 IP 隧道技术将请求报文封装转发。集群中的服务器可以跨越不同网段扩展性好。服务器需要支持隧道功能配置复杂。服务器分散在不同地域的情况。DR 模式Direct Routing直接路由模式通过改写请求报文的 MAC 地址进行转发。性能高没有 IP 封装开销。要求服务器和调度器在同一物理网段。对性能要求较高的场景。FullNAT 模式不仅修改请求报文的目标 IP 地址还修改源 IP 地址。解决了 NAT 模式中源地址冲突的问题扩展性较好。相比 DR 模式有一定的性能开销。当后端服务器和前端调度器的网络环境较复杂时适用。