一. 企业群集的应用
1.1 群集的含义
- Cluster,集群,群集
- 由多台主机构成,但对外只表现为一个整体
1.2 企业的问题
- 互联网应用中,随着站点对硬件性能,响应速度,服务稳定性,数据可靠性等要求越来越高,单台服务器力不从心
1.3 解决方案
- 使用价格昂贵的小型机,大型机
- 使用普通服务器构建服务器群集
二. 企业群集的分类
根据群集所针对的目标差异,可分为三种类型
- 负载均衡群集
- 提高应用系统的响应能力,尽可能处理更多的访问请求,减少延迟为目标,获得高并发,高负载的整体性能
- LB的负载分配依赖于主节点的分流算法、
- 高可用群集
- 提高应用系统的可靠性,尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果。
- HA的工作方式包括双工和主从两种模式
- 高性能运算群集
- 提高应用系统的CPU运算速度,扩展硬件和分析能力为目标,获得相当于大型,超级计算机的高性能运算(HPC)能力。
- 高性能依赖于“分布式运算”,“并行计算”,通过专用硬件和软件将多个服务器的CPU,内存等资源整合在一起,实现只有大型,超级计算机才具备的计算能力
三. 负载均衡群集架构
3.1 负载均衡的结构
- 第一层:负载调度器----------根据需求,双活,主从
- 第二层:服务器池-------------根据客户需求选中可用区
- 第三层:共享存储-------------内容重分发
3.2 负载均衡群集三种工作模式
-
地址转换-------NAT模式
-
IP隧道---------TUN模式
-
直接路由--------DR模式
四. LVS虚拟服务器(Linux Virtual Server)
4.1 LVS的介绍
- 针对linux内核的负载均衡解决方案
- 1998年5月,由我国章文嵩博士创建
- 官方网站:http://www.linuxvirtualserver.org/
4.2 LVS的负载调度算法
4.3 LVS的部署步骤
- 加载ip_vs模块,安装ipvsadm工具
- 开启路由转发
- 新建LVS虚拟服务器并添加节点服务器
- 配置节点服务器
- 建立测试网站
- 挂载NFS共享存储
- 建立测试网页
- 保存规则并测试
4.3 地址转换模式案例(LVS-NAT)
一台调度器,两台WEB服务器集群池,一台NFS共享服务器
LVS虚拟服务器 20.0.0.23(内网卡)
192.168.100.23(外网卡)
web服务器1: 20.0.0.24
web服务器2: 20.0.0.26
存储服务器: 20.0.0.27
4.32 配置负载调度器
4.321 安装LVS管理工具ipvsadm
[root@mysql1 ~]# modprobe ip_vs //加载LVS内核板块,有时些版本不加载也可以调用这个模块
[root@mysql1 ~]# 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
TCP C0A80A01:0050 rr
-> 0C000018:0050 Masq 1 0 0
-> 0C000017:0050 Masq 1 0 0
[root@mysql1 ~]# yum -y install ipvsadm
[root@mysql1 ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
#启动ipvsadm
[root@lvs network-scripts]# systemctl start ipvsadm.service
Job for ipvsadm.service failed because the control process exited with error code. See "systemctl status ipvsadm.service" and "journalctl -xe" for details.
//发现启动不成功,centos可以直接启动成功,centos7 需要先保存 ipvsadm策略才能启动成功
[root@lvs network-scripts]# ipvsadm --save >>/etc/sysconfig/ipvsadm
[root@lvs network-scripts]# systemctl start ipvsadm.service
[root@lvs network-scripts]#
注意:实际上不systemctl start ipvsadm,不用启动也能成功实现这个功能
4.232 创建虚拟服务器
[root@mysql1 ~]# ipvsadm -C //清除ipvsadm 的缓存,相当于初始化
[root@mysql1 ~]# ipvsadm -A -t 192.168.100.23:80 -s rr
注意:选项A表示添加虚拟服务器,-t 用来指定VIP地址及TCP端口,-s 用来指定负载调度算法-----轮询(rr),加权轮询(wrr),最少连接(lc),加权最少连接(wlc)
4.233 添加服务器节点
[root@mysql1 ~]# ipvsadm -a -r 20.0.0.24:80 -t 192.168.100.23:80 -m
[root@mysql1 ~]# ipvsadm -a -r 20.0.0.26:80 -t 192.168.100.23:80 -m
注意:-a表示添加真实服务器,-t用来指定VIP 地址及TCP端口,-r用来指定RIP地址及TCP端口,-m表示使用NAT集群模式(-g DR模式,-i TUN模式),-w用来设置权重(权重为0时表示暂停节点)
4.234 查看群集节点状态
[root@mysql1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.100.23:80 rr
-> 20.0.0.24:80 Masq 1 0 0
-> 20.0.0.26:80 Masq 1 0 0
注意:结合-l 可以列表查看LVS虚拟服务器,结合-n将以数字的形式显示地址和端口
4.235 删除服务器节点
[root@mysql1 ~]# ipvsadm -d -r 20.0.0.24:80 -t 192.168.100.23:80
注意:需要从服务器池中删除某一个节点时,使用选项-d
4.236 保存负载分配策略
[root@mysql1 ~]# ipvsadm-save > /opt/peihua
[root@mysql1 ~]# cat /etc/peihua
-A -t mysql1:http -s rr
-a -t mysql1:http -r 20.0.0.24:http -m -w 1
-a -t mysql1:http -r 20.0.0.26:http -m -w 1
4.237 配置路由转发
[root@mysql1 ~]# vi /etc/sysctl.conf
####省略
net.ipv4.ip_forward = 1 //在文件末尾开启路由转发
[root@mysql1 ~]# sysctl -p //刷新配置文件
net.ipv4.ip_forward = 1
4.24 配置NFS共享存储服务
[root@localhost mysql-5.7.20]# yum -y install nfs-utils
[root@localhost mysql-5.7.20]# yum -y install rpcbind
[root@localhost mysql-5.7.20]# systemctl start nfs
[root@localhost mysql-5.7.20]# systemctl start rpcbind
[root@localhost opt]#mkdir -p 51xit 52xit
[root@localhost opt]# echo 'this is 51xit' >> 51xit/index.html
[root@localhost opt]# echo 'this is 52xit' >> 52xit/index.html
[root@localhost opt]# vim /etc/exports
/opt/51xit 20.0.0.0/24(rw,sync,no_root_squash)
/opt/52xit 20.0.0.0/24(rw,sync,no_root_squash)
[root@localhost mysql-5.7.20]# systemctl restart rpcbind
[root@localhost mysql-5.7.20]# systemctl restart nfs
[root@localhost mysql-5.7.20]# systemctl enable nfs
[root@localhost mysql-5.7.20]# systemctl enable rpcbind
4.25 配置节点服务器
在20.0.0.24服务器中
[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# systemctl start nfs rpcbind
[root@localhost ~]# showmount -e 20.0.0.27
Export list for 20.0.0.27:
/opt/52xit 20.0.0.0/24
/opt/51xit 20.0.0.0/24
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# mount 20.0.0.27:/opt/51xit /var/www/html
[root@localhost ~]# vi /etc/fstab
20.0.0.27:/opt/51xit /var/www/html nfs defaluts_netdev 0 0
//永久挂载
在20.0.0.26服务器中
[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# systemctl start nfs rpcbind
[root@localhost ~]# showmount -e 20.0.0.27
Export list for 20.0.0.27:
/opt/52xit 20.0.0.0/24
/opt/51xit 20.0.0.0/24
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# mount 20.0.0.27:/opt/52xit /var/www/html
[root@localhost ~]# vi /etc/fstab
20.0.0.27:/opt/52xit /var/www/html nfs defaluts_netdev 0 0
//永久挂载
4.26 验证LVS
输入调度器的外网地址192.168.100.23进行验证
刷新一下