做平面设计用哪个素材网站好,100m光纤做网站,seo网站推广的主要目的,SOHO英文网站制作目录
lvs集群概念
集群的类型#xff1a;三种类型
系统可靠性指标
lvs集群中的术语
lvs的工作方式
NAT模式
lvs的工具
算法
实验
数据流向
步骤
一 、调度器配置#xff08;test1 192.168.233.10#xff09;
二、RS配置#xff08;nginx1和nginx2#xff09;…
目录
lvs集群概念
集群的类型三种类型
系统可靠性指标
lvs集群中的术语
lvs的工作方式
NAT模式
lvs的工具
算法
实验
数据流向
步骤
一 、调度器配置test1 192.168.233.10
二、RS配置nginx1和nginx2
三、地址转换test1 192.168.233.10
实验结果
DR模式
概念
数据流向图
问题
1.vip地址冲突
2.返回报文时vip地址还在怎么样能让客户端来接收到响应
DR模式的实现
步骤
一 、调度器配置test1 192.168.233.10
二、RS配置nginx1和nginx2[两遍都要修改]
实验结果
总结
总结实验
lvs实现四层转发nginx实现7层转发动态访问lvs的vip地址可以实现动静分离
数据流向图
实验步骤
实验结果
lvs的三种工作模式
高可用的HA架构
概念
keepalive实验
实验步骤
主
编辑
备
实验结果编辑 lvs集群概念
全称是linux virtual server是在Linux的内核层面实现负载均衡的软件。
主要作用将多个后端服务器组成一个高可用高性能的服务器集群通过负载均衡的算法将客户端的请求分发到后端的服务器上来实现高可用和负载均衡。
阿里的SLB server loab balance 是用lvskeepalive实现的。
集群和分布式
系统的拓展方式
垂直扩展向上扩展增强性能更强的计算机。瓶颈计算机本身设备的限制硬件本身的性能瓶颈
水平扩展向外拓展增加设备。并行的运行多个服务依靠网络解决内部通信的问题cluster集群
集群为了解决某个特定的问题将多台计算机组合起来形成的单个系统
集群的类型三种类型
LBload balance 负载均衡集群多个主机组成每个主机只承担一部分的访问请求
HAhigh availiablity 高可用在设计系统时采取一定的措施确保系统当中某一组件或者部分出现故障整个系统依然能够正常的运行。为了维护系统的可用性可靠性容错性
HPChigh-performance computing 高性能集群对响应时间处理能力要求更高
系统可靠性指标
MYBFMean Time Between Failure 平均无故障时间
MTTRMean Time Resotration repair 平均故障恢复时间
AMTBF/(MTBFMTTR)
A指标要在0-1之间A指标就是系统可用性的度量。0表示系统越不可用1表示系统越可用
A指标要无限接近于1 98%-99%合格90%-95%不合格
都是以小时为单位1年365天8760小时
停机时间和计划内时间不算在内
计划外时间即故障时间从故障发生到故障解决的总时间计划外时间是我们必须关注的一个指标
lvs适用场景
小集群不需要使用lvs用nginx大集群使用lvs
lvs集群中的术语
VSvittual server lvs服务的逻辑名称也就是我们外部访问lvs集群时使用的ip地址和端口
DSdirector server lvs集群中的主服务器也就是调度器即nginx的代理服务器是集群的核心调度器就是用来接受客户端的请求转发到后端的服务器
RSreal server lvs集群中的真是服务器后端服务器用来接受DS转发来的请求并且响应结果
CIPclient ip 客户端的地址也就是发起请求的客户端地址
VIPvirtual ip lvs集群使用的ip地址对外提供集群访问的虚拟ip地址
DIPdirector ip 调度器在集群当中的地址用于和RS进行通信
RIPreal ip 后端服务器在集群当中的ip地址
lvs的工作方式
NAT模式模式由调度器响应给客户端 地址转换
DR模式直接路由模式真实服务器直接响应给客户端
TUN模式隧道模式
常用的模式NAT模式和DR模式
NAT模式
在NAT模式下lvs会将来自客户端的请求报文中的目标ip地址和端口修改为lvs内部的ip地址和端口然后把请求转发到后端服务器。
响应结果返回客户端的过程中响应报文经过lvs的处理把目标ip和端口修改成客户端的ip地址和端口。
原理首先负载均衡器接收到客户的请求数据包时根据调度算法决定将请求发送给哪个后端的真实服务器RS。 然后负载均衡器就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址RIP。 真实服务器响应完请求后查看默认路由把响应后的数据包发送给负载均衡器负载均衡器在接收到响应包后 把包的源地址改成虚拟地址VIP然后发送回给客户端。
优点集群中的服务器可以使用任何支持TCP/IP的操作系统只要负载均衡器有一个合法的IP地址。
缺点扩展性有限当服务器节点增长过多时由于所有的请求和应答都需要经过负载均衡器 因此负载均衡器将成为整个系统的瓶颈。
特点是地址转换
地址转换内网——外网 转换的是源ip地址 SNAT 外网——内网 转换的是目的ip地址 DNAT
lvs的工具
ipvsadm工具用来配置和管理lvs集群的工具
-A 添加虚拟服务器 vip
-D 删除虚拟服务器地址
-s 指定负载均衡的调度算法
-a 添加真是服务器
-d 删除真实服务器
-t 指定vip的地址和端口
-r 指定rip的地址和端口
-m 使用NAT模式
-g 使用DR模式
-i 使用隧道模式
-w 设置权重
-p 60 连接保持60s 设置连接保持时间
-l 列表查看
-n 数字化展示
算法
轮询 rr
加权轮询 wrr
最小连接 lc
加权最小连接 wlc
实验
数据流向 nginx 1 RS1 192.168.233.20
nginx2 RS2 192.168.233.30
test1 调度器 ens33 192.168.233.10 ens36 12.0.0.1
test2 客户端 12.0.0.10
步骤
一 、调度器配置test1 192.168.233.10 yum -y install ipvsadm* -y
配置ens33 systemctl restart network
配置ens36
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36 systemctl restart network 二、RS配置nginx1和nginx2
配置nginx1 192.168.233.20 修改网关 systemctl restart network
配置nginx2 192.168.233.30 修改网关
systemctl restart network
vim /usr/local/nginx/html/index.html
修改访问页面的内容
查看访问是否连接 三、地址转换test1 192.168.233.10
iptables -t nat -vnL 查看nat表是否有策略
1. iptables -t nat -A POSTROUTING -s 192.168.233.0/24 -o ens36 -j SNAT --to 12.0.0.1
从192.168.233.0/24出的设备地址转换成12.0.0.1
2. ipvsadm -C 清空原有的策略
ipvsadm -A -t 12.0.0.1:80 -s rr 指定好vip的地址和端口
先添加vip虚拟服务器的ip和端口然后再添加真实服务器
3. ipvsadm -a -t 12.0.0.1:80 -r 192.168.233.20:80 -m
-a 添加真实服务器
-t 指定vip地址
-r 指定真实服务器的地址和端口
-m 指定模式为nat模式
ipvsadm -ln 查看
4. ipvsadm-save 保存
ipvsadm -D -t 192.168.233.10:80 删除策略
ipvsadm -d -r 192.168.233.20: -t 12.0.0.1:80 删除节点服务器
5.开启路由转发功能
vim /etc/sysctl.conf net.ipv4.ip_forward1
四、客户端test2 12.0.0.10
修改test2的ip地址和网关 实验结果 加权轮询 DR模式
概念
它是直接路由模式
NAT模式调度器在整个lvs集群当中是最重要的在nat模式下既负责接收请求同时根据负载均衡的算法转发流量响应发送给客户端
DR模式调度器依然负责接收请求同时也根据负载均衡算法转发流量到RS响应直接由RS响应给客户端
直接路由 Direct Routing 是一种二层转发模式二层转发的是数据帧根据源mac地址和目的mac地址进行转发不会修改数据包源ip和目的ip。根据数据包mac地址进行转发。
DR模式下lvs也是维护一个虚拟的ip地址所有的请求都是发送到这个vip既然走二层转发当客户端的请求到达调度器之后根据负载均衡的算法选择一个RS修改vip服务器的目的mac变成RS的mac地址RS处理完请求之后根据报文当中客户端的源mac地址直接把响应发送到客户端即可不需要走调度器了。
原理首先负载均衡器接收到客户的请求数据包时根据调度算法决定将请求发送给哪个后端的真实服务器RS。 然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址R-MAC。 真实服务器响应完请求后查看默认路由把响应后的数据包直接发送给客户端不需要经过负载均衡器。
优点负载均衡器只负责将请求包分发给后端节点服务器而RS将应答包直接发给用户。 所以减少了负载均衡器的大量数据流动负载均衡器不再是系统的瓶颈也能处理很巨大的请求量。
缺点需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上必须在同一个局域网环境。
数据流向图 问题
1.vip地址冲突
原因调度器配置了vipRS也配置了vip地址。vip地址冲突因为调度器和RS都在同一个网段会造成ARP通信紊乱。因为是整个局域网广播所有的设备都收到了。
怎么把lo这个回环的响应把它屏蔽掉只有本机的物理ip地址响应。
解决方法修改内核参数arp_ignore1
系统的物理ip地址才会响应ARP请求lo回环接口不会响应ARP请求
2.返回报文时vip地址还在怎么样能让客户端来接收到响应
解决方法arp_announce2
系统不使用ip数据包的源地址来响应ARP请求直接发送物理接口的ip地址
DR模式的实现
nginx1 RS真实ip 192.168.233.20
nginx2 RS 192.168.233.30
vip 192.168.233.100
调度器 192.168.233.10
客户端 192.168.233.40
步骤
一 、调度器配置test1 192.168.233.10 yum -y install ipvsadm* -y
添加虚拟网卡ens33:0 修改调度器的响应参数 vim /etc/sysctl.conf
net.ipv4.ip_forward0 net.ipv4.conf.all.send_redirects0 net.ipv4.conf.default.send_redirects0 net.ipv4.conf.ens33.send_redirects0
sysctl -p
添加策略
cd /opt ipvsadm -A -t 192.168.233.100:80 -s rr
ipvsadm -a -t 192.168.233.100:80 -r 192.168.233.20:80 -g
ipvsadm -a -t 192.168.233.100:80 -r 192.168.233.30:80 -g
ipvsadm-save /etc/sysconfig/ipvsadm
systemctl restart ipvsadm
ipvsadm -ln
二、RS配置nginx1和nginx2[两遍都要修改]
修改静态页面的展示内容
vim /usr/local/nginx/html/index.html
systemctl restart nginx
添加回环地址
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0 添加lo:0接口做为vip
route add -host 192.168.233.100 dev lo:0
设置ip地址为192.168.233.100的地址添加到回环接口做为lvs的vip通过路由的模式转发到RS,能让vip识别到真实的服务器
修改RS真实服务器的内核响应
vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore1 net.ipv4.conf.lo.arp_announce2 net.ipv4.conf.all.arp_ignore1 net.ipv4.conf.all.arp_announce2 实验结果 修改vip轮询的算法
修改策略轮询当中的权重 总结
lvs和nginx做负载均衡的区别
lvs是四层转发走的是内核态 ip端口 只能做四层代理
nginx 四层代理 也可以七层代理
总结实验
lvsDR模式nginxtomcat
lvs实现四层转发nginx实现7层转发动态访问lvs的vip地址可以实现动静分离
数据流向图 实验步骤
在上面DR模式的实验基础上实现动静分离
一、tomcat部分
1.分别在tomcat1和tomcat2做动态页面 % page languagejava importjava.util.* pageEncodingUTF-8% html head titleJSP test1 page/title /head body % out.println(动态页面 1,http://www.test1.com);% /body /html
2.分别在tomcat1和tomcat2添加站点
cd conf
vim server.xml
先删除原有的站点 Host namelocalhost appBasewebapps unpackWARstrue autoDeploytrue xmlValidationfalse xmlNamespaceAwarefalse Context docBase/usr/local/tomcat/webapps/test path reloadabletrue / 查看端口是否启动 访问192.168.233.40:8080/index.jsp 二、nginx部分
配置nginx2和nginx3
cd /usr/local/nginx/conf/
cp nginx.conf nginx.conf.bak.2024.07.08
vim nginx.conf upstream tomcat { server 192.168.233.40:8080 weight1; server 192.168.233.50:8080 weight1; }
location ~ .*\.jsp$ { proxy_pass http://tomcat; proxy_set_header HOST $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
然后systemctl restart nginx
配置nginx1代理
做四层代理
cd /usr/local/nginx/conf
vim nginx.conf 然后systemctl restart nginx
实验结果
访问192.168.100:81 静态页面 访问192.168.233.100:82/index.jsp 动态页面 lvs的三种工作模式 NAT DR TUN
优点 地址转换配置简单 性能最好 WAN可以实现 较远距离的数据包转发
缺点 性能瓶颈 不支持跨网段 专用的通道需要开 通VPN花钱
RS的要求 无限制 必须要禁止非物理接口的ARP响应 要支持隧道模式
RS的数量 10-20台 100台 100台
面试题
1.简述lvs的三种模式和区别
上面的表
2.keepalive的脑裂怎么解决
高可用的HA架构
Keepalive概念
它是lvs集群当中的高可用架构只是针对调度器的高可用
基于vrp来实现调度器的主和备之间的切换
主调度器和备调度多台
在主调度器正常工作的时候备完全处于冗余状态待命不参与集群的运转。只有当主调度器出现故障时备才会承担主调度器的工作。如果主调度器恢复功能之后主继续做为集群的入口备继续处于冗余状态不绝对取决于优先级。
keepalive基于vrp协议来实现lvs高可用主备切换
1.组播地址
224.0.0.18根据组播地址来进行通信主和备之间发送报文。确定对方是否存活
2.根据优先级的大小来确定主和备的位置
3.故障切换主挂了备来继续工作。主恢复了备继续待命
4.主和备之间的切换是vip地址的切换
keepalive是专门为了lvs而出现的但不是lvs专用的keepalive也可以使用nginx,haproxy
core模块keepalive的核心模块负责主进程的启动、维护以及全局配置文件的加载
vrrp模块实现vrrp协议的模块也就是主功能模块
check模块负责健康检查也可以检查后台真实服务器的情况
配置注意点
1.配优先级
2.配置vip和真实服务器
3.主备的id要一致
4.主备的id要区分
keepalive实验
test1 192.168.233.10 主
test2 192.168.233.50 备
vip 192.168.233.100
nginx1 192.168.233.20
nginx2 192.168.233.30
客户端 192.168.233.40
实验步骤
1.主和备都要同样操作
yum -y install ipvsadm keepalived
vim /etc/sysctl.conf
net.ipv4.ip_forward0 net.ipv4.conf.all.send_redirects0 net.ipv4.conf.default.send_redirects0 net.ipv4.conf.ens33.send_redirects0
sysctl -p
ipvsadm -C
ipvsadm -A -t 192.168.233.100:80 -s rr
ipvsadm -a -t 192.168.233.100:80 -r 192.168.233.20:80 -g
ipvsadm -a -t 192.168.233.100:80 -r 192.168.233.30:80 -g
ipvsadm-save /etc/sysconfig/ipvsadm
systemctl restart ipvsadm
ipvsadm -ln
主 cd /etc/keepalive
vim keepalived.conf 备 实验结果
ip addr keepalivenginx实现高主备切换
数据流线图 实验步骤
1.vim check_nginx.sh
写一个check_nginx.sh的脚本
#!/bin/bash
/usr/bin/curl -I http://localhost /dev/null
if [ $? -ne 0 ]
then
systemctl stop keepalived
fi主
2. chmod 777 check_nginx.sh cd /etc/keepalived/ vim keepalived.conf script /opt/check.nginx.sh
调用脚本内容检测nginx的状态
interval 5
检测的间隔时间是5s 删除这个后面的所有内容并添加监控配置 systemctl restart nginx
systemctl restart keepalived
备
3.把主的配置复制到备进行修改
scp root192.168.233.20:/etc/keepalived/keepalived.conf /etc/keepalived/
cd /etc/keepalived/
vim keepalived.conf 实验结果
如果主nginx停止 keepalive也自动停止 备启用 面试题脑裂是什么怎么解决脑裂
HA高可用架构中的一个特殊现象只要使用vip地址代理的冗余模式的高可用 都有可能出现脑裂的问题。现象主和备同时都有vip地址。
主和备无法确定各自的身份同时出现了vip地址就是两边都起来了但是两边都无法使用。
原因1.keepalive的配置文件问题 2.心跳线网线问题 3.网卡硬件问题、ip地址配置冲突 4.防火墙的策略和iptables的策略屏蔽了组播地址的广播屏蔽了vrrp协议的报文 5.两台服务器的时间不同步也可能导致 6.其他的服务配置对心跳线的检测造成了干扰
解决方法
1.检查keepalive.conf里面的配置是否对
2.查看网线是否坏了
3.ifconfig检查ip地址是否冲突
4.查看电脑硬件是否有问题
5.iptables -vnL查看策略看看是否冲突
6.systemctl status firewalld 查看防火墙的状态是否关闭
7.查看两台服务器的时间是否同步
8.以上都没有问题再检查其他服务配置