- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章LVS(Linux Virtual Server)Linux 虚拟服务器介绍及配置(负载均衡系统)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
一,简介 LVS(Linux Virtual Server) 是Unix-like系统中的一个虚拟服务器,是国内贡献给开源组织的一个最优秀的项目之一。LVS在Unix-like系统中 是作为一个前端(Director)存在的,又称为调度器,它本身不提供任何的服务,只是将通过互联网进来的请求接受后再转发给后台运行的真正的 服务器(RealServer)进行处理,然后响应给客户端。 LVS有两个重要的组件:一个是IPVS,一个是IPVSADM。ipvs是LVS的核心组件,它本身只是一个框架,类似于iptables,工作于内核空间中。 ipvsadm 是用来定义LVS的转发规则的,工作于用户空间中。 LVS有三种转发类型: 1.LVS-NAT模型,称为网络地址转换,实现起来比较简单。 2.LVS-DR模型,称为直接路由模型,应用比较广泛。 3.LVS-TUN模型,称为隧道模型。 2、LVS的三种模型的工作属性: 1.LVS-NAT模型的工作属性或特: (1).所有的RealServer集群节点和前端调度器Director都要在同一个子网中 (2).通常情况下RealServer的IP地址(以下简成RIP)为私有地址,便于RealServer集群节点之间进行通信 (3).通常情况下前端的Director有两个IP地址,一个为VIP,是虚拟的IP地址,客户端向此IP地址发起请求。 一个是DIP,是真正的Director的IP地址,RIP的网关要指向Director的DIP。 (4).这种模型可以实现端口映射 (5).RealServer的操作系统可以是任意操作系统 (6).前端的Director既要处理客户端发起的请求,又要处理后台RealServer的响应信息,将RealServer响应的信息再转发给客户端 (7).前端Director很容易成为整个集群系统性能的瓶颈。 2.LVS-DR模型的工作属性或特征:此种模型通过MAC地址转发工作,如何转发后面将会介绍。 (1).所有的RealServer集群节点和前端调度器Director都要在同一个物理网络中 (2).RIP可以使用公网的IP (3).RIP的网关不能指向DIP (4).前端的Director只处理客户端的请求,然后将请求转发给RealServer,由后台的RealServer直接响应客户端,不再经过Director (5).此种模型不支持端口映射 (6).RealServer可以使用大多数的操作系统 (7).此种模型的性能要优于LVS-NAT 3.LVS-TUN模型的基本工作属性或特征 (1).RealServer服务器与前端的Director可以在不同的网络中 (2).RIP一定不能是私有IP (3).前端的Director只处理客户端的请求,然后将请求转发给RealServer,由后台的RealServer直接响应客户端,不再经过Director (4).此种模型也不支持端口映射 (5).RealServer只能使用哪些支持IP隧道的操作系统 三。LVS Scheduling Method LVS的调度方法: 1.Fixed Scheduling Method 静态调服方法 (1).RR 轮询 (2).WRR 加权轮询 (3).DH 目标地址hash (4).SH 源地址hash 2.Dynamic Scheduling Method 动态调服方法 (1).LC 最少连接 (2).WLC 加权最少连接 (3).SED 最少期望延迟 (4).NQ 从不排队调度方法 (5).LBLC 基于本地的最少连接 (6).LBLCR 带复制的基于本地的最少连接 4、ipvsadm组件定义规则的格式: 1.定义集群服务格式: (1).添加集群服务: ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] -A: 表示添加一个新的集群服务 -E: 编辑一个集群服务 -t: 表示tcp协议 -u: 表示udp协议 -f: 表示firewall-Mark,防火墙标记 service-address: 集群服务的IP地址,即VIP -s 指定调度算法 -p 持久连接时长,如#ipvsadm -Lcn ,查看持久连接状态 -M 定义掩码 ipvsadm -D -t|u|f service-address 删除一个集群服务 ipvsadm -C 清空所有的规则 ipvsadm -R 重新载入规则 ipvsadm -S [-n] 保存规则 2.向集群服务添加RealServer规则: (1).添加RealServer规则 ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] -a 添加一个新的realserver规则 -e 编辑realserver规则 -t tcp协议 -u udp协议 -f firewall-Mark,防火墙标记 service-address realserver的IP地址 -g 表示定义为LVS-DR模型 -i 表示定义为LVS-TUN模型 -m 表示定义为LVS-NAT模型 -w 定义权重,后面跟具体的权值 ipvsadm -d -t|u|f service-address -r server-address –删除一个realserver ipvsadm -L|l [options] –查看定义的规则 如:#ipvsadm -L -n ipvsadm -Z [-t|u|f service-address] –清空计数器 5、LVS-NAT模型实例 1。先配置好网络环境,要三个虚拟机(本次实验在虚拟机上完成),一台用作Director,其他两台分别为RealServer1 和RealServer2 其中Director要两个网卡,Eth0网卡为桥接(Birdged),Eth1网卡为仅主机(Host-only),RealServer1 和RealServer2的网卡也都是仅主机 类型的。 2.为了演示效果,将Director的两块网卡配置成不在同一个网段的IP地址,RealServer1 和RealServer2的IP地址为同一网段,规划如下图:
要注意的是:要将本地物理机的Vmnet1的IP地址配置成和Director的Eth1网卡的IP地址在同一个网段中,同时将RealServer1和RealServer2的网关指向Director主机的Eth1网卡的地址,如下图所示:
3.配置好网络环境之后就开始配置ipvsadm,确保在物理机上能ping通Eth0的IP地址,如下图所示:
能Ping通,说明物理主机已经可以和Director虚拟主机通信了。 4.在Director虚拟主机上配置: #echo 1 > /proc/sys/net/ipv4/ip_forward –开启IP转发功能 #rpm -qa ipvsadm –查看ipvsadm是否安装,如果没有安装则安装之,直接使用yum安装即可 #yum install ipvsadm -y 定义LVS-NAT模型规则 此处使用的是web服务器进行的演示,在192.168.24.44和192.168.24.45上都提供了nginx服务,其中 192.168.24.44提供的网页信息为“welcome realserver 1”,192.168.24.45提供的网页信息为“welcome realserver 2” #ipvsadm -A -t 172.16.100.24:80 -s rr #ipvsadm -a -t 172.16.100.24:80 -r 192.168.24.44 -m #ipvsadm -a -t 172.16.100.24:80 -r 192.168.24.45 -m #ipvsadm -L -n –查看定义的规则 这些规则都是临时规则,不会永久生效的,要想永久生效可以保存规则,命令如下: #service ipvsadm save 5.在Internet Explorer浏览器中访问172.16.100.24,会显示如下图所示信息:
而在google浏览器中访问172.16.100.24,会显示如下图所示信息:
如果刷新页面或者使用不同的浏览器,会轮流显示页面,这就是最简单的服务器负载均衡啦! 6、LVS-DR模型的实现过程: 1.首先规划集群和网路环境,需要三台虚拟机,如下图所示: 此时Director可以只有一个网卡Eth0,连接类型为桥接(Birdged),RealServer1和RealServer2 的网卡连接类型也都为桥接(Birdged)
2.配置集群服务 (1).在Director服务器上配置: #ifconfig eth0:1 172.16.100.100 broadcast 172.16.100.100 netmask 255.255.255.255 up #route add -host 172.16.100.100 dev eth0:1 #echo 1 > /proc/sys/net/ipv4/ip_forward –开启IP转发功能 (2).在realserve1服务器上进行配置: # echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce #ifconfig lo:0 172.16.100.100 broadcast 172.16.100.100 netmask 255.255.255.255 up #route add -host 172.16.100.100 dev lo:0 (3).在realserver2 服务器上进行配置 # echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce #ifconfig lo:0 172.16.100.100 broadcast 172.16.100.100 netmask 255.255.255.255 up #route add -host 172.16.100.100 dev lo:0 (4).再在Director上配置ipvsadm规则: #ipvsadm -A -t 172.16.100.100:80 -s rr -g #ipvsadm -a -t 172.16.100.100:80 -r 172.16.24.34 #ipvsadm -a -t 172.16.100.100:80 -r 172.16.24.44 (5).在浏览器中进行验证: 进行第一次访问,如下图所示:
进行第二次访问,如下图所示:
3.基于ssl的访问 [root@mail ~]# ipvsadm -A -t 172.16.100.100:443 -s rr [root@mail ~]# ipvsadm -a -t 172.16.100.100:443 -r 172.16.24.2 -g [root@mail ~]# ipvsadm -a -t 172.16.100.100:443 -r 172.16.24.3 -g 2、LVS Persistence ,lvs的持久连接性 持久连接类型: (1).Persistent Client Connections(PCC),持久客户端连接:就是不管客户端发起什么样的服 务(如80端口的web服务,3306端口的mysql服务)请求,都将经过Director被定位到同一个特定的real server上, 只要此real server 提供了这种服务,并且会持续连接,如果客户端连接超时,real server允许一定范围内的 持久连接时长,默认持久连接时长为300m #ipvsadm -A -t 172.16.100.100:0 -p 1200 #ipvsadm -a -t 172.16.100.100:0 -r 172.16.100.34 -g -w 10 #ipvsadm -a -t 172.16.100.100:0 -r 172.16.100.44 -g -w 5 验证效果如下图:
(2).Persistent Port Connections(PPC),持续端口连接:就是不管客户端发起什么样的端口请求(如80端口,是提供web服务的,23端口,是提供telnet服务的….), 都会经过Director将请求转发到同一个real server上,并持续连接。假如一个客户端请求的是web服务,相应的是realserver1 ,当此用户退出后再次发起请求web服务的时候 依然是realserver1 提供的web服务。 iptables: [root@mail ~]# iptables -t mangle -A PREROUTING -i eth0 -p tcp -d 172.16.100.100 –dport 80 -j MARK –set-mark 20 [root@mail ~]# iptables -t mangle -A PREROUTING -i eth0 -p tcp -d 172.16.100.100 –dport 443 -j MARK –set-mark 20 [root@mail ~]# iptables -t mangle -L -n Chain PREROUTING (policy ACCEPT) target prot opt source destination MARK tcp — 0.0.0.0/0 172.16.100.100 tcp dpt:80 MARK set 0x14 MARK tcp — 0.0.0.0/0 172.16.100.100 tcp dpt:443 MARK set 0x14 把80端口和443 端口做成一个持久防火墙标记,同时定向到同一个realserver上,即在访问80服务的时候是realserver1, 然后改为访问443服务的时候依然定向到realserver1上 基于防火墙标记来定义集群服务,也称为端口的姻亲关系。 ipvsadm: [root@mail ~]# ipvsadm -A -f 20 -s wlc -p 1200 [root@mail ~]# ipvsadm -a -f 20 -r 172.16.24.2 -g -w 3 [root@mail ~]# ipvsadm -a -f 20 -r 172.16.24.3 -g -w 2 [root@mail ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn FWM 20 wlc persistent 1200 -> 172.16.24.3:0 Route 2 0 0 -> 172.16.24.2:0 Route 3 0 本文出自 “知识体系” 博客 。
最后此篇关于LVS(Linux Virtual Server)Linux 虚拟服务器介绍及配置(负载均衡系统)的文章就讲到这里了,如果你想了解更多关于LVS(Linux Virtual Server)Linux 虚拟服务器介绍及配置(负载均衡系统)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
如何检查枚举是否等于可能情况之一。有没有比以下更好的解决方案: [.orderedAscending, .orderedSame].contains(Calendar.current.compare(
我正在尝试使用 openCV 和 C++ 来均衡 HSV 图像的直方图。我知道有些带有 openCV 的库可以为我执行此操作,但我想手动尝试以了解该方法。 我假设均衡将在 HSV 图像的 V chan
我有一个包含多个列的表格。这些列可以包含不同大小的内容,因此高度会有所不同。 我想做的是调整单个元素的高度,使它看起来像这样: . .table { display: flex; ba
:) 我有一个小问题: 我有一个 div,在里面有两个 div,一个挨着另一个。左边的一个在调整大小时改变其高度以保持其与宽度的关系,我希望右边的一个与左边的高度相同;我在文档末尾的 jQuery 中
我正在尝试在 YAML 中创建三列布局。我正在使用此框架的网格功能来定位列(导航、内容、侧边栏)。 我的问题:如何将所有三个 div 的高度设置为相同的大小。 YAML 应该提供 ym-equaliz
这个问题在这里已经有了答案: How do I keep two side-by-side div elements the same height? (24 个答案) 关闭 5 年前。 有没有一种
好像我的 JavaScript 没有听我的。我只是想将所有 anchor 的高度设置为等于这些 anchor 的最高高度。 HTML {{products.title}}
我想对同一主题的两个半脸彩色图像进行均衡,然后将它们合并。它们每个都有不同的色调饱和度和亮度值....使用 opencv 我如何标准化/均衡每个半图像? 我尝试执行 cvEqualizeHist(v,
当一个div高度很大时,我想等于两个div的高度 例子: B ACD Div 2 的高度大于 div 1 最佳答案 我可能有一个可能的解决方案: http://jsfiddle.net/adaz/w
我正在尝试做类似的事情(我已经删除了不必要的东西) Models.Parent.findAll({ where: { parent_id: {
我在 node 中使用 typescript,它在开发模式下运行良好,通过使用以下命令运行我的 index.ts 和 ts-node。 ts-node src/index.ts 但是当我将 types
我是一名优秀的程序员,十分优秀!