LVS集群

14 篇文章 0 订阅

目录

一.集群和分布式

1.系统性能的扩展方式

2.集群的类型

3.分布式系统

4.集群和分布式

5.集群设计原则

6.集群设计实现

1.基础设施层面

2.业务层面

二.负载均衡群集架构

三.LVS工作模式

1.LVS集群类型中的术语

2.NAT模式——地址转换

3.TUN模式——IP隧道

4.DR模式——直接路由

5.LVS工作模式总结和比较

四.ipvsadm

1.ipvsadm 工具选项

五.NAT模式LVS负载均衡部署

1.NFS服务器:192.168.68.40

2.配置节点服务器:192.168.68.200 192.168.68.105

3.客户机搭建:192.168.68.100 12.0.0.1

4.验证


一.集群和分布式

1.系统性能的扩展方式

  • 垂直扩展:提高物理硬件的性能
  • 水平扩展:增加设备,并行的运行服务调度

垂直扩展不建议,增大成本。

2.集群的类型

  • LB:Loading Balancing,负载均衡,多个主机组成,但每个主机只负责一部分
  • HA:High Availiablity,高可用,避免SPOF(单点故障)(系统中一点失效,整个系统就会无法正常运转)

单点故障就是整体故障

  • HPC:High-performance computing,高性能
MTBF:Mean Time Between Failure 平均无故障时间,正常时间

MTTR:Mean Time To Restoration( repair)平均恢复前时间,故障时间

A = MTBF /(MTBF+MTTR)

1年 = 365天 = 8760小时
90 = (1-90%)*365=36.5天
99 = 8760 * 1% = 87.6小时
99.9 = 8760 * 0.1% = 8760 * 0.001 = 8.76小时
99.99 = 8760 * 0.0001 = 0.876小时 = 0.876 * 60 = 52.6分钟
99.999 = 8760 * 0.00001 = 0.0876小时 = 0.0876 * 60 = 5.26分钟
99.9999= (1-99.9999%)*365*24*60*60=31秒

SLA:服务等级协议

#停机时间又分为两种,一种是计划内停机时间,一种是计划外停机时间,而运维则主要关注计划外停机时间。

#轮询(Round Robin):将收到的访问请求按照顺序轮流分配给群集中的各节点,均 等地对待每台服务器,而不管服务器实际的连接数和系统负载。 

#加权轮询(Weighted Round Robin):根据调度器设置的权重值来分发请求,权重 值高的节点优先获得任务并且分配的请求越多,这样可以保证性能高的节点承担更 多请求。 

#最少连接(Least Connections):根据真实服务器已建立的连接数进行分配,将收 到的访问请求优先分配给连接数最少的节点。如果所有的服务器节点性能相近,采用这种方式可以更好地均衡负载。 

#加权最少连接(Weighted Least Connections):在服务器节点的性能差异较大的 情况下,调度器可以根据节点服务器负载自动调整权重,权重较高的节点将承担更 大比例的活动连接负载。 

#IP_Hash根据请求来源的IP地址进行Hash计算,得到后端服务器,这样来自同一个IP的请求总是会落到同一台服务器上处理,以致于可以将请求上下文信息存储在这个服务器上,

#url_hash 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。具体没研究过

#fair采用的不是内建负载均衡使用的轮换的均衡算法,而是可以根据页面大小、加载时间长短智能的进行负载均衡。也就是根据后端服务器时间来分配用户请求,响应时间短的优先分配

3.分布式系统

  • 分布式存储:Ceph,GlusterFS,FastFS,MogileFS
  • 分布式计算:hadoop,Spark

4.集群和分布式

  • 集群:同一个业务系统,部署在多台服务器上。集群中,每一台服务器实现的功能都是一样的。
  • 分布式:一个业务分成几个不同的子业务。因此分布式中的服务器的功能是不一样的

分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

5.集群设计原则

  • 可扩展性:集群的水平扩展
  • 可用性
  • 性能
  • 容量:单位时间内的最大并发吞吐量

6.集群设计实现

1.基础设施层面

  • 提升硬件资源性能
  • 多域名——DNS
  • 多入口——将A记录解析到多个公网IP入口
  • 多机房——同城+异地容灾
  • CDN——Content Delivery Network:内容分发网络(就近原则)

2.业务层面

  • 分层——安全层、负载层、静态层、动态层、(缓存层、存储层)持久化与非持久化
  • 分割——基于功能分割大业务为小服务
  • 分布式

二.负载均衡群集架构

第一层:负载调度器

第二层:服务器池

第三层:共享存储

三.LVS工作模式

NAT:修改请求报文的目标IP,多目标IP的DNAT

TUN:隧道模式

DR:操纵封装新的MAC地址(直接路由)

1.LVS集群类型中的术语

  • VS:Virtual Server,Director Server(DS), Dispatcher(调度器),Load Balancer(lvs服务器)

  • RS:Real Server(lvs), upstream server(nginx), backend server(haproxy)(真实服务器)

  • CIP:Client IP(客户机IP)

  • VIP:Virtual serve IP VS外网的IP

  • DIP:Director IP VS内网的IP

  • RIP:Real server IP (真实IP)

 访问流程:CIP ——>VIP——>  DIP——>  RIP

2.NAT模式——地址转换

DNAT(外部访问内部)

  • Network Address Translation,简称NAT模式
  • 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
  • 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式

本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某处的RS的RIP和PORT实现转发

  • 真实IP和内网IP应在同一个IP网络,且应使用私网地址;真实服务器的网关要指向内网IP
  • 请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
  • 支持端口映射,可修改请求报文的目标PORT
  • VS必须是Linux系统,RS可以是任意OS系统

3.TUN模式——IP隧道

  • IP Tunnel,简称TUN模式;
  • 采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器;
  • 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信。

  • 真机IP和内网IP可以不处于同一物理网络中,真实服务器的网关一般不能指向内网IP,且真机IP可以和公网通信。也就是说集群节点可以跨互联网实现。内网IP, 虚拟IP, 内网IP可以是公网地址。

  • 真机服务器的通道接口上需要配置虚拟IP地址,以便接收内网IP转发过来的数据包,以及作为响应的报文源IP。

  • 内网IP转发给真机服务器时需要借助隧道,隧道外层的IP头部的源IP是内网IP,目标IP是RIP,而真机服务器响应给客户端的IP头部是根据隧道内层的IP头分析得到的,源IP虚拟IP,目标IP是客户机IP

  • 请求报文要经由Director,但响应不经由Director,响应由真机服务器自己完成

  • 不支持端口映射

  • 真机服务器的OS须支持隧道功能

4.DR模式——直接路由

  • Direct Routing,简称DR模式
  • 采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
  • 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

运用到arp和rarp的技术。通过请求报文重新封装一个MAC首部,进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变。

5.LVS工作模式总结和比较

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

四.ipvsadm

1.ipvsadm 工具选项

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

五.NAT模式LVS负载均衡部署

客户端:12.0.0.1

NFS服务器:192.168.68.40

web1节点服务器:192.168.68.200

web2节点服务器:192.168.68.105

客户端上环境搭建 

LVS现在已成为Linux内核的一部分,默认编译为ip_ vs模块,必要时能够自动调用。

## 加载ip_vs模块
[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

1.NFS服务器:192.168.68.40

 

 

 [root@localhost ooo]# vim index.html 

[root@localhost ooo]# vim index.html 

开启服务 

 

  

 

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y nfs-utils.x86_64 rpcbind.x86_64 
[root@localhost ~]# cd /opt/
[root@localhost opt]# mkdir oyyy ooo 
[root@localhost opt]# ls
ooo  oyyy
[root@localhost opt]# cd ooo/
[root@localhost ooo]# vim index.html
hello oooo!!!!
[root@localhost opt]# cd oyyy/
[root@localhost oyyy]# vim index.html 
hello oyyy!!!!
[root@localhost opt]# systemctl start rpcbind
[root@localhost opt]# systemctl start nfs
[root@localhost opt]# chmod -R 777 oyyy/ ooo/
[root@localhost opt]# vim /etc/exports
/opt/oyyy 192.168.68.0/24 (rw,sync)
/opt/ooo 192.168.68.0/24 (rw,sync)
[root@localhost opt]# systemctl restart nfs
[root@localhost opt]# exportfs -rv
exportfs: No options for /opt/oyyy 192.168.68.0/24: suggest 192.168.68.0/24(sync) to avoid warning
exportfs: No host name given with /opt/oyyy (rw,sync), suggest *(rw,sync) to avoid warning
exportfs: No options for /opt/ooo 192.168.68.0/24: suggest 192.168.68.0/24(sync) to avoid warning
exportfs: No host name given with /opt/ooo (rw,sync), suggest *(rw,sync) to avoid warning
exporting 192.168.68.0/24:/opt/ooo
exporting 192.168.68.0/24:/opt/oyyy
exporting *:/opt/ooo
exporting *:/opt/oyyy

2.配置节点服务器:192.168.68.200 192.168.68.105


 另外一台节点服务器


开启httpd服务 

修改网关 

 

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y httpd
[root@localhost ~]# showmount -e 192.168.68.40
Export list for 192.168.68.40:
/opt/ooo  (everyone)
/opt/oyyy (everyone)
[root@localhost ~]# mount 192.168.68.40:/opt/oyyy /var/www/html/
[root@localhost ~]# df
192.168.68.40:/opt/oyyy 52403200 5336320 47066880   11% /var/www/html
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ls
index.html
[root@localhost html]# cat index.html 
hello oyyy!!!!
[root@localhost html]# systemctl start httpd.service 
[root@localhost html]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@localhost html]# systemctl restart network
GATEWAY=192.168.68.100  ##将网关改为客户端的IP地址

3.客户机搭建:192.168.68.100 12.0.0.1

 

 增加一块网卡,网卡为ens37

 [root@localhost network-scripts]# vim ifcfg-ens33

  [root@localhost network-scripts]# vim ifcfg-ens37

 [root@localhost network-scripts]# vim /etc/sysctl.conf

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

## 加载ip_vs模块
[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@localhost ~]# yum install -y ipvsadm*

##添加一块网卡
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens33  ifdown-ipv6    ifdown-TeamPort  ifup-ippp   ifup-routes       network-functions
ifcfg-lo     ifdown-isdn    ifdown-tunnel    ifup-ipv6   ifup-sit          network-functions-ipv6
ifdown       ifdown-post    ifup             ifup-isdn   ifup-Team
ifdown-bnep  ifdown-ppp     ifup-aliases     ifup-plip   ifup-TeamPort
ifdown-eth   ifdown-routes  ifup-bnep        ifup-plusb  ifup-tunnel
ifdown-ib    ifdown-sit     ifup-eth         ifup-post   ifup-wireless
ifdown-ippp  ifdown-Team    ifup-ib          ifup-ppp    init.ipv6-global
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens37
[root@localhost network-scripts]# vim ifcfg-ens37
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=12.0.0.1
NETMASK=255.255.255.0
[root@localhost network-scripts]# vim ifcfg-ens33
IPADDR=192.168.68.100
NETMASK=255.255.255.0
[root@localhost network-scripts]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[root@localhost network-scripts]# sysctl -p
net.ipv4.ip_forward = 1
[root@localhost network-scripts]# iptables -nL -t nat
[root@localhost network-scripts]# iptables -t nat -A POSTROUTING -s 192.168.68.0/24 -o ens37 -j SNAT --to 12.0.0.1
[root@localhost network-scripts]# iptables -nL -t nat
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  192.168.68.0/24      0.0.0.0/0            to:12.0.0.1
[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 network-scripts]# ipvsadm -A -t 12.0.0.1:80 -s rr
[root@localhost network-scripts]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.68.200:80 -m
[root@localhost network-scripts]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.68.105:80 -m
[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.68.105:http          Masq    1      0          0         
  -> 192.168.68.200:http          Masq    1      0          0         
[root@localhost network-scripts]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr
  -> 192.168.68.105:80            Masq    1      0          0         
  -> 192.168.68.200:80            Masq    1      0          0     

4.验证

将验证主机的ip子网掩码和网关设置一下 

 

 

 输入12.0.0.1

 再刷新

 验证成功

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值