Nginx08 通过扩容提升整体吞吐量 nginx平滑升级-添加sticky模块和使用
1 扩容方式介绍
1 单机垂直扩容:硬件资源增加
2 水平扩展:集群化
3 细粒度拆分:分布式
3-1 数据分区
3-2 上游服务SOA化(原生支持水平/垂直扩容)
3-3 入口细分
3-3-1 浏览器
3-3-2 移动端原生App(物联网)
3-3-3 H5内嵌式应用
4 数据异构化
4-1 多级缓存
4-1-1 客户端缓存
4-1-2 CDN缓存
4-1-3 异地多活
4-1-4 Nginx缓存
5 服务异步化
5-1 拆分请求
5-2 消息中间件
2 垂直扩容和水平扩容
垂直扩容择是增加硬件内存等配置的方式,来实现增加缓存实例系统容量的。
水平扩容指的是通过增加节点的方式来增加整个系统的容量,这一种扩容方式是需要应用程序支持的。
两者的区别在于垂直扩容则是增加设备自身容量来进行扩容,水平扩容是通过加机器进行的一种扩容。
举个例子来说,就比如说用篮子来用苹果。100个苹果需要运送,总共有两个篮子,每个篮子只能运10个,现在想要增加运行效率,垂直扩容的方案就是将篮子的容量扩大,而水平扩容就是添加篮子
两种扩容都是常见的扩容方式,虽然都能够有效的扩容,但是两者也有着相应的缺点
水平扩容,它会牵扯到数据迁徙,在迁徙过程中又要保证业务可用,又要保证数据不丢失,这就容易出现错误。
而垂直扩容所需要的成本比较大,并且有些数据并不能一直使用垂直扩容,所以会存在相对应的弊端。两者在使用上基本上是依据个人的需求进行选择。
3 水平扩展时,集群中使用Nginx做负载均衡
3.1 nginx方向代理和负载均衡
https://www.cnblogs.com/jthr/p/16827617.html
3.2 nginx支持的负载均衡策略
https://www.cnblogs.com/jthr/p/16827617.html 中的4.4
4 使用sticky模块完成Nginx的负载均衡
4.1 nginx官网介绍
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky
4.2 sticky项目官网
https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/src/master/
4.3 sticky介绍
sticky是第三方模块,可以在nginx这一类静态服务器做负载均衡的时候下发给客户端cookie。
它不需要上游服务器支持cookie,通过sticky下发cookie即可。
4.4 工作原理
1)客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器。
2)后端服务器处理完请求,将响应数据返回给nginx。
3)此时nginx通过sticky生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值
4)客户端接收请求,并保存带route的cookie。
5)当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器
4.5 下载安装
4.5.1 下载
https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/downloads/?tab=tags

4.5.2 上传到服务器并解压
tar xzvf nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz
4.5.3 重新编译Nginx
进入nginx源码目录,注意nginx-1.21.6事源码目录,nginx是安装目录(之前nginx安装好了)

注意:--prefix=/usr/local/nginx这里的/usr/local/nginx是安装目录 add-module指的是添加第三方的模块 后面根刚才stikey的解压的文件目录
注意:这个命令相当于给nginx做了个升级,生成一个全新的nginx,不会记住原来的额配置
./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d

4.5.4 执行命令make
1)出现如下报错

因为缺少了一些依赖
2)安装依赖
yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel

3)再次执行命令
./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d
4)再次执行make,还有错误

5) 进入stikey的目录
cd /usr/local/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d
修改文件ngx_http_sticky_misc.h
vi ngx_http_sticky_misc.h
加上配置内容
#include <openssl/sha.h>
#include <openssl/md5.h>

6)回到nginx源码目录,再次执行命令
./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d

7)再次执行命令make
成功

make成功后,不要直接make install,因为它会直接覆盖掉原先安装好的的nginx。
8)测试下
执行命令
make upgrade
出现下图,说明没有问题

4.5.5 升级好的文件
make它不是在原安装目录直接升级覆盖,而是创建了新的执行文件,在objs文件夹下


4.5.6 备份原来的安装文件
为了平滑升级,先把原来的文件重命名
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

4.5.7 把新的执行文件复制过去
cp nginx /usr/local/nginx/sbin/

4.5.8 查看nginx有哪些功能
进入安装目录
cd /usr/local/nginx/sbin/
执行命令
./nginx -V

发现stikey模块已经有了
4.6 使用sticky下发cooike来负载均衡
name:cookie的key,非必要配置
expires:cookie失效时间,非必要配置
upstream httpget {
sticky name=route expires=6h;
server 192.168.44.102;
server 192.168.44.103;
}
最简配置
upstream httpget {
sticky;
server 192.168.44.102;
server 192.168.44.103;
}
Nginx08 通过扩容提升整体吞吐量 nginx平滑升级-添加sticky模块和使用的更多相关文章
- 让你的网站免费支持 HTTPS 及 Nginx 平滑升级
为什么要使用 HTTPS ? 首先来说一下 HTTP 与 HTTPS 协议的区别吧,他们的根本区别就是 HTTPS 在 HTTP 协议的基础上加入了 SSL 层,在传输层对网络连接进行加密.简单点说在 ...
- Nginx range filter模块数字错误漏洞修复 (Nginx平滑升级) 【转】
对线上生产环境服务器进行漏洞扫描, 发现有两台前置机器存在Nginx range filter模块数字错误漏洞, 当使用nginx标准模块时,攻击者可以通过发送包含恶意构造range域的header ...
- Nginx range filter模块数字错误漏洞修复 (Nginx平滑升级)
对线上生产环境服务器进行漏洞扫描, 发现有两台前置机器存在Nginx range filter模块数字错误漏洞, 当使用nginx标准模块时,攻击者可以通过发送包含恶意构造range域的header ...
- nginx平滑升级实战
Nginx 平滑升级 1.查看旧版Nginx的编译参数 [root@master ~]# /usr/local/nginx/sbin/nginx -V [root@master ~]# ll ngin ...
- Nginx平滑升级版本!(重点)
一.解释nginx的平滑升级 随着nginx越来越流行使用,并且nginx的优势也越来越明显,nginx的版本迭代也开始了加速模式,1.9.0版本的nginx更新了许多新功能,例如stream四层代理 ...
- 02 . Nginx平滑升级和虚拟主机
Nginx虚拟主机 在真实的服务器环境,为了充分利用服务器资源,一台nginx web服务器会同时配置N个虚拟主机,这样可以充分利用服务器的资源,方便管理员的统一管理 配置nginx虚拟主机有三种方法 ...
- Nginx平滑升级详细步骤-113p.cn
认识平滑升级 有时候我们需要对Nginx版本进行升级以满足运维人员对其功能的需求,例如添加xxx模块,需要xxx功能,而此时Nginx又在跑着业务无法停掉,这时我们就只能平滑升级了. 平滑升级原理 N ...
- Nginx 平滑升级、Nginx的一些基础配置
# Nginx 平滑升级 # 方案一:使用Nginx服务信号进行升级 # 1.将就版本的sbin目录下可执行nginx进行备份(mv nginx nginxold) # 2.将新版本 configur ...
- nginx 番外----添加第三方模块
#第三方模块需要先进行下载,然后再编译时指定文件目录 1.查看当前编译模块 root@nginx sbin]# ./nginx -V #查看当前添加模块 nginx version: nginx/ b ...
- Nginx在线服务状态下平滑升级或新增模块的详细操作
今天应开发的需求,需要在Nginx增加一个模块,并不能影响现有的业务,所以就必须要平滑升级Nginx,好了,不多说了 1:查看现有的nginx编译参数 /usr/local/nginx/sbin/ng ...
随机推荐
- C#多线程之线程高级(下)
四.Monitor信号构造 信号构造本质:一个线程阻塞直到收到另一个线程发来的通知. 当多线程Wait同一对象时,就形成了一个"等待队列(waiting queue)",和用于等待 ...
- labuladong
由于 labuladong 的算法网站频繁被攻击,且国内访问速度可能比较慢,所以本站同时开放多个镜像站点: https://labuladong.gitee.io/algo/ https://labu ...
- 基于.NET 7 的 WebTransport 实现双向通信
Web Transport 简介 WebTransport 是一个新的 Web API,使用 HTTP/3 协议来支持双向传输.它用于 Web 客户端和 HTTP/3 服务器之间的双向通信.它支持通过 ...
- C ++:树
C++:树 树的概念: 所谓"树"是输就结构的一种,树大概可以分为两大类: 有根树 和 无根树 有根树使有一个确定的根节点,反之为无根树 · 子节点:从树根开始,通过树边向下扩展的 ...
- 使用lamdba查询datatable中的一个值或者单元格
首先创建一个datatable,结构简单的分为两列 Datatable dt=new Datatable(); dt.Columns("code"); dt.Columns(&qu ...
- 关于小米mini路由器开启ssh红灯解决
前言 小米 后续版本 对 ssh固件校验失败导致的,下载路由器旧版开发版固件,然后用后台web升级成老版本后,再采用官方方法刷入即可. 旧版路由器固件下载 地址 其他 后续的刷机可以参考我的文章
- 在 win11 下搭建并使用 ubuntu 子系统(同时测试 win10)——(附带深度学习环境搭建)
对于一个深度学习从事者来说,Windows训练模型有着诸多不便,还好现在Windows的Ubuntu子系统逐渐完善,近期由于工作需求,配置了Windows的工作站,为了方便起见,搭建了Ubuntu子系 ...
- jquery操作内容
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【Java SE】Day07 API、Scanner类、Random类、ArrayList类
一.API 1.概述: API(Application Programming Interface),应用程序编程接口 Java API:程序员的字典,是类的说明文档 2.使用步骤 帮助文档:JDK_ ...
- .NET性能优化-ArrayPool同时复用数组和对象
前两天在微信后台收到了读者的私信,问了一个这样的问题,由于私信回复有字数和篇幅限制,我在这里统一回复一下.读者的问题是这样的: 大佬您好,之前读了您的文章受益匪浅,我们有一个项目经常占用 7-8GB ...