就业班 第三阶段(负载均衡) 2401--4.18 day2 nginx2 LVS-DR模式

3、LVS/DR 模式

实验说明: 1.网络使用NAT模式 2.DR模式要求Director DIP 和 所有RealServer RIP必须在同一个网段及广播域 3.所有节点网关均指定真实网关

主机名ip系统用途
client172.16.147.1mac客户端
lvs-server172.16.147.154centos7.5分发器
real-server1172.16.147.155centos7.5web1
real-server2172.16.147.156centos7.5web2
vip for dr172.16/147.200(真实场景是公网ip)
2、LVS/DR模式实施

1、准备工作(集群中所有主机)关闭防火墙和selinux

[root@lvs-server ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.147.154 lvs-server
172.16.147.155 real-server1
172.16.147.156 real-server2

2、Director分发器配置

配置VIP

[root@lvs-server ~]# ip addr add dev ens33 172.16.147.200/32 #设置VIP
[root@lvs-server ~]# yum install -y ipvsadm   #RHEL确保LoadBalancer仓库可用
[root@lvs-server ~]# service ipvsadm start  #启动
注意:启动如果报错: /bin/bash: /etc/sysconfig/ipvsadm: 没有那个文件或目录
需要手动生成文件
[root@lvs-server ~]# ipvsadm --save > /etc/sysconfig/ipvsadm

定义LVS分发策略

-A:添加VIP
-t:用的是tcp协议
-a:添加的是lo的vip地址
-r:转发到realserverip
-s:算法
-L|-l –list #显示内核虚拟服务器表
--numeric, -n:#以数字形式输出地址和端口号
-g --gatewaying #指定LVS工作模式为直接路由器模式(也是LVS默认的模式)
-S -save #保存虚拟服务器规则到标准输出,输出为-R 选项可读的格式
rr:轮循
如果添加ip错了,删除命令如下:
# ip addr del 172.16.147.200 dev ens33
[root@lvs-server ~]# ipvsadm -C  #清除内核虚拟服务器表中的所有记录。
[root@lvs-server ~]# ipvsadm -A -t 172.16.147.200:80 -s rr 
[root@lvs-server ~]# ipvsadm -a -t 172.16.147.200:80 -r 172.16.147.155:80 -g 
[root@lvs-server ~]# ipvsadm -a -t 172.16.147.200:80 -r 172.16.147.156:80 -g  
[root@lvs-server ~]# service ipvsadm save #保存方式一,使用下面的保存方式,版本7已经不支持了
[root@lvs-server ~]# ipvsadm -S > /etc/sysconfig/ipvsadm  #保存方式二,保存到一个文件中
[root@lvs-server ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.147.100:80 rr-> 172.16.147.155:80            Route   1      0          0         -> 172.16.147.156:80            Route   1      0          0         [root@lvs-server ~]# ipvsadm -L -n       
[root@lvs-server ~]# ipvsadm -L -n --stats    #显示统计信息
1. Conns    (connections scheduled)  已经转发过的连接数
2. InPkts   (incoming packets)       入包个数
3. OutPkts  (outgoing packets)       出包个数
4. InBytes  (incoming bytes)         入流量(字节)  
5. OutBytes (outgoing bytes)         出流量(字节)
[root@lvs-server ~]# ipvsadm -L -n --rate   #看速率
1. CPS      (current connection rate)   每秒连接数
2. InPPS    (current in packet rate)    每秒的入包个数
3. OutPPS   (current out packet rate)   每秒的出包个数
4. InBPS    (current in byte rate)      每秒入流量(字节)
5. OutBPS   (current out byte rate)      每秒出流量(字节)

3、所有RS配置

配置好网站服务器,测试所有RS #为了测试效果,提供不同的页面(以下两台real-server都操作)

[root@real-server1 ~]# yum install -y nginx
[root@real-server1 ~]# echo "real-server1" >> /usr/share/nginx/html/index.html
两台机器都安装,按顺序添加不同的主机名以示区分
[root@real-server1 ~]# ip addr add dev lo 172.16.147.200/32   #在lo接口上绑定VIP
[root@real-server1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  #忽略arp广播
[root@real-server1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce #匹配精确ip地址回包
[root@real-server1 ~]# systemctl start nginx 
[root@real-server1 ~]# systemctl enable  nginx 
=============================================================================
因为:realServer的vip有了,接着就是同一个网段中拥有两个vip, 客户端在网关发送arp广播需找vip时需要让realServer不接受响应.  
解决:
echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore 
arp_ignore 设置为1,意味着当别人的arp请求过来的时候,如果接收的设备没有这个ip,就不做出响应(这个ip在lo上,lo不是接收设备的进口)
echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce   
使用最好的ip来回应,什么是最好的ip?同一个网段内子网掩码最长的
4、测试
[root@client ~]# elinks -dump http://172.16.147.200
8、LVS的调度算法

LVS的调度算法分为静态与动态两类。

1、静态算法(4种)

只根据算法进行调度 而不考虑后端服务器的实际连接情况和负载情况

①.RR:轮叫调度(Round Robin)

调度器通过”轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

②.WRR:加权轮叫(Weight RR)

调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

③.DH:目标地址散列调度(Destination Hash )

根据请求的目标IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

④.SH:源地址 hash(Source Hash)

源地址散列”调度算法根据请求的源IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

2、动态算法(6种)

前端的调度器会根据后端真实服务器的实际连接情况来分配请求

①.LC:最少链接(Least Connections)

调度器通过”最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用”最小连接”调度算法可以较好地均衡负载。

②.WLC:加权最少连接(默认采用的就是这种)(Weighted Least Connections)

在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

③.SED:最短期望延迟调度(Shortest Expected Delay )

在WLC基础上改进,Overhead =  (ACTIVE+1)*256/加权,不再考虑非活动状态,把当前处于活动状态的数目+1来实现,数目最小的,接受下次请求,+1的目的是为了考虑加权的时候,非活动连接过多缺陷:当权限过大的时候,会倒置空闲服务器一直处于无连接状态。

④.NQ:永不排队/最少队列调度(Never Queue Scheduling NQ)

无需队列。如果有台  realserver的连接数=0就直接分配过去,不需要再进行sed运算,保证不会有一个主机很空闲。

⑤.LBLC:基于局部性的最少链接(locality-Based Least Connections)

基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。

⑥. LBLCR:带复制的基于局部性最少连接(Locality-Based Least Connections with Replication)

带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按”最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

补充:

自己的总结:关于临时DR配置的

DR模式需要解决的问题

1、同一个网络中有3个VIP

假如lvs的VIP地址是192.168.91.130

为了让后台发包的时候直接发给客户端,所以要在real-server 中添加lvs的VIP lo

ip addr add 192.168.91.130/32 dev lo

这是添加lvs的本地回环ip,配置一个独一无二的ip地址,表示32位都指的是主机,没有网络位了

后端的两个VIP实现内部网卡,不会与lvs的负载均衡器冲突

2、为什么client不会直接发送包给后端

配置后端的realserver对arp请求静默

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

3、如何保证后端使用VIP作为回包的源地址

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

配置后端以精确ip地址回包

4、后端服务器都有VIP,如何进行分发包采用更底层的mac地址进行分发。

image-20240418143533531

加一块新网卡

访问不会受限制

注意在真实的服务器上要把自己的lo设置的ip地址看好

脚本

写一下lvs-dr的脚本

开机自启(永久配置和临时生效)

lvs 中的资源配置永久生效和临时生效

生产环境中全部配置为永久生效哦

1、sysctl.conf 中的配置
永久生效:
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
​
sysctl -p
​
临时生效:
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
2、单块网卡添加多个ip[vip]
永久生效
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPADDR=192.168.241.155
IPADDR2=192.168.241.166
IPADDR3=192.168.241.177
PREFIX=24
GATEWAY=192.168.241.2
DNS1=114.114.114.114
DEVICE="ens33"
ONBOOT="yes"
​
临时生效
ip addr add 192.168.241.155/24 dev ens33
ip addr add 192.168.241.166/24 dev ens33
ip addr add 192.168.241.177/24 dev ens33
3、默认路由、静态路由
永久生效
vim /etc/sysconfig/network-scripts/route-ens33
192.168.241.0/24 via 10.36.139.1 dev ens33
网段  下一跳  跳转的ip  设备 ens33
​
临时生效
ip route add 192.168.241.0/24 via 10.36.139.1 dev ens33
​
# 可以看出,文件中写的内容就是临时指令的后半段
4、ipvsadm规则
永久生效
方法1、通过ipvsadm 服务管理1、配置规则2、ipvsadm-save 保存到 /etc/sysconfig/ipvsadm 文件中3、将ipvsadm 设置为开机启动  systemctl enable ipvsadm
​
方法2、通过rc.local 设置1、ipvsadm -S > /tmp/ipvs2、rc.local:  ipvsadm -R < /tmp/ipvs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/641205.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

轻松搭建llama3Web 交互界面 - Ollama + Open WebUI

Ubuntu下安装&#xff1a;&#xff08;官网&#xff1a;Download Ollama on Linux&#xff09; curl -fsSL https://ollama.com/install.sh | sh 就运行起来ollama了&#xff0c;不放心可以用ollama serve查看一下 ollama run llama3 就可以跑起来了&#xff0c; 那么我们肯…

利用regress绘制拟合图,利用Slope的趋势分析(5)

code如下&#xff1a; % SCD,积雪日数 % SCS,积雪初日 % SCM,积雪终日% SCS SCD SCM clc; clear; % 读取 Excel 表 excel_file E:\work\2024年\April20\积雪作图\tif文件\excel表\SCS.xlsx; % Excel 文件路径 data readtable(excel_file);datavalue data{:,2:end}; year (…

基于vue+node+mysql的视频校对系统

一、登录注册&#xff1a;包括登录&#xff0c;注册&#xff0c;忘记密码&#xff0c;验证码等常用点。 二、用户管理&#xff1a;包括用户的增删改查 三、权限管理&#xff08;请增加这个权限&#xff1a;任务分配——只有管理者才能发布和删除任务&#xff1b;管理员设置。 四…

ARTS Week 24

Algorithm 本周的算法题为 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; img 输入&#xff1a;list1 [1,2,4], list2 [1,3,4]输出&#xff1a;[1,1,2,3,4,4] 实现代码如下&…

Kimi Chat四大更新详细解读!模型能力提升,支持语音输入输出!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

Mysql 在Windows Server系统下修改数据文件存储路径遇到的坑

因项目需要搭建一个Mysql数据库&#xff0c;为了方便日常运维操作开始选择了Windows Server 2012R2(已有的虚拟机)&#xff0c;考滤到要300G空间&#xff0c;原来的盘空间不够了,就是给虚拟机加了磁盘&#xff0c;Mysql 8.0.26社区版安装路径没得选择&#xff0c;默认就装在C&a…

B端 :悬浮层、弹窗、吐司、抽屉等形式,你真的懂么?

一、弹出组件简介 B端指的是企业级应用&#xff0c;悬浮层、弹窗、吐司、抽屉是常见的界面元素或交互方式。 1. 悬浮层&#xff08;Floating Layer&#xff09;&#xff1a;悬浮层是一种浮动在页面上方的窗口&#xff0c;通常用于显示一些重要的信息或提供某些功能。它可以覆…

【学习笔记二十二】EWM执行过账更改

一、EWM过账更改 1.EWM过账更改概述 过账更改是库存量特征字段(例如,非限制库存到质量检验库存)的更改,或者产品或批次编号的更改。 通常,库存的实际位置不一定更改。过账更改的一个示例是将库存从检验释放到非限制库存,反之亦然。可以从ERP 或 EWM 中触发过账更改。 2…

文件摆渡:安全、高效的摆渡系统助力提升效率

很多组织和企业都会通过网络隔离的方式来保护内部的数据&#xff0c;网络隔离可以是物理隔离&#xff0c;也可以是逻辑隔离&#xff0c;如使用防火墙、VPN、DMZ等技术手段来实现&#xff0c;隔离之后还会去寻找文件摆渡方式&#xff0c;来保障日常的业务和经营需求。 进行网络隔…

实验:路由过滤与引入

一、实验拓扑 二、实验要求 1、按照图示配置 IP 地址&#xff0c;R1&#xff0c;R3&#xff0c;R4 上使用 loopback 口模拟业务网段 2、R1和R3运行RIPv2&#xff0c;R2,R3和R4运行OSPF&#xff0c;各自协议内部互通 3、在 RIP 和 oSPF 间配置双向路由引入&#xff0c;要求除 R…

苍穹外卖开发笔记(6.缓存商品,购物车)

目录 一、缓存商品2、缓存菜品&#xff08;redis&#xff09;1.问题说明2.实现思路3.代码开发 2、缓存套餐&#xff08;spring cache&#xff09;1.实现思路2.代码实现 3、测试 二、购物车功能1、添加购物车1.需求分析设计2.代码开发3.测试 2、查看购物车1.需求分析设计2.代码开…

Scrapy爬虫框架入门(豆瓣电影Top 250)

文章目录 Scrapy 官网Scrapy 文档GithubScrapy 简介项目结构爬虫实现XPath 教程创建 Scrapy 项目配置用户代理网页 dom 元素 IP 代理池IP代理池作用配置IP代理池申请IP代理池 Scrapy 官网 https://scrapy.org/ Scrapy 文档 https://docs.scrapy.org/en/latest/ Github htt…