Ubuntu 22.04安装Nginx负载均衡

君衍.

  • 一、编译安装Nginx
  • 二、轮询算法实现负载均衡
  • 三、加权轮询算法实现负载均衡
  • 四、ip_hash实现负载均衡

一、编译安装Nginx

这里我们先将环境准备好,我使用的是Ubuntu22.04操作系统:
在这里插入图片描述
这个是我刚安装好的,所以首先我们进行保存快照防止安装过程出错,同时我已经讲镜像源进行了更新。
在这里插入图片描述
好的,下面我们首先开始安装Nginx:

1、安装依赖

sudo apt install libgd-dev

在这里插入图片描述

2、下载nginx

wget http://nginx.org/download/nginx-1.22.1.tar.gz

在这里插入图片描述

3、解压nginx

tar -zvxf nginx-1.22.1.tar.gz

在这里插入图片描述

4、安装GCC

sudo apt install gcc

在这里插入图片描述

5、安装pcre库

PCRE库支持正则表达式。如果我们在配置文件nginx.conf中使用了正则表达式,那么在编译Nginx时就必须把PCRE库编译进Nginx,因为Nginx的HTTP模块需要靠它来解析正则表达式。另外,pcre-devel是使用PCRE做二次开发时所需要的开发库,包括头文件等,这也是编译Nginx所必须使用的。

sudo apt install libpcre3 libpcre3-dev

在这里插入图片描述

6、安装SSL库

如果服务器不只是要支持HTTP,还需要在更安全的SSL协议上传输HTTP,那么需要拥有OpenSSL。另外,如果我们想使用MD5、SHA1等散列函数,那么也需要安装它。

sudo apt-get install openssl libssl-dev

在这里插入图片描述

7、编译安装

编译

cd nginx-1.22.1

编译并指定安装位置,执行安装之后会创建指定文件夹/www/env/nginx

./configure --prefix=/www/env/nginx \
--with-pcre \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-http_image_filter_module \
--with-http_slice_module \
--with-mail \
--with-threads \
--with-file-aio \
--with-stream \
--with-mail_ssl_module \
--with-stream_ssl_module 

在这里插入图片描述
安装

make && make install

在这里插入图片描述
至此,等待半分钟安装成功。
在这里插入图片描述
到这里我们在Ubuntu22.04下安装Nginx已经安装成功,这里我补充下,由于使用用户安装时,出现了权限不够的错误,所以我后面使用root登录重新进行安装了(其实只要在前面sudo加上就行)。
在这里插入图片描述
我们打开nginx,并检验nginx状态,查看防火墙并将其关闭。

systemctl status nginx
systemctl status ufw
systemctl stop ufw
systemctl status ufw

在这里插入图片描述
然后查看自身IP地址并进行访问:
在这里插入图片描述
这里使用浏览器访问查看nginx是否成功开启:
在这里插入图片描述
这里我们模拟Nginx的负载均衡效果,我这里又克隆了两台Ubuntu来方便查看。

二、轮询算法实现负载均衡

首先这里环境如下:

客户端本机
代理服务器192.168.217.152
后端服务器1192.168.217.153
后端服务器2192.168.217.154

所以主机都已安装Nginx。

首先要启用负载均衡,就需要在Nginx配置文件中定义后端服务器列表。同时指定负载均衡的代理服务器。

好的,下面我们进行配置:

192.168.217.152代理服务器

  • 1、找到/etc/nginx/sites-available/default文件进行配置
upstream nginx_web{server 192.168.217.153;server 192.168.217.154;
}

在这里插入图片描述

# 并在location部分加入:
server {location / {root   html;index  index.html index.htm index.jsp index.ftl;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://nginx_web;}
}

在这里插入图片描述
然后我们保存并退出。

  • 2、重新加载配置文件
nginx -s reload
  • 3、192.168.217.153后端服务器配置

找到/var/www/html/index.nginx-debian.html文件进行修改,由于我是克隆了之前的Ubuntu,所以这里使用的中间件是Nginx,然后我们进行修改。
在这里插入图片描述
同理,另一台后端服务器也进行界面修改,方面我们之后查看轮询算法。到这里我们即可配置完毕,下面我们来查看效果:
在这里插入图片描述

在这里插入图片描述

至此我们可以看到轮询算法即为每个请求按时间顺序逐一分配到不同的后端服务器上,如果某台服务器死机,自动提出故障系统,使用户访问不受影响。

三、加权轮询算法实现负载均衡

我们在之前复现轮询算法实现负载均衡上进行操作,所以我们这下只需修改主配置文件的upstream部分即可。
代理服务器:
192.168.217.152

upstream nginx_web{server 192.168.217.153 weight=1;server 192.168.217.154 weight=2;
}

在这里插入图片描述
同样的,重新加载:nginx -s reload
继续进行测试,这里我们会发现一轮以内两次访问192.168.217.154,一次访问192.168.217.153。

至此,我们加权轮询算法复现完毕,加权轮询算法即为:weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

四、ip_hash实现负载均衡

同样的,我们在之前复现加权轮询算法实现负载均衡上进行操作,所以我们这下只需修改主配置文件的upstream部分即可。
代理服务器:
192.168.217.152

upstream nginx_web{ip_hash;server 192.168.217.153:80;server 192.168.217.154:80;
}

在这里插入图片描述
同样的,重新加载:nginx -s reload
继续进行测试,我们会发现它固定访问了192.168.217.153这台服务器。

至此,ip_hash实现负载均衡实现完毕,每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

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

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

相关文章

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch01-2 完整定常系统——杆组RRR

机械原理/机构简图/机构运动学推导/Kmtool.pkg 曲柄滑块机构运动学,五杆机构运动学,七杆机构运动学 本文仅供学习使用,总结很多本现有讲述运动学或动力学书籍后的总结,从矢量的角度进行分析,方法比较传统,但更易理解,并且现有的看似抽象方法,两者本质上并无不同。 2024…

考研高数(共轭根式)

1.定义 共轭根式:是指两个不等于零的根式A、B,若它们的积AB不含根式,则称A、B互为共轭根式。 共轭根式的一个显著特点是通过相乘能把根号去掉,这是很有帮助的 2.常用的共轭根式 3.例题 1)求极限 2)证明…

【大数据】详解 Flink 中的 WaterMark

详解 Flink 中的 WaterMark 1.基础概念1.1 流处理1.2 乱序1.3 窗口及其生命周期1.4 Keyed vs Non-Keyed1.5 Flink 中的时间 2.Watermark2.1 案例一2.2 案例二2.3 如何设置最大乱序时间2.4 延迟数据重定向 3.在 DDL 中的定义3.1 事件时间3.2 处理时间 1.基础概念 1.1 流处理 流…

C++数据结构与算法——数组

C第二阶段——数据结构和算法,之前学过一点点数据结构,当时是基于Python来学习的,现在基于C查漏补缺,尤其是树的部分。这一部分计划一个月,主要利用代码随想录来学习,刷题使用力扣网站,不定时更…

Linux系列之查看cpu、内存、磁盘使用情况

查看磁盘空间 df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。使用df -h命令,加个-h参数是为了显示GB MB KB单位,这样更容易查看 Filesystem …

【3DGS】从新视角合成到3D Gaussian Splatting

文章目录 引言:什么是新视角合成任务定义一般步骤NeRF的做法NeRF的三维重建NeRF的渲染 3DGS的三维重建从一组图片估计点云高斯点云模型球谐函数参数优化损失函数和协方差矩阵的优化高斯点的数量控制(Adaptive Density Control)新的问题 3DGS的渲染:快速可…

【行业应用-智慧零售】东胜物联餐饮门店智能叫号解决方案,为企业智能化升级管理服务

随着科技的不断进步,物联网设备已经广泛应用于各行各业,包括餐饮业。在餐饮门店的线下运营过程中,叫号系统是一项重要的设备需求。传统的叫号方式往往会消耗大量的人力和时间,而物联网技术为餐饮行业提供了一种更高效、智能化的解…

Atcoder ABC338 A-D题解

又是一篇姗姗来迟的atcoder题解。 Link:ABC338 Problem A: 妥妥的签到题。 #include <bits/stdc.h> using namespace std; int main(){string str;cin>>str;if(int(str[0])<65 || int(str[0])>90){cout<<"NO"<<endl;return 0;}for…

AIGC,ChatGPT4 实际需求效办公自动化函数应用

用实际需求来给大家演示一下ChatGPT如何助力办应用。 首先我们来提取年份值 我们将公式复制到表格即可。 接下来进行向下填充。 就得到了所有年份&#xff0c; 接下来我们完成第二个需求&#xff0c;按年份统计销售额。 Prompt&#xff1a;有一个表格C列是年份&#xff0c;D列…

Ubuntu系统硬盘分区攻略(磁盘分区、RAID磁盘阵列、RAID阵列、固态硬盘分区、机械硬盘分区、swap分区、swap交换分区)

文章目录 分区需求分区方案分区顺序相关疑问swap分区不是应该放在最后吗&#xff1f;我安装系统分区的时候&#xff0c;上面有available devices&#xff0c;下面有create software raid(md)&#xff0c;我该用哪个&#xff1f;我available devices下面有个893G的固态&#xff…

前端canvas项目实战——简历制作网站(三)——右侧属性栏(线条宽度样式)

目录 前言一、效果展示二、实现步骤1. 实现线条宽度&#xff08;strokeWidth&#xff09;的属性模块2. 实线线条样式&#xff08;strokeDashArray&#xff09;的属性模块3. 意料之外的“联动” 三、Show u the code后记 前言 上一篇博文中&#xff0c;我们初步实现了右侧属性栏…

Zoho如何使用低代码:赋予人力资源以技术实力

Zoho 为客户提供了一套跨功能产品&#xff0c;从运行简单的调查到简化复杂的企业组织职能&#xff0c;Zoho 几乎提供了企业的业务运行所需的一切。 组织在新的规范和挑战中不断进行扩展&#xff0c;这就不断需要构建可定制的解决方案。这就是为什么除了现成的应用程序之外&…

突破瓶颈!程序员最值得关注的19个顶级油管博主

油管可以说是互联网上最有趣的地方&#xff0c;你可以在这里找到任何你感兴趣的东西。这里也是学习和探索编程世界的绝佳方式。有趣又有才华的技术博主非常多&#xff0c;随时随地都可以与全世界的开发者交流学习。 我们整理了一些在编程领域有影响力的博主&#xff0c;希望能给…

BUUCTF-Real-[PHP]XXE

目录 1、原理 2、XXE漏洞产生的原因 3、开始复现 paylaod 复现 4、flag 1、原理 XML数据在传输过程中&#xff0c;攻击者强制XML解析器去访问攻击者指定的资源内容&#xff08;本地/远程&#xff09;&#xff0c;外部实体声明关键字SYSTEM会令XML解析器读取数据&#xf…

idea创建golang项目

目录 1、设置环境 2、创建项目 3、设置项目配置 4、初始化项目 5、安装本项目的外部依赖包 6、运行项目 7、访问页面查看结果 1、设置环境 1 启用 Go Modules 功能go env -w GO111MODULEon 2. 阿里云go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct上述命…

【Pwn | CTF】BUUCTF test_your_nc1

天命&#xff1a;时隔两年&#xff0c;又杀回了pwn这里 拿到题目的提示&#xff0c;测试你的nc工具 这题直接连接就可以了&#xff0c;windows装了nc工具&#xff0c;直接耍 nc node5.buuoj.cn 28930 下面给一点nc命令的解释&#xff0c;文心一言得出来的 nc命令是一个用于网…

设计模式篇---备忘录模式

文章目录 概念结构实例总结 概念 备忘录模式&#xff1a;在不破坏封装的前提下捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;像这样可以在以后将对象恢复到原先保存的状态。 就好比我们下象棋&#xff0c;下完之后发现走错了&#xff0c;想要回退…

指针的深入了解6

1.回调函数 回调函数就是一个通过函数指针调用的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另一个函数&#xff0c;当这个指针被用来调用其所指向的函数 时&#xff0c;被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用&#xff0…

openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板

文章目录 openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板概述笔记工程中需要的openssl的库实现补充 - 最终的模板工程END openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板 概述 openssl3.2 - 测试程序的学习 整了几个test.c, 每开一个新的测试工…

架构设计 高性能带来的复杂度

架构设计的主要目的是为了解决软件系统复杂度带来的问题。 复杂度来源之一就是软件的高性能。 对性能孜孜不倦的追求是整个人类技术不断发展的根本驱动力。例如计算机&#xff0c;从电子管计算机到晶体管计算机再到集成电路计算机&#xff0c;运算性能从每秒几次提升到每秒几…