负载均衡集群——Nginx

目录

1.Nginx反向代理实战

2.Nginx 反向代理和负载均衡实践

实验操作步骤

步骤 1 Nginx1 和 Nginx2 配置

步骤2 测试资源是否可用

步骤 3 安装和配置 Nginx 代理

步骤 4 代理服务器配置检测

步骤 5 在 Nginx1 和 Nginx2 配置虚拟主机

步骤 6 将虚拟主机添加入后端主机组中

步骤 7 IP Hash 算法实践

步骤 8 Random 算法实践

步骤 9 算法选项配置实践


1.Nginx反向代理实战

 

1 、什么是代理服务器
        代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送 给客户机。
2 、为什么要使用代理服务器
        提高访问速度 由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。
        防火墙作用 :由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。通过代理服务器访问不能访问的目标站点
互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站
3 、反向代理 VS 正向代理
正向代理
        正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet 的连接请求,客户机必须指定代理服务器, 并将本来要直接发送到 Web 服务器上的 http 请求发送到代理服务器中。

 

反向代理
        反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet 上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。

2.Nginx 反向代理和负载均衡实践

本实验将使用四台虚拟机,其中两台 Nginx 服务器和客户端与《LVS 集群》复用,充当代理服务器的 Nginx 可以新建,也可以清理《LVS 集群》中 LVS 服务器的配置后复用。

实验操作步骤

步骤 1 Nginx1 和 Nginx2 配置

[root@Nginx2 ~]# yum install nginx -y
[root@Nginx2 ~]# systemctl start nginx
[root@Nginx2 ~]# mkdir -p /data/nginx
[root@Nginx2 ~]# touch  /data/nginx/index.html
[root@Nginx1 ~]# cat /etc/nginx/conf.d/vhost.conf 
server{
 listen 80;
 server_name www.test.com;
 root /data/nginx;
 index index.html;

}
[root@Nginx1 ~]# curl 192.168.186.102
hello,nginx2
[root@Nginx2 ~]# curl 192.168.186.101
hello,nginx1

在 LVS 虚拟机上开启路由转发功能,具体参考命令如下:
 sed -i "s/ip_forward=0/ip_forward=1/g" /etc/sysctl.conf
  sysctl -p | grep net.ipv4.ip_forward
  sysctl -a | grep net.ipv4.ip_forward
配置完成后,测试是否能够正常访问 Nginx1 和 Nginx2,具体如下:
[root@LVS ~]# curl 192.168.186.101
hello,nginx1
[root@LVS ~]# curl 192.168.186.102
hello,nginx2

步骤2 测试资源是否可用

在客户端 ping 代理服务器的 10 网段地址,保证二者之间网络可达,如下图所示:

 在代理服务器上访问两台 Nginx 服务器,保证 Nginx 服务器可用,如下图所示:

步骤 3 安装和配置 Nginx 代理

[root@Cluster ~]# yum install -y nginx
在代理服务器 Nginx 子配置文件目录中创建代理和负载均衡配置文件,并在文件中添加以下配置:
[root@Cluster ~]# systemctl start nginx
[root@Cluster ~]# vim /etc/nginx/conf.d/lb.conf
upstream 192.168.186.100{
        server 192.168.186.101:80;
        server 192.168.186.102:80;
}

server {
        listen 80;
        server_name localhost;
        location /{
                proxy_pass http://192.168.186.100;
        }
}
完成配置后,使用命令“nginx -s reload”重新加载 Nginx 服务。

步骤 4 代理服务器配置检测

在客户端访问 192.168.186.100,查看是否能够达到效果,如果配置正确,现象如下图所示:

步骤 5 在 Nginx1 和 Nginx2 配置虚拟主机

在/data/nginx/中创建 index80.html、index81.html 和 index82.html 文件,分别将使用的端口添加到内容中,
[root@Nginx1 ~]# touch /data/nginx/index80.html
[root@Nginx1 ~]# touch /data/nginx/index81.html
[root@Nginx1 ~]# touch /data/nginx/index82.html
[root@Nginx1 ~]# ls /data/nginx/
index80.html  index81.html  index82.html  
[root@Nginx1 ~]# echo "hello,192.168.186.101:80" > /data/nginx/index80.html 
[root@Nginx1 ~]# echo "hello,192.168.186.101:81" > /data/nginx/index81.html 
[root@Nginx1 ~]# echo "hello,192.168.186.101:82" > /data/nginx/index82.html
为了使后续的算法体现更加明显,在两台 Nginx 服务器中,添加虚拟主机,具体配置如下:
[root@Nginx1 ~]# vim /etc/nginx/conf.d/vhost.conf
server{
 listen 0.0.0.0:80;
 server_name localhost;
 root /data/nginx;
 index index80.html;
}
server{
 listen 0.0.0.0:81;
 root /data/nginx;
 server_name localhost;
 index index81.html;
}
server{
 listen 0.0.0.0:82;
 root /data/nginx;
 server_name localhost;
 index index82.html;
}
[root@Nginx2 ~]# vim /etc/nginx/conf.d/vhost.conf
server{
 listen 0.0.0.0:80;
 server_name localhost;
 root /data/nginx;
 index index80.html;
}
server{
 listen 0.0.0.0:81;
 root /data/nginx;
 server_name localhost;
 index index81.html;
}
server{
 listen 0.0.0.0:82;
 root /data/nginx;
 server_name localhost;
 index index82.html;
}
[root@Nginx2 ~]# touch /data/nginx/index80.html
[root@Nginx2 ~]# touch /data/nginx/index81.html
[root@Nginx2 ~]# touch /data/nginx/index82.html
[root@Nginx2 ~]# echo "hello,192.168.186.102:80" > /data/nginx/index80.html
[root@Nginx2 ~]# echo "hello,192.168.186.102:81" > /data/nginx/index81.html
[root@Nginx2 ~]# echo "hello,192.168.186.102:82" > /data/nginx/index82.html

步骤 6 将虚拟主机添加入后端主机组中

[root@Cluster ~]# vim /etc/nginx/conf.d/lb.conf
upstream 192.168.186.100{
server 192.168.186.101:80;
server 192.168.186.101:81;
server 192.168.186.101:82;
server 192.168.186.102:80;
server 192.168.186.102:81;
server 192.168.186.102:82;
}
server {
listen 80;
server_name localhost;
location /{
proxy_pass http://192.168.186.100;
}
}
配置完成后重新加载 Nginx 配置文件

步骤 7 IP Hash 算法实践

将代理服务器中相关配置文件中添加配置,修改算法为 IP Hash,具体如下:

[root@Cluster ~]# vim /etc/nginx/conf.d/lb.conf
upstream 192.168.186.100{
        ip_hash;
        server 192.168.186.101:80;
        server 192.168.186.101:81;
        server 192.168.186.101:82;

        server 192.168.186.102:80;
        server 192.168.186.102:81;
        server 192.168.186.102:82;

}

server {
        listen 80;
        server_name localhost;
        location /{
                proxy_pass http://192.168.186.100;
        }
}

 

步骤 8 Random 算法实践

将负载均衡配置修改为 Random 算法,具体如下:
重新加载 Nginx 配置后,进行测试,具体现象为:

步骤 9 算法选项配置实践

修改代理主机配置文件,将 Nginx2 的全部虚拟主机设置为 backup,同时将 Nginx1 上的虚拟主机设置一定的权重,具体配置如下图所示:

重新加载 Nginx 配置后,然后在客户端进行测试,具体现象如下:

手动将 Nginx1 上的服务停止,如下图所示:

 

 再次在客户端进行测试,具体显现个如下:

修改代理服务器上的配置文件,将 Nginx2 的部分虚拟主机修改为“down”,具体如下:

 

重新加载 Nginx 服务配置,再次在客户端进行测试,具体现象如下:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙南向开发:【编译和烧录】指导

编译 #进入源码目录 #rm -rf ohos_config.json #hb set #. #如下图所示,按↑↓键,选择需要编译的工程名,然后回车 #hb build -f #然后回车,等待屏幕出现:BUILD SUCCESS字样,说明编译成功。如下图 #编译生成的固件在…

OpenHarmony轻量系统开发【7】驱动之I2C显示OLED屏幕

7.1实验效果 Hispark WiFi开发套件又提供一个oled屏幕,但是鸿蒙源码中没有这个屏幕的驱动,我们需要自己去移植。 以下是移植效果: 接口:I2C 使用引脚:HI_IO_NAME_GPIO_13 、 HI_IO_NAME_GPIO_14 7.2代码 这里我直…

TiDB存储引擎TiKV揭秘

目录 一、TiKV 介绍 二、RocksDB 三、TiKV 与 RocksDB 架构 3.1 用户数据保存 3.2 TiKV 中 Region 一、TiKV 介绍 TiKV 是一个分布式事务型的键值数据库,提供了满足 ACID 约束的分布式事务接口,并且通过 Raft 协议保证了多副本数据一致性以及高可用。…

一文读懂BTC生态新贵Giants Planet,将L2与现实世界整合

前言 获新加坡主权基金鼎力扶持,Giants Planet将引爆Web3新风向。 随着年前BTC现货 ETF 的获批,加密世界涌入大量的资金,BTC价格也成功突破新高。与之相比,传统金融的弊端日益凸显,且大部分资产涨幅都低于BTC&#xf…

RACE IPEMD:构建安全基石的密码学原理与实践

title: RACE IPEMD:构建安全基石的密码学原理与实践 date: 2024/4/16 16:53:56 updated: 2024/4/16 16:53:56 tags: IPEMD哈希算法SHA-1SHA-2/3消息摘要数字签名安全分析 前言 在当今信息爆炸的时代,数据安全和隐私保护变得尤为重要。密码学作为信息安…

鑫鹿助贷CRM系统:助力助贷行业实现智能商业转型

数字化时代,商业竞争愈发激烈,助贷行业如何把握商机、实现高效管理、打造高回报率的商业模式,成为了助贷行业老板们比较关注的问题,而鑫鹿助贷CRM管理系统,正是这场商业变革中的得力助手,系统功能完善&…

YOLOv8 目标检测项目实操

一 yolov8 背景介绍 YOLOv8是一种尖端的、最先进的(SOTA)模型,建立在以前 YOLO 版本的成功基础上,并引入了新的特性和改进,以进一步提高性能和灵活性。YOLOv8被设计为快速、准确、易于使用,这使它成为一个很好的选择,…

【Leetcode每日一题】 动态规划 - 最小路径和(难度⭐⭐)(58)

1. 题目解析 题目链接:64. 最小路径和 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 算法思路梳理: 一、状态表示 在路径类问题中,状态表示通常有两种形式: 从 [i,…

华为配置路由式Proxy ARP示例

配置路由式Proxy ARP示例 组网图形 图1 配置路由式Proxy ARP组网图 路由式Proxy ARP简介配置注意事项组网需求配置思路操作步骤配置文件 路由式Proxy ARP简介 企业内部进行子网划分时,可能会出现两个子网网络属于同一网段,但是却不属于同一物理网络的情…

多轴机械臂/正逆解/轨迹规划/机器人运动学/Matlab/DH法 学习记录02——机械臂几何法与DH表示法

系列文章目录 本科毕设正在做多轴机械臂相关的内容,这里是一个学习机械臂运动学课程的相关记录。 如有任何问题,可发邮件至layraliufoxmail.com问询。 1. 数学基础 2. 机械臂几何法与DH表示法 文章目录 系列文章目录一、手臂几何法1.机械手臂2.机械手臂…

创建影子用户

文章目录 1.认识影子用户2.创建隐藏账户并加入管理员组3.修改注册表3.删除用户4.添加管理员权限 1.认识影子用户 影子用户通常指的是那些在系统用户列表中不可见,但在某些情况下可以进行操作的用户。在内网渗透过程中,当我们拿到shell时,肯定…

Python 物联网入门指南(四)

原文:zh.annas-archive.org/md5/4fe4273add75ed738e70f3d05e428b06 译者:飞龙 协议:CC BY-NC-SA 4.0 第九章:构建光学字符识别的神经网络模块 本章介绍以下主题: 使用光学字符识别(OCR)系统 使…

leetcode hot100_day20

4/14/2024 128.最长连续序列 自己的 这是前两天做一半的题目了。这题给我的教训就是用哈希表的时候一定一定要考虑重复元素的问题!!!! 这题让我想到了最长递增子序列,只是名字有点像。子序列和子数组还不一样一个连续…

实验案例二:配置路由器实现互通

一.实验环境 实验用具包括两台路由器(或交换机).一根双绞线缆,一台PC,一条Console线缆。 二.需求描述 如图6.14所示,将两台路由器的Gig0/0接口相连,通过一台PC连接设备的Console端口并配置IP地址&#x…

健身管理小程序|基于微信开发健身管理小程序的系统设计与实现(源码+数据库+文档)

健身管理小程序目录 基于微信开发健身管理小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 小程序端: 后台 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码…

【重磅更新】开源表单系统填鸭表单v5版发布!

亲爱的TDucker,你们好。 真诚感谢您对填鸭表单的关注与支持。今天我们将为您带来新版本的更新说明,以便您更好的使用我们的产品。 社区版版V5更新概览: ✅ 增加WebHook数据推送功能,集成TReport实现数据大屏展示。 ✅ 增加主题…

在linux上面安装xxl-job2.4.0

问题 由于预算有限,用不起lambda去跑定时任务,现在只能在EC2上面自己安装一个单机版的xxl-job了。 步骤 下载压缩包 在这个页面下载压缩包,并本地解压。 https://github.com/xuxueli/xxl-job/releases mysql准备 找到它默认身数据库初始…

AI决策与专家决策,您更喜欢哪种决策方式?

HI,我是AI智能小助手CoCo。 CoCode开发云智能助手CoCo “大家好,我是CoCode开发云的AI智能小助手CoCo,现在为大家播放关于CoCode开发云AI大家庭的最新消息: 欢迎AI家庭新成员:AI自动决策”。 AI自动决策发布 CoCode开…

零基础自学Python,啃透这五本书就够了!

选择合适的学习资源 在自学Python的前期,选择一本适合初学者的Python入门书籍或在线教程,从基础开始学习,好的入门书籍或在线教程会按照逻辑顺序组织知识,从基础概念开始,逐步引导你深入学习Python编程语言。这种系统…

【经典算法】LeetCode 136:只出现一次的数字(Java/C/Python3实现含注释说明,Easy)

个人主页: 进朱者赤 阿里非典型程序员一枚 ,记录平平无奇程序员在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名) 目录 题目描述思路及实现方式一:使用异或运算(推荐)思…