1.服务器安装
我们选择目前大部分生产环境使用的rhel7操作系统
在虚拟机中安装:
2.服务器初始化
关闭selinux
vi /etc/sysconfig/selinux
稍后重启
关闭火墙
停用NetworkManager
配置yum源
将光驱设置为开机自动连接
mount /dev/cdrom /media/
挂载在/media目录
vi /etc/yum.repos.d/dvd.repo
yum install -y vim net-tools
#安装vim和net-tools网络工具
vim /etc/fstab
配置网络
vim /boot/grub2/grub.cfg
#添加内核参数,修改网卡命名 net.ifnames=0
reboot重启生效
vim ifcfg-eth0
一般情况下使用静态网络,手动设置ip,较稳定
vim ifcfg-eth0
修改主机名
yum install -y bash-*
#安装后支持shell界面命令的tab键补齐
vim /etc/hosts
#添加本地解析,为后续实验准备
时间同步
yum install -y chrony
#安装软件
vim /etc/chrony.conf
systemctl restart chronyd
#重启服务
同步成功
虚拟机封装好以后直接关机,后面不要再启动了,新建虚拟机只需要克隆此虚拟机即可
拍摄快照
克隆
克隆到第二台主机时,将修改主机名和ip,以此类推
server2:
用MobaXterm软件远程连接使用
3.技术架构简介
C/S架构
B/S架构
再克隆一台主机,修改主机名为server3,ip192.168.145.13
11作为调度器,12、13作后端服务器
4.LVS负载均衡集群
分摊流量,流量从调度器自动负载到后端
yum install -y ipvsadm
#安装ipvsadm包
ipvsadm -ln
#查看LVS调度策略
lsmod
#查看linux内核模块
添加vip地址
ip addr add 192.168.145.100/24 dev eth0
添加lvs策略
ipvsadm命令
ipvsadm -A -t 192.168.145.100:80 -s rr
#-t 添加tcp服务,-s 调度算法,rr轮调制度
ipvsadm -a -t 192.168.145.100:80 -r 192.168.145.12:80 -g
ipvsadm -a -t 192.168.145.100:80 -r 192.168.145.13:80 -g
#往tcp服务中-r添加real server后端服务器地址,-g 直连网关
yum install -y httpd
systemctl enable --now httpd
#在后端服务器中安装测试服务apache并设置开机自启
echo server2 > /var/www/html/index.html
echo server3 > /var/www/html/index.html
#设定测试页
当访问vip服务时,会自动将流量均摊到真实服务器上
再克隆一个主机作为测试服务器server4
访问失败原因是服务器未处理用户需求
real server也需添加vip
禁用arp
须屏蔽real server的vip响应
禁用arp协议
yum install arptables
#安装软件包,管理arp协议,类似于iptables
测试
使用windows浏览器不会轮换,因为有缓存功能
5.LVS工作原理
工作原理
1)当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
2) PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
3) IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链
4) POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器
LVS相关术语
1、 DS:Director Server。指的是前端负载均衡器节点。
2、 RS:Real Server。后端真实的工作服务器。
3、 VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址。
4、 DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
5、 RIP:Real Server IP,后端服务器的IP地址。
6、 CIP:Client IP,访问客户端的IP地址
三种模式及原理
NAT原理和特点
多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发
1.当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
2. PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
3. IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP
4. POSTROUTING链通过选路,将数据包发送给Real Server
5. Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP
6. Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP
NAT模式的特性
(1) RS应该和DIP应该使用私网地址,且RS的网关要指向DIP;
(2) 请求和响应报文都要经由director转发;极高负载的场景中,director可能会成为系统瓶颈;
(3) 支持端口映射;
(4) RS可以使用任意OS;
(5) RS的RIP和Director的DIP必须在同一IP网络;
缺陷:对Director Server压力会比较大,请求和响应都需经过director server
DR原理和特点
通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变;
DR模式
1、当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
2、PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
3、 IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址
4、 由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。
5、 RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。 此时的源IP地址为VIP,目标IP为CIP
6、 响应报文最终送达至客户端
DR模式的特性
(1) 确保前端路由器将目标IP为VIP的请求报文发往Director:
(a) 在前端网关做静态绑定;
(b) 在RS上使用arptables;
(c) 在RS上修改内核参数以限制arp通告及应答级别;
修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求。
(2) RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director;
(3) RS跟Director要在同一个物理网络;
(4) 请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client;
(5) 不支持端口映射;
缺陷:RS和DS必须在同一机房(vlan)中
TUNNEL原理和特点
在原有的IP报文外再次封装多一层IP首部,内部IP首部(源地址为CIP,目标IIP为VIP),外层IP首部(源地址为DIP,目标IP为RIP)
TUN原理
1、当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP 。
2、 PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
3、IPVS比对数据包请求的服务是否为集群服务,若是,在请求报文的首部再次封装一层IP报文,封装源IP为为DIP,目标IP为RIP。然后发至POSTROUTING链。 此时源IP为DIP,目标IP为RIP
4、 POSTROUTING链根据最新封装的IP报文,将数据包发至RS(因为在外层封装多了一层IP首部,所以可以理解为此时通过隧道传输)。 此时源IP为DIP,目标IP为RIP
5、 RS接收到报文后发现是自己的IP地址,就将报文接收下来,拆除掉最外层的IP后,会发现里面还有一层IP首部,而且目标是自己的lo接口VIP,那么此时RS开始处理此请求,处理完成之后,通过lo接口送给eth0网卡,然后向外传递。 此时的源IP地址为VIP,目标IP为CIP
6、响应报文最终送达至客户端
TUNNEL模式的特性
(1) DIP, VIP, RIP都应该是公网地址;
(2) RS的网关不能,也不可能指向DIP;
(3) 请求报文要经由Director,但响应不能经由Director;
(4) 不支持端口映射;
(5) RS的OS得支持隧道功能;
企业中最常用的是 DR 实现方式,而 NAT 配置上比较简单和方便
6.高可用负载均衡集群
master配置
yum install -y keepalived
在调度器上安装软件keepalived
vim /etc/keepalived/keepalived.conf
#编辑配置文件
ip a d 192.168.145.100/24 dev eth0
#删除原有vip地址
systemctl restart keepalived
#重启服务
cat /var/log/message
#查看日志
正常运行
测试:
后端服务器出现问题
systemctl stop httpd
#停用服务器server2的apache服务
在调度器中:
yum install -y mailx
故障服务自动从列表清除
将server3的httpd也停用
再次启动两台后端服务器apache服务
恢复的RS自动添加到调度列表
拥有健康检测功能
backup配置
server4:
yum install keepalived -y
#安装keepalived软件
在server4中修改:
systemctl enable --now keepalived
#启动并设置开机自启
yum install ipvsadm -y
查看日志
调度器出现故障
tail -f /var/log/message
#监控BACKUP日志
systemctl stop httpd
#关闭MASTER的apache服务
重启MASTER的keepalived服务
重新接管
反观BACKUP机:
若MASTER机关机,BACKUP也会自动接管
当MASTER重新启动,keepalived服务开启,又会重新接管服务
但切换过程中是有一定损失的,比较小,服务可用性可以达到99.999%
一般云计算环境容忍度比较大,可达到99.9%-99.99%
去IOE运动
所谓去“IOE”,是对去IBM小型机、Oracle数据库、EMC存储设备的简称,三者均为海外IT巨头,其中IBM代表硬件以及整体解决方案服务商,Oracle代表数据库,EMC代表数据存储。去“IOE”策略更广泛的理解是对一些核心领域要求其IT系统及设备做到自主可控,比如金融、电信、能源等领域,在这些领域,“IOE”为代表的国外IT厂商占据绝对优势,其中尤以IBM大型服务器垄断地位尤为明显,业内人士估计在该领域IBM市场占有率高达70%。 2012年6月25日,美国国际贸易委员会25日宣布对中国大陆及台湾多家企业生产的电子成像设备发起“337调查”,以确定是否存在专利侵权行为,其中包括中国内地的华为技术有限公司、中兴通讯股份有限公司。这为中国去IOE提供了前科。 2013年6月,棱镜门事件爆发,“棱镜”事件泄密人斯诺登披露,自2009 年以来,美国国家安全局一直在侵入中国内地和中国香港的电脑系统,一时间舆论哗然。“棱镜”事件为国家信息安全敲响了警钟,尤其是政府、大型金融机构和大型国有企业尤为重视。 2013年7月,受“棱镜”事件影响,部分银行开始做去“IOE”筹划,准备在三到五年内逐步淘汰外资,在银行IT系统和办公系统实现中资化。银行“核心系统”是记录保存银行客户信息和存贷款操作等银行最关键、最敏感的业务数据。
7.LVS工作模式
LVS没有健康检测功能和解决自身冗余的功能,所以借助keepalived软件实现
但keepalived只解决了高可用问题,因为调度器总是单独工作的(MASTER和BACKUP不会同时工作),并没有对调度器本身做横向扩展
DR模式不足
1.调度器和后端服务器必须在同一个vlan内
2.RS上绑定VIP,风险大(未做noarp的情况下,客户端会直接去找real server)
NAT模式不足
使用 DNAT(目标地址转换,改变的是目标地址) 和 SNAT(源地址转换,改变的是源地址) 技术完成报的转发
调度器和真实服务器不在一个网络
RS不需设置VIP,数据原路径返回,需设置策略路由,运维复杂度升高
TUNNEL不足
解决方法
FULLNAT模式
操作系统默认不支持,需编译内核