Ubuntu 22.04安装Nginx负载均衡

news2024/11/17 21:54:01

君衍.

  • 一、编译安装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.coloradmin.cn/o/1410857.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

APP出海广告变现对接Admob

AdMob成立于2006年,并于2009年被Google收购。从那以后,AdMob在游戏及应用广告变现的重要性不断上升。凭借Google的血统,AdMob广告网络拥有其他广告平台不具备的优势:它可以访问无数的Google广告客户数据库。不仅如此,A…

线性代数速通

二---矩阵 逆矩阵 抽象矩阵求逆 数字型矩阵求逆 二阶矩阵求逆秒杀 解矩阵方程 方阵 伴随矩阵 三---向量组的线性相关性 线性表示 数字型向量组 线性相关性判断 抽象型向量组 线性相关性判断 向量组的秩与极大无关组 四---线性方程组 齐次方程组 基础解系 通解 非齐…

数学建模绘图

注意:本文章旨在记录观看B站UP数模加油站之后的笔记文章,无任何商业用途~~ 必备网站 以下网站我都试过,可以正常访问 配色(取色)网站: Color Palettes Generator and Color Gradient Tool Python&#x…

【论文阅读笔记】Towards Universal Unsupervised Anomaly Detection in Medical Imaging

Towards Universal Unsupervised Anomaly Detection in Medical Imaging arxiv,19 Jan 2024 【开源】 【核心思想】 本文介绍了一种新的无监督异常检测方法—Reversed Auto-Encoders (RA),旨在提高医学影像中病理检测的准确性和范围。RA通过生成类似健…

1990-2019年城市维度区域创新创业指数面板数据/地级市创新创业指数面板数据

1990-2019年城市维度区域创新创业指数面板数据/地级市创新创业指数面板数据 1、时间:1990-2019年 2、范围:地级市(290) 3、指标:序号、年份、城市码、城市、总维度:总量指数得分、人均得分、单位面积得分…

《WebKit 技术内幕》学习之十(4): 插件与JavaScript扩展

4 Chromium扩展机制 4.1 原理 Chromium的扩展(Extension)机制 (1) 原先是Chromium推出的一项技术,该机制能够扩展浏览器的能力,例如笔者使用的一个扩展实例名为“switchy proxy”,它可以帮助用户方便的切换Chromium…

阿里云服务器4核16G3M32.25元,4核32G10M113.24元深度测评与购买建议

2024年1月24日,阿里云再次为用户带来了惊喜,推出了两款极具性价比的特价云服务器。其中,4核16G3M带宽的特惠价格仅为32.25元/月、96.75元/3个月,而4核32G10M带宽的特惠价格也仅为113.24元/月、339.72元/3个月。那么,这…

Redis性能运行参数的监测工具 - WGCLOUD

WGCLOUD是一款开源免费的运维监控平台,可以监测Redis的运行情况,比如redis的Key数量,过期Key数量,Redis的端口号,Redis的版本,同步状态,集群模式,使用内存等等数据 中间件Redis监测…

java基础:随机生成几个整数存放到数组里并按顺序输出案例分析

思路分析 具体步骤如下: 创建一个数组,用于存放生成的随机数。 定义最大值和最小值,用于限定随机数的取值范围。 使用循环和Random类中的方法生成随机数,并将其添加到数组中。 使用Arrays类中的sort()方法对数组进行排序&#…

牛客——都别吵吵了,我才是签到(质因数分解和统计质因数次数)

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 陶陶刚上一年级,今天数学课上老师教了乘法和除法,老师留了一道课后习题,陶陶很快地写完了,现在想请你帮助他检查一下是否和答案一致。…

应急响应红蓝工程师白帽子取证Linux和windows入侵排查还原攻击痕迹,追溯攻击者,以及各种木马和病毒以及恶意脚本文件排查和清除

应急响应红蓝工程师白帽子取证Linux入侵排查还原攻击痕迹,追溯攻击者,以及各种木马和病毒以及恶意脚本文件排查和清除。 一般服务器被入侵的迹象,包括但不局限于:由内向外发送大量数据包(DDOS肉鸡)、服务器资源被耗尽(挖矿程序)、不正常的端口连接(反向shell等)、服务…

简单模拟实现一个线程池

废话不多说之间上代码 import java.util.ArrayList; import java.util.List; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue;public class MyThreadPoolExecutor {private List<Thread> listnew ArrayList<>();pri…

安全防御综合组网实验

题目 要求 生产区在工作时间可以访问服务器区&#xff0c;仅可以访问http服务器。办公区全天可以访问服务器区&#xff0c;其中10.0.2.20 可以访问FTP服务器和http服务器。10.0.2.10仅可以ping通10.0.3.10。办公区在访问服务器区时采用匿名认证的方式进行上网行为管理。办公区…

cmd_to_robot 讨论及 G29 控制优化

cmd_to_robot 讨论及 G29 控制优化 cmd_to_robot 讨论 转向电机控制代码中&#xff0c;补偿信息在循环中发布&#xff0c;转向完成信息在回调函数中发布 转动电机控制代码中&#xff0c;对转动电机的控制在转向完成的回调函数中实现 这就意味着如果一直没有 /cmd_vel 消息发…

基于蒙特卡洛模拟的家用电动汽车充电负荷预测(MATLAB实现)

采用蒙特卡洛模拟法&#xff0c;对家用电动汽车充电负荷进行预测&#xff0c;电动汽车分为快、中、慢三种充电功率&#xff0c;且分为一天一充、一天两充、一天三充三种类型。全部MATLAB代码在下方给出&#xff0c;可以直接运行。 %%%%%%%%%%%%%%%%%%%%%%%%输入电动汽车相关原…

【征服redis14】认真理解一致性Hash与Redis的三种集群

前面我们介绍了主从复制的方式和sentinel方式&#xff0c;这里我们看第三种模式-Cluster方式。 目录 1.前两种集群模式的特征与不足 2.Cluster模式 2.1 Cluster模式原理 2.2 数据分片与槽位 2.3 Cluster模式配置和实现 3.一致性Hash 3.1 哈希后取模 3.2 一致性Hash算法…

探索未知:量子计算机的崛起

探索未知&#xff1a;量子计算机的崛起 Exploring the Unknown: The Rise of Quantum Computing 在2024年1月6日&#xff0c;中国安徽省量子计算工程研究中心和量子计算芯片安徽省重点实验室宣布&#xff0c;中国第三代自主超导量子计算机“本源悟空”正式上线运行。搭载72位自…

爬虫js逆向分析——x平台(实现)

爬虫js逆向分析——x平台&#xff08;实现&#xff09; &#xff08;仅供学习&#xff0c;本案例只是分析流程没有账号&#xff09;网址&#xff1a;https://xuexi.chinabett.com/ 1.分析请求包格式 打开控制台&#xff0c;并勾选保存日志&#xff0c;然后点击登录看发送了什…

W3School离线手册(2017.03.11版)

点击下载 W3School离线手册(2017.03.11版)

Miniconda安装及使用

B站课程 下载地址 Index of /anaconda/miniconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 1.为什么会诞生Python虚拟环境管理工具 Python 应用经常需要使用一些包第三…