音乐网站开发案例,电脑上怎么删除wordpress,妇产医院,河北省市场监督管理局目录
介绍
lvs简介
LVS作用
LVS 的优势与不足
LVS概念与相关术语
LVS的3种工作模式
LVS调度算法
LVS-dr模式
LVS-tun模式
ipvsadm工具使用
实验
nat模式集群部署
实验环境
webserver1配置
webserver2配置
lvs配置
dr模式集群部署
实验环境
router
效果呈现…目录
介绍
lvs简介
LVS作用
LVS 的优势与不足
LVS概念与相关术语
LVS的3种工作模式
LVS调度算法
LVS-dr模式
LVS-tun模式
ipvsadm工具使用
实验
nat模式集群部署
实验环境
webserver1配置
webserver2配置
lvs配置
dr模式集群部署
实验环境
router
效果呈现
lvs中防火墙的标签
在服务器中安装mod_ssl模块
在lvs主机中为端口做标记
配置lvs规则
测试 介绍
lvs简介 LVS 是Linux Virtual Server的简称也就是 Linux 虚拟服务器,是一个极好的负载均衡解决方案它将一个真实服务器集群虚拟成一台服务器来对外提供服务同时在真实服务器集群中实现了负载均衡。该技术由章文嵩博客发起从linux2.4开始已经被收录到linux核心中。 是一个由章文嵩博士发起的自由软件项目它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分因此性能较高。 LVS作用 通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。 随着互联网在人们生活中的普及企业级应用迎来了海量数据的冲击如微信、美团外卖、微信支付等应用每天的使用人数都在千万以上仅靠单台机器提供服务已经行不通了。 我们可以使用多台服务器分摊这些压力当一定数量的服务器作为一个整体对外提供服务并且分摊压力时我们可以称这些服务器为“负载均衡集群”。LVS就是一个优秀的负载均衡集群方案它理论上能够无限水平扩展使得服务能够应对海量数据的冲击。 LVS 的优势与不足 优势 高并发连接LVS基于内核网络层面工作有超强的承载能力和并发处理能力。单台LVS负载均衡器可支持上万并发连接。 稳定性强是工作在网络4层之上仅作分发之用这个特点也决定了它在负载均衡软件里的性能最强稳定性最好对内存和cpu资源消耗极低。 成本低廉硬件负载均衡器少则十几万多则几十万上百万LVS只需一台服务器和就能免费部署使用性价比极高。 配置简单LVS配置非常简单仅需几行命令即可完成配置也可写成脚本进行管理。 支持多种算法支持多种论调算法可根据业务场景灵活调配进行使用 支持多种工作模型可根据业务场景使用不同的工作模式来解决生产环境请求处理问题。 应用范围广因为LVS工作在4层所以它几乎可以对所有应用做负载均衡包括http、数据库、DNS、ftp服务等等。 不足 软件本身不支持正则表达式处理不能做动静分离而现在许多网站在这方面都有较强的需求这个是Nginx/HAProxyKeepalived的优势所在。 如果是网站应用比较庞大的话LVS/DRKeepalived实施起来就比较复杂。 LVS概念与相关术语 LVS中的一些术语 VSVirtual Server 虚拟服务器通常是分发器 RSReal Server 实际提供服务器的真实服务器 CIPClient IP 客户的客户端IP VIPVirtual Server IP 虚拟服务器的IP RIPReal Server IP 真实服务器的IP DIPDirector IP 分发器的IP CIP – VIP DIP – RIP 客户端访问VIPDIP将请求转发到RIP LVS的原理如下图所示 工作原理 VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS根据调度算法来挑选RS。 分发服务器以VIP对外提供服务器当接收到客户端服务请求时便根据预定的分发策略例如轮询将请求分发到Real Server中由Real Server做实际的业务处理。当Real Server处理完成后根据不同的模式会使用不同的方式返回请求结。 LVS的3种工作模式 根据服务返回方式和集群分布的不同LVS有3中不同的工作模式他们分别是NAT地址转换模式、DR直接路由模式和TUN隧道模式。 LVS/NAT网络地址转换模式进站/出站的数据流量经过分发器(IP负载均衡他修改的是IP地址) --利用三层功能 LVS/TUN 隧道模式只有进站的数据流量经过分发器 LVS/full-nat: 双向转换:通过请求报文的源地址为DIP目标为RIP来实现转发对于响应报文而言修改源地址为VIP目标地址为CIP来实现转发 LVS调度算法 ipvs scheduler根据其调度时是否考虑各RS当前的负载状态 分为两种静态方法和动态方法 静态方法 仅根据算法本身进行调度重点加粗 1、RRroundrobin轮询轮着来,较常用 2、WRRWeighted RR加权轮询,较常用根据性能情况按比例分配 3、SHSource Hashing实现session sticky源IP地址hash将来自于同一个IP地址的请求始终发往第一次挑中的RS从而实现会话绑定,避免调度到其他机器导致session丢失需要重新登录但是有小的问题很多人用同一个公网ip被调度到同一服务器。 4、DHDestination Hashing目标地址哈希第一次轮询调度至RS后续将发往同一个目标地址的请求始终转发至第一次挑中的RS典型使用场景是正向代理缓存场景中的负载均衡,如: Web缓存 动态方法 1、WRR:加权轮训调度它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。 2、LC:最小连接数调度least-connection,IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS. 3、LBLC:基于地址的最小连接数调度locality-based least-connection将来自同一个目的地址的请求分配给同一台RS此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS并以它作为下一次分配的首先考虑。 4、LBLCLBLC with Replication带复制功能的LBLC解决LBLC负载不均衡问题从负载重的复制 到负载轻的RS LVC-nat模式 原理就是把客户端发来的数据包的IP头的目的地址在负载均衡器上换成其中一台RS的IP地址并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的源IP地址改为自己的IP将目的地址改为客户端IP地址即可期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器 优点集群中的物理服务器可以使用任何支持TCP/IP操作系统只有负载均衡器需要一个合法的IP地址。 缺点扩展性有限。当服务器节点普通PC服务器增长过多时,负载均衡器将成为整个系统的瓶颈因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时大量的数据包都交汇在负载均衡器那速度就会变慢 1.客户端发送访问请求请求数据包中含有请求来源cip访问目标地址VIP访问目标端口 9000port 2.VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口 3.RS1相应请求发送响应数据包包中的相应保温为数据来源RIP1响应目标CIP相应端口 9000port 4.VS服务器接收到响应数据包改变包中的数据来源RIP1--VIP,响应目标端口9000--80 5.VS服务器把修改过报文的响应数据包回传给客户端 6.lvs的NAT模式接收和返回客户端数据包时都要经过lvs的调度机所以lvs的调度机容易阻塞 LVS-dr模式 原理 负载均衡器和RS都使用同一个IP对外服务但只有DR对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC因为IP一致并将请求分发给这台RS这时RS收到这个数据包,处理完成之后由于IP一致可以直接将数据返给客户则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端 互联网应用中存在一个规律请求报文较短而响应报文往往包含大量的数据。如果能将请求和响应分开处理即在负载调度器(Director)中只负责调度请求而响应直接由RealServer返回给客户将极大地提高整个集群系统的吞吐量。 原理如下图 1.DR接受到请求后通过分发策略得出要将此请求分发到Real Server2。DS就将数据帧中的目标MAC地址修改为Real Server2的MAC地址,然后再将数据帧发送出去。为什么要用MAC地址因为此时Real Server也有配置有VIP 2.当Real Server2 收到一个源地址为CIP目标地址为VIP的数据包时,Real Server2发现目标地址为VIP,而VIP是自己,于是接受数据包并给予处理。 Real Server2处理完成后会将一个源地址为VIP而目标地址为CIP的数据包发送出去此时的响应请求就不会再经过DS而是直接响应给用户了。 3.在这个过程中存在一个问题由于RealServer也配置了VIP那么当CIP——VIP的数据包到达服务局域网进行广播时所有的服务器都会进行应答此时先应答的服务器就会收到数据包这样就失去了负载均衡的能力。因此在使用DR模式时通常会采用一些方式来确保请求数据包只会由DS接收例如抑制Real Server对广播的应答或者直接在路由器中对DS进行绑定等。 LVS-tun模式
TNU模式与DR模式非常相似它同样是只有请求信息会经过DS应答信息由Real Server直接返回给用户。不过DR模式中要求DS和所有的Real Server必须在一个局域网中而TNU模式去掉了这个限制。 原理 互联网上的大多Internet服务的请求包很短小而应答包通常很大。那么隧道模式就是把客户端发来的数据包封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议所以,在RS的内核中,必须编译支持IPTUNNEL这个选项 1.IP隧道技术又称为IP封装技术它可以将带有源和目标IP地址的数据报文使用新的源和目标IP进行二次封装这样这个报文就可以发送到一个指定的目标主机上。 2.隧道模式下调度器和后端服务器组之间使用IP隧道技术。当客户端发送的请求(CIP–VIP)被director接收后director修改该报文加上IP隧道俩端的IP地址作为新的源和目标地址并将请求转发给后端被选中的一个目标。 3.当后端服务器接收到报文后首先解封该报文原有的CIP—VIP,该后端服务器发现自身的tun接口上配置了VIP因此接受该数据包。 4.当请求处理完成后结果将不会重新交给director而是直接返回给客户端。此时响应数据包的源IP为VIP目标IP为CIP。 在TNU模式中DS与Real Server不必在一个网络中。DS在接到请求报文之后在报文的上面再加一层源地址为DIP目的地址为RIP2的IP首部然后通过广域网发送到Real Server2。 Real Server2收到报文拆掉报文以后发现了里面还有一个封装它就知道了这就是隧道。后续的过程就与DR一样了。
tun模式的特点 1.DIP, VIP, RIP都应该是公网地址 2.RS的网关一般不能指向DIP 3.请求报文要经由Director但响应不能经由Director 4.不支持端口映射 5.RS的OS须支持隧道功能 ipvsadm工具使用
LVS-server安装lvs管理软件 yum -y install ipvsadm 程序包ipvsadmLVS管理工具 主程序/usr/sbin/ipvsadm 规则保存工具/usr/sbin/ipvsadm-save /path/to/file 配置文件/etc/sysconfig/ipvsadm-config 命令选项 -A --add-service #在服务器列表中新添加一条新的虚拟服务器记录 -s --scheduler #使用的调度算法 rr | wrr | lc | wlc | lblb | lblcr | dh | sh | sed | nq 默认调度算法是 wlc 例ipvsadm -A -t 192.168.1.2:80 -s wrr -a --add-server #在服务器表中添加一条新的真实主机记录 -t --tcp-service #说明虚拟服务器提供tcp服务 -u --udp-service #说明虚拟服务器提供udp服务 -r --real-server #真实服务器地址 -m --masquerading #指定LVS工作模式为NAT模式 -w --weight #真实服务器的权值 -g --gatewaying #指定LVS工作模式为直接路由器模式也是LVS默认的模式 -i --ip #指定LVS的工作模式为隧道模式 -p #会话保持时间定义流量被转到同一个realserver的会话存留时间 例ipvsadm -a -t 192.168.1.2:80 -r 192.168.2.10:80 -m -w 1 -E -edit-service #编辑内核虚拟服务器表中的一条虚拟服务器记录。 -D -delete-service #删除内核虚拟服务器表中的一条虚拟服务器记录。 -C -clear #清除内核虚拟服务器表中的所有记录。 -R -restore #恢复虚拟服务器规则 -S -save #保存虚拟服务器规则到标准输出输出为-R 选项可读的格式 -e -edit-server #编辑一条虚拟服务器记录中的某条真实服务器记录 -d -delete-server #删除一条虚拟服务器记录中的某条真实服务器记录 -L|-l --list #显示内核虚拟服务器表 --numeric, -n#以数字形式输出地址和端口号 --exact #扩展信息精确值 --connection-c #当前IPVS连接输出 --stats #统计信息 --rate #输出速率信息 参数也可以从/proc/net/ip_vs*映射文件中查看 -Z –zero #虚拟服务表计数器清零清空当前的连接数量等 管理集群服务中的增删改大写--Virtual Services -A --add-service #在服务器列表中新添加一条新的虚拟服务器记录 ipvsadm -A -t 172.25.254.100:80 -s rr -E -edit-service #编辑内核虚拟服务器表中的一条虚拟服务器记录。 ipvsadm -E -t 172.25.254.100:80 -s wlc -D -delete-service #删除内核虚拟服务器表中的一条虚拟服务器记录。 ipvsadm -D -t 172.25.254.100:80 管理集群中的曾增删改小写--RealServer -a --add-server #在服务器表中添加一条新的真实主机记录 ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.30 -m -d -delete-server #删除一条虚拟服务器记录中的某条真实服务器记录 ipvsadm -d -t 172.25.254.100:80 -r 192.168.0.30 -e -edit-server #编辑一条虚拟服务器记录中的某条真实服务器记录 ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.30 -w 2 实验
nat模式集群部署
实验环境
主机名ipvip角色lvs192.168.0.100172.25.254.100调度器webserver1192.168.0.10null真实服务器webserver2192.168.0.20null真实服务器
webserver1配置 yum install httpd -y echo webserver1 - 192.168.0.10 /var/www/html/index.html systemctl restart httpd systemctl stop firewalld webserver2配置 yum install httpd -y echo webserver2 - 192.168.0.20 /var/www/html/index.html systemctl restart httpd systemctl stop firewalld lvs配置 yum install ipvsadm -y --- 安装软件ipvsadm echo net.ipv4.ip_forward1 /etc/sysctl.conf/ --- 启用内核路由并写入配置文件 在lvs添加调度策略 ipvsadm -A -t 172.25.254.100:80 -s rr ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m 查看策略 ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.254.100:80 rr - 192.168.0.10:80 Masq 1 0 0 - 192.168.0.20:80 关闭防火墙 systemclt stop firewalld 在lvs上测试 for i in {1..10} do curl 172.25.254.100 done dr模式集群部署
实验环境
主机IPVIP角色clientnat172.25.254.200 null客户端routernat:172.25.254.100仅主机192.168.0.100null路由器lvs仅主机192.168.0.50lo:192.168.0.200调度器webserver1仅主机192.168.0.10lo:192.168.0.200真实服务器1 webserver2仅主机192.168.0.20lo:192.168.0.200真实服务器2
router vmset.sh eth0 172.25.254.100 router.hyl.org vmset.sh eth1 192.168.0.100 router.hyl.org vim /etc/NetworkManager/system-connections/eth1.nmconnect ion nmcli connection reload nmcli connection up reth1 eth0网卡 cat /etc/NetworkManager/system-connections/eth0.nmconnection [connection] ideth0 typeethernet interface-nameeth0 [ipv4] address1172.25.254.100/24,172.25.254.2 methodmanual dns114.114.114.114; eth1网卡 cat /etc/NetworkManager/system-connections/eth1.nmconnec [connection] ideth1 typeethernet interface-nameeth1 [ipv4] address1192.168.0.100/24 methodmanual webserver1 安装http服务 dnf install httpd -y echo webserver1 - 192.168.0.10 /var/www/html/index.html systemctl enable --now httpd 使vip不对外响应 echo 1 /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 /proc/sys/net/ipv4/conf/all/arp_announce echo 1 /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 /proc/sys/net/ipv4/conf/lo/arp_announce webserver2 安装http服务 dnf install httpd -y echo webserver1 - 192.168.0.20 /var/www/html/index.html systemctl enable --now httpd 使vip不对外响应 echo 1 /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 /proc/sys/net/ipv4/conf/all/arp_announce echo 1 /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 /proc/sys/net/ipv4/conf/lo/arp_announce lvs配置 vmset.sh eth1 192.168.0.50 lvs.hyl.org vim /etc/NetworkManager/system-connections/eth1.nmconnect ion nmcli connection reload nmcli connection up reth1 效果呈现 [rootclient ~]# for i in {1..10} do curl 192.168.0.200 done webserver1 - 192.168.0.10 webserver2 - 192.168.0.20 webserver1 - 192.168.0.10 webserver2 - 192.168.0.20 webserver1 - 192.168.0.10 webserver2 - 192.168.0.20 webserver1 - 192.168.0.10 webserver2 - 192.168.0.20 webserver1 - 192.168.0.10 webserver2 - 192.168.0.20 lvs中防火墙的标签
在服务器中安装mod_ssl模块 yum install mod_ssl -y systemctl restart httpd 在lvs主机中为端口做标记 [rootlvs ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66 [rootlvs ~]# iptables -t mangle -nL Chain PREROUTING (policy ACCEPT) target prot opt source destination MARK 6 -- 0.0.0.0/0 192.168.0.200 multiport dports 80,443 MARK set 0x42 Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination 配置lvs规则 [rootlvs ~]# ipvsadm -C [rootlvs ~]# ipvsadm -in IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn [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 -in 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 测试 [rootclient ~]# curl 192.168.0.200;curl -k https://192.168.0.200 webserver2 - 192.168.0.20 webserver - 192.168.0.10 webserver2 - 192.168.0.20 webserver - 192.168.0.10