集群定义:为解决某个特定问题将多个计算机组合起来形成一个单系统
集群目的:为了解决系统的性能瓶颈
集群发展历史:
垂直扩展:向上扩展,增加单个机器的性能,即升级硬件
水平扩展:向外扩展,增加设备。并行的运行多个服务,通过网络和算法来调度服务分配的问题
三者关系:A=MTBF/(MTBF+MTTR)
停机时间:
计划内停机:指预定时间内的维护或者检修时间
计划外停机:运维人员主要关注
1、可扩展性:集群要有随时可以添加或者删除设备的能力以及动态地扩缩容
2、可靠性:集群中如果有节点发生故障,可以快速检测并且自动切换
3、负载均衡:合理地分配负载,避免单个节点过载,影响整体性能
4、可维护性:能够方便地进行配置、维护、监控,降低成本
5、安全性:防止恶意攻击以及数据泄露、丢失
6、易用性:相关的工作人员可以方便地进入集群,能够快速地开发、部署、测试等等
Linux Virtual Server:是一个部署在Linux系统通过内核层面实现负载均衡的软件
主要作用:多个后端服务器组成一个高可用、高性能、负载均衡的高性能集群。通过负载均衡的算法将客户端请求发送到后端服务器
LVS集群当中的术语:
vs(virtual server):lvs服务的逻辑名字,外部访问lvs集群时提供的一个虚拟ip地址和端口
DS(Directop server):lvs集群当中的主服务器,也叫调度器,是整个lvs集群的核心,接受客户端的请求转发到后端RS
RS(real server):lvs的后端的真实服务器的ip,接收到了DS的请求之后返回响应结果
CIP(client ip):客户端的ip地址
VIP(virtual ip):对外提供访问的同一虚拟IP地址
DIP(Director ip):调度器在lvs内部使用的ip地址,用于和真实服务器进行通信
RIP:后端真实服务器的ip地址
这种情况下,客户端既不知道请求的真实服务器,也不知道响应的服务器
NAT(Network Address Translation):地址转换,访问的是vip,进入集群,调度器来选择一台后端的真实服务器,然后转发到真实服务器;响应过程是先到调度器,调度器做地址转换,再把响应发送到客户端。
DR(Direct Routing):直接路由模式 ,在LVS集群和后端服务器之间建立一个虚拟接口,将客户端请求直接发送到后端服务器,并将后端服务器返回的响应包通过LVS集群进行转发。
TUN(Tunneling):隧道协议, 将客户端请求通过LVS集群中的一个IP地址和端口号发送到后端服务器,同时在LVS集群和后端服务器之间建立一个隧道进行数据传输。
其中NAT和DR是最常用的方式
ipvasdm工具:管理ipvs内核模块的命令行工具,可用于配置和管理lvs集群
ipvasdm工具常用选项:
-A:添加虚拟服务器
-D:删除整个虚拟服务器
-s:指定负载调度的算法
-a:添加真实服务器
-d:删除真实服务器
-t:指定VIP地址的端口号
-r:指定RIP的端口号
-m:表示使用nat模式
-g:表示使用DR模式
-i:表示使用TUN模式
-w:设置真实服务器的权重
-p 60:设置连接保持的时间60s

- 实验配置:
- 20.0.0.10:调度器内网网卡
- 12.0.0.1:调度器外网网卡
- 20.0.0.40:nfs共享存储
- 20.0.0.61:web集群1
- 20.0.0.62:web集群2
- 20.0.0.20:访问客户端
- 40、61、62:
- yum -y install nfs-utils rpcbind
- 40:
- [root@pup4 ~]# cd /opt
- [root@pup4 opt]# mkdir pup benet
- [root@pup4 opt]# chmod 777 /opt/kgc/ /opt/benet/
- [root@pup4 opt]# echo "this is pup" > /opt/pup/index.html
- [root@pup4 opt]# echo "this is benet" > /opt/benet/index.html
- [root@pup4 opt]# vim /etc/exports
- --添加--
- /opt/pup 20.0.0.0/24(rw,sync)
- /opt/benet 20.0.0.0/24(rw,sync)
-
- [root@pup4 opt]# systemctl restart rpcbind
- [root@pup4 opt]# systemctl restart nfs
- [root@pup4 opt]# exportfs -rv
- exporting 20.0.0.0/24:/opt/benet
- exporting 20.0.0.0/24:/opt/pup
- 61:
- [root@nginx1 ~]# systemctl restart rpcbind
- [root@nginx1 ~]# systemctl restart nfs
- [root@nginx1 ~]# showmount -e 20.0.0.40
- Export list for 20.0.0.40:
- /opt/benet 20.0.0.0/24
- /opt/pup 20.0.0.0/24
- [root@nginx1 ~]# mount 20.0.0.40:/opt/pup /usr/local/nginx/html
- [root@nginx1 ~]# systemctl restart nginx
- 62:
- [root@nginx2 ~]# systemctl restart rpcbind
- [root@nginx2 ~]# systemctl restart nfs
- [root@nginx2 ~]# showmount -e 20.0.0.40
- Export list for 20.0.0.40:
- /opt/benet 20.0.0.0/24
- /opt/pup 20.0.0.0/24
- [root@nginx2 ~]# mount 20.0.0.40:/opt/benet /usr/local/nginx/html
- [root@nginx2 ~]# systemctl restart nginx


- 61、62相同操作:
- [root@nginx1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
- --修改--
- GATEWAY=20.0.0.10
- #DNS1=218.2.135.1
-
- [root@nginx1 ~]# systemctl restart network
- [root@pup1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
- --修改--
- #GATEWAY=20.0.0.2
- #DNS1=218.2.135.1



- [root@pup1 network-scripts]# cp ifcfg-ens33 ifcfg-ens36
- [root@pup1 network-scripts]# vim ifcfg-ens36

- [root@pup1 network-scripts]# systemctl restart network
- [root@pup1 network-scripts]# iptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens36 -j SNAT --to 12.0.0.1

- [root@pup1 network-scripts]# yum install ipvsadm* -y
- [root@pup1 yum.repos.d]# ipvsadm -A -t 12.0.0.1:80 -s rr
- [root@pup1 yum.repos.d]# ipvsadm -a -t 12.0.0.1:80 -r 20.0.0.61:80 -m
- [root@pup1 yum.repos.d]# ipvsadm -a -t 12.0.0.1:80 -r 20.0.0.62:80 -m
- [root@pup1 yum.repos.d]# ipvsadm-save>/etc/sysconfig/ipvsadm
- [root@pup1 yum.repos.d]# systemctl restart ipvsadm.service

- [root@pup1 yum.repos.d]# vim /etc/sysctl.conf
- --添加--
- net.ipv4.ip_forward = 1
-
- [root@pup1 yum.repos.d]# sysctl -p
- net.ipv4.ip_forward = 1

20.0.0.20客户端网卡配置:


