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.hqwc.cn/news/437829.html

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

相关文章

实战教学:用Semantic Kernel框架集成腾讯混元大模型应用

导语 | 众所周知,Semantic Kernel 主要支持国外的两款大模型,但这对于开发者而言,显然是不够的,尤其是当我们希望对接国内的大模型时,我们应该怎么做呢?如何用 Semantic Kernel 通过 oneapi 来集成腾讯混元…

如何对Microsoft 365中Loop文档进行权限划分

Microsoft 365中Loop文档的权限划分为两种:第一种是共享创意页面。第二种是共享特定的Loop组件。 共享创意页面。 进入创意页面后,点击右上角的“共享”-“页面链接”。 如上图所示,页面共享分三种类型。以“你选择的人”为例。添加要共享的…

iOS 文件分割保存加密

demo只是验证想法,没有做很多异常处理 默认文件是大于1KB的,对于小于1KB的没有做异常处理demo中文件只能分割成2个,可以做成可配置的N个文件分割拼接还可以使用固定的二进制数据,拼接文件开头或结尾 不论哪种拼法,目的…

防御保护--NAT策略

目录 NAT策略 NAT类型 server-map表 P2P --- peer to peer 网络类型 ​编辑 目标NAT--服务器映射 双向NAT ​编辑 多出口NAT NAT策略 静态NAT --- 一对一 动态NAT --- 多对多 NAPT --- 一对多的NAPT --- easy ip --- 多对多NAPT 服务器映射 源NAT--基于源IP地址进行转…

GIS应用水平考试一级—2009 年度第二次

全国信息化工程师——GIS应用水平考试 2009 年度第二次全国统一考试一级 试卷说明: 1、本试卷共9页,6个大题,满分150 分,150 分钟完卷。 2、考试方式为闭卷考试。 3、将第一、二、三題的答案用铅笔涂写到(NCIE-GIS)答题卡上。 4、将第四、五、六题的答案填写到主观题答题卡上…

《HTML 简易速速上手小册》第1章:HTML 入门(2024 最新版)

文章目录 1.1 HTML 简介与历史(😉🌐👽踏上神奇的网页编程之旅)1.1.1 从过去到现在的华丽蜕变1.1.2 市场需求 —— HTML的黄金时代1.1.3 企业中的实际应用 —— 不只是个网页1.1.4 职业前景 —— 未来属于你 1.2 基本 H…

千川投流怎么涨粉的?巨量千川粉丝是怎么投流的呢?

在当今数字时代,流量已经成为了一个品牌或产品成功与否的关键因素。因此,千川投流作为一种有效的涨粉引流推广方法,已经成为了许多品牌和产品的首选。本文将向您详细介绍千川投流涨粉引流推广方法,帮助您实现粉丝数量的暴涨目标。…

数据可视化工具JSON Crack结合内网穿透实现公网访问

文章目录 1. 在Linux上使用Docker安装JSONCrack2. 安装Cpolar内网穿透工具3. 配置JSON Crack界面公网地址4. 远程访问 JSONCrack 界面5. 固定 JSONCrack公网地址 JSON Crack 是一款免费的开源数据可视化应用程序,能够将 JSON、YAML、XML、CSV 等数据格式可视化为交互…

Zerosync:构建基于STARK的Bitcoin证明系统

1. 引言 前序博客: BitcoinSTARK: ZeroSync & Khepri Robin Linus、Tino Steffens、Lukas George 等人成立了一个名为 ZeroSync 协会(ZeroSync Association)的瑞士非营利组织,该组织将牵头开发比特币证明系统。ZeroSync 于…

智慧文旅:重塑旅游业的商业模式与未来

随着科技的飞速发展和消费者需求的不断演变,旅游业正经历着前所未有的变革。智慧文旅,作为这场变革的核心驱动力,正在逐步重塑旅游业的商业模式和未来。本文将深入探讨智慧文旅如何改变传统旅游业的格局,并展望其未来的发展趋势。…

pytest的内置插件盘点7:python

本文系《pytest源码剖析》系列内容 正在连载,欢迎关注 7. 内置插件 python 插件路径:_pytest.python 实现的 hook hooktryfirsttrylastoptionalhookhookwrapperwrapperpytest_addoptionFalseFalseFalseFalseFalsepytest_cmdline_mainFalseFalseFalseFal…

SQL注入:二次注入

SQL注入系列文章: 初识SQL注入-CSDN博客 SQL注入:联合查询的三个绕过技巧-CSDN博客 SQL注入:报错注入-CSDN博客 SQL注入:盲注-CSDN博客 目录 什么是二次注入? 二次注入演示 1、可以注册新用户 2、可以登录->…