一:LVS群集应用基础
1.1:概述
1.群集的类型
无论是哪种群集, 都至少包括两台节点服务器, 而对外表现为一个整体, 只提供一个访问入口。根据群集所针对的目标差异, 可分为以下三种类型。
- 负载均衡群集(Load Balance Cluster) : 以提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标, 获得商并发、高负载的整体性能。例如, “ DNS轮询” “ 应用层交换” “ 反向代理”等都可用作负载均衡群集。LB 的负载分配依赖千主节点的分流算法, 将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。
- 高可用群集( High Availability Cluster) : 以提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用( HA ) 的容错效果。例如,“故障切换”“双机热备”“ 多机热备” 等都属千高可用群集技术。HA 的工作方式包括双工和主从两种模式。双工即所有节点同时在线; 主从则只有主节点在线, 但当出现故障时从节点能自动切换为主节点。
- 高性能运算群集( High Performance Computer Cluster ) : 以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当千大型、超级计算机的高性能运算( HPC) 能力。例如, “ 云计算” “ 网格计算” 也可视为高性能运算的一种。高性能运算群集的高性能依赖千“ 分布式运算” ” 并行计算“, 通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起, 实现只有大型、超级计算机才具备的计算能力。
2.负载均衡的分层结构
在典型的负载均衡群集中, 包括三个层次的组件, 如下图所示。前端至少有一个负载调度器( Load Bal ancer , 或称为D盯ector) 负责响应并分发来自客户机的访问请求; 后端由大量真实服务器( Rea l Server) 构成服务器池( Server Pool ) , 提供实际的应用服务,整个群集的伸缩性通过增加、删除服务器节点来完成, 而这些过程对客户机是透明的; 为了保持服务的一致性, 所有节点使用共享存储设备。
- 第一层, 负载调度器: 这是访问整个群集系统的唯一入口, 对外使用所有服务器共有的VIP (Virtual IP , 虚拟IP) 地址, 也称为群集IP 地址。通常会配置主、备两台调度器实现热备份, 当主调度器失效以后能够平滑替换至备用调度器, 确保高可用性。
- 第二层, 服务器池: 群集所提供的应用服务(如HTTP 、FTP ) 由服务器池承担, 其中每个节点具有独立的RI P ( Real IP , 真实IP) 地址,只处理调度器分发过来的客户机请求。当某个节点暂时失效时, 负载调度器的容错机制会将其隔离, 等待错误排除以后再重新纳入服务器池。
- 第三层, 共享存储: 为服务器池中的所有节点提供稳定、一致的文件存取服务, 确保整个群集的统一性。在L i nux/UNIX 环境中,共享存储可以使用NAS 设备, 或者提供NFS ( Ne twork 们l e S ys tem , 网络文件系统)共享服务的专用服务器。
3.负载均衡的工作模式
关于群集的负载调度技术, 可以基于IP 、端口、内容等进行分发, 其中基于IP 的负载调度是效率最高的。基千IP 的负载均衡模式中, 常见的有地址转换、IP 隧道和直接路由三种工作模式, 如下图所示。
- 地址转换(Ne twork Address Translat i on ) : 简称NAT 模式, 类似于防火墙的私有网络结构, 负载调度器作为所有服务器节点的网关, 即作为客户机的访问入口, 也是各节点回应客户机的访问出口。服务器节点使用私有IP 地址, 与负载调度器位于同一个物理网络, 安全性要优千其他两种方式。
- IP 隧道( IP Tunne l ) : 简称TUN 模式, 采用开放式的网络结构, 负载调度器仅作为客户机的访问入口, 各节点通过各自的Int ernet连接直接回应客户机, 而不再经过负载调度器。服务器节点分散在互联网中的不同位置, 具有独立的公网IP 地址, 通过专用IP 隧道与负载调度器相互通信。
- 直接路由( D i rec t Rout i ng) : 简称DR 模式, 采用半开放式的网络结构, 与TUN模式的结构类似, 但各节点并不是分散在各地, 而是与调度器位千同一个物理网络。负载调度器与各节点服务器通过本地网络连接, 不需要建立专用的IP 隧道。
1.2:LVS虚拟服务器
1.LVS 的负载调度算法
针对不同的网络服务和配置需要, LVS 调度器提供多种不同的负载调度算法,其中最常
用的四种算法是轮询、加权轮询、最少连接和加权最少连接。
- 轮询( Round Rob in) : 将收到的访问请求按照顺序轮流分配给群集中的各节点, 均等地对待每台服务器, 而不管服务器实际的连接数和系统负载。
- 加权轮询( We igh ted Round Rob i n) : 根据调度器设置的权重值来分发请求, 权重值高的节点优先获得任务并且分配的请求越多, 这样可以保证性能高的节点承担更多请求。
- 最少连接( Leas t Connec tions) : 根据真实服务器已建立的连接数进行分配, 将收到的访问请求优先分配给连接数最少的节点。如果所有的服务器节点性能相近, 采用这种方式可以更好地均衡负载。
- 加权最少连接( We ight ed Least Connec t i ons ) : 在服务器节点的性能差异较大的情况下, 调度器可以根据节点服务器负载自动调整权重, 权重较高的节点将承担更大比例的活动连接负载。
2. 使用ipvsadm 管理工具
ip vsadm 是在负载调度器上使用的LVS 群集管理工具,通过调用ip_vs 模块来添加、删除服务器节点, 以及查看群集的运行状态。在CentOS 7 系统中,需要手动安装ipvsadm. x86_64 0: 1. 27- 7. el 7 软件包。
[root @localhost ~]# yum -y i ns t all ipvsadm
[root @localhost~]# ipvsadm -v
ipvsadm v1. 27 2008/5/15 (compiled wi th popt and IPVS v1. 2. 1)
(1)创建虚拟服务器
若群集的V I P 地址为172. 1 6.1 6. 172 , 针对TCP 80 端口提供负载分流服务, 使用的调度算法为轮询, 则对应的i pvsadm 命令操作如下所示。对于负载均衡调度器来说, VIP 必须是本机实际已启用的IP 地址。
ipvsadm -A - t 172. 16. 16. 172:80 - s rr
上述操作中, 选项-A 表示添加虚拟服务器, -t用来指定V IP 地址及TCP 端口, -s 用来
指定负载调度算法——轮询( rr) 、加权轮询(wrr ) 、最少连接( le) 、加权最少连接( wlc) 。
(2) 添加服务器节点
为虚拟服务器17 2. 16 . 16. 172 添加四个服务器节点, IP 地址依次为1 92 . 168. 7. 21~24,对应的i pvsadm 命令操作如下所示。若希望使用保持连接, 还应添加“-p 60" 选项, 其中60 为保待时间( 单位为s) 。
[root @localhost~]# ipvsadm -a -t 172. 16. 16. 172:80 -r 192. 168. 7.21:80 -m 11 1
[root @localhost~]# ipvsadm -a -t 172. 16. 16. 172:80 -r 192. 168. 7.22:80 -m 11 1
[root @localhost ~]# ipvsadm -a - t 172. 16. 16. 172:80 - r 192. 168. 7.23:80 -m -w 1
[root @localhost ~]# ipvsadm -a -t 172. 16. 16. 172:80 -r 192. 168. 7.24:80 -m 11 1
上述操作中, 有以下选项:
► -a 表示添加真实服务器;
► -t用来指定VIP 地址及TCP 端口;
► -r 用来指定RIP 地址及TCP 端口;
► -m 表示使用NAT 群集模式( -g DR 模式和- i TUN 模式) ;
► -w 用来设置权重(权重为0 时表示暂停节点)。
( 3 ) 查看群集节点状态
结合选项-l 可以列表查看LVS 虚拟服务器, 可以指定只查看某一个VIP 地址( 默认为
查看所有) , 结合选项-n 将以数字形式显示地址、端口等信息。
[root @localhost~]# ipvsadm -ln //查看节点状态
上述输出结果中, Forward 列下的Masq对应Masquerade (地址伪装) , 表示采用的群集模式为NAT 。如果是Rou t e , 则表示采用的群集模式为DR 。
(4) 删除服务器节点
需要从服务器池中删除某一个节点时, 使用选项-d 。执行删除操作必须指定目标对象,包括节点地址、虚拟IP 地址。例如,以下操作将会删除LVS 群集172. 16. 16. 172 中的节点192. 168. 7. 24
ipvsadm -d -r 192. 168. 7.24:80 -t 172. 16. 16. 172:80
需要删除整个虚拟服务器时,使用选项-D 并指定虚拟IP 地址即可, 无须指定节点。例如, 若执行“ipvsadm - D - t 172 . 16. 16. 172:80" , 则删除此虚拟服务器。
(5) 保存负载分配策略
使用导出/导入工具ipvsadm-save/ ipvsad旷restore 可以保存、恢复LVS 策略。当然也可以快速清除、重建负载分配策略。
[root @localhost~]# ipvsadm-save > /etc/sysconfig/ipvsadm //保存策略
[root @localhost ~]11 cat /et c/sysconfig/ipvsadm //确认保存结果
-A - t 172.16.16.172:http - s rr
- a - t 172. 16. 16. 172: http - r 192. 168. 7. 21 : http -m -w 1
- a - t 172. 16. 16. 172: http -r 192. 168. 7. 22: http -m -w 1
- a - t 172.16.16. 172:http - r 192.168. 7.23:http -m -w 1
[root @localhost ~]# systemct l stop ipvsadm //停止服务( 清除策略)
[root @localhost ~]# systemct l start ipvsadm //启动服务( 重建规则)
1.3:NFS 共享存储服务
1.使用NFS 发布共享资源
NFS 服务的实现依赖千RPC ( Remote Process Cal l, 远端过程调用) 机制,以完成远程到本地的映射过程。在CentOS 7 系统中, 需要安装nfs-utils 、rpcbind 软件包来提供NFS共享服务, 前者用千NFS 共享发布和访问, 后者用千RPC 支持。
(1 ) 安装nfs-uti ls 、rpcbind 软件包
提供RPC 支持的服务为rpcb i nd , 提供NFS 共享的服务为nfs , 完成安装以后建议调整这两个服务的自启动状态, 以便每次开机后自动启用。手动加载NFS 共享服务时, 应该先启动rpcb i n d , 再启动nfs 。
[root @localhost~]# yum -y install nfs-utils rpcbi nd
[root @localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbi nd
( 2 ) 设置共享目录
NFS 的配置文件为/e tc/exports , 文件内容默认为空( 无任何共享)。在exports 文件中设置共享资源时, 记录格式为“ 目录位置客户机地址(权限选项) “。例如, 若要将文件夹/opt/wwwroot共享给192 . 168. 7 . 0/24 网段使用, 允许读写操作, 具体配置如下所示。
[root@localhost ~]# mkdir -p /opt/wwwroot
[root@localhost ~]# vi /etc/exports
/opt/wwwroot 192.168.10.0/24(rw,sync,no_root_squash)
其中客户机地址可以是主机名、IP 地址、网段地址, 允许使用* 、?通配符; 权限选项中的rw 表示允许读写(ro 为只读) , s ync 表示同步写入, no_root_squash 表示当客户机以root身份访问时赋予本地root权限(默认是root_squash , 将作为nf snobody 用户降权对待)。
当需要将同一个目录共享给不同的客户机, 且分配不同的权限时, 只要以空格分隔指定多个“ 客户机( 权限选项) ” 即可。例如, 以下操作将/var/ftp/pub l i c 目录共享给两个客户机, 并分别给予只读、读写权限。
[root @localhost ~]# vi /etc/export s
/var/ftp/public 192. 168. 7. 11 (ro) 192. 168. 7. 22(rw)
( 3 ) 启动NFS 服务程序
[root @localhost ~]# sys t emct l s t art rpcbi nd
[root @localhost ~] # sys t emct l s t art nf s
[root@l ocalhost ~] # net s t at -anpt I grep rpc
( 4 ) 查看本机发布的NFS 共享目录
[root @localhost ~]# showmount - e
2. 在客户机中访问NFS 共享资源
NFS 协议的目标是提供一种网络文件系统, 因此对NFS 共享的访问也使用mount命令来进行挂载,对应的文件系统类型为nfs 。既可以手动挂载,也可以加入/etc/fstab 配置文件来实现开机自动挂载。考虑到群集系统中的网络稳定性, NFS 服务器与客户机之间最好使用专有网络进行连接。
(1) 安装rpcbind 软件包, 并启动rpcbind 服务。
若要正常访问NFS 共享资源, 客户机中也需要安装rpcbind 软件包, 并启动rpcbind系统服务。另外,为了使用showmount 查询工具, 建议将nfs-utils 软件包也一并装上。
[root@localhost~]# yum -y i ns t all rpcbind nf s-utils
[root@l ocalhost ~] # sys t emct l enable rpcbi nd
[ root@l ocalhost ~]# sys t emct l start rpcbind
如果已经安装了nfs-uti ls 软件包,则客户机也可以使用showmount 查看NFS 服务器端共享了哪些目录, 查询格式为“ shmvmount -e 服务器地址”。
( 2 ) 手动挂载NFS 共享目录。
以roo t 用户身份执行mount操作, 将NFS 服务器共享的/opt/wwwroot目录挂载到本地目录/var/www/h tml 。
[root@l ocalhost ~]# mount 192. 168. 7.250:/opt/wwwroot /var/www/html
[root @localhost~]# tail -1 /etc/mtab //确认挂载结果[root @localhost ~]# vi /var/www/html/i ndex.html //在客户机创建测试文件
Real Web Server Document
完成挂载以后, 访问客户机的/var/吓w/html 文件夹, 实际上就相当千访问NFS 服务器中的/opt/wwwroot文件夹, 其中的网络映射过程对千用户程序来说是透明的。例如, 上述操作中创建的index. ht ml 测试文件, 会立刻出现在服务器的/opt/wwwroot/目录下。
(3) fstab 自动挂载设置。
修改/e t c/fs tab 配置文件, 加入NFS 共享目录的挂载设置。注意将文件系统类型设为nfs , 挂载参数建议添加_net dev (设备需要网络)。若添加soft 、intr 参数可以实现软挂载,允许在网络中断时放弃挂载。这样, 客户机就可以在每次开机后自动挂载NFS 共享资源了。
[root @localhost ~]# vi /et c/f st ab
…… //省略部分信息
192. 168. 7. 250: /opt/wwwroot /var/www/html nfs defaul ts, _net dev 0 0