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 ...
随机推荐
- 【Virt.Contest】CF1155(div.2)
CF 传送门 T1:Reverse a Substring 只有本身单调不减的字符串不能转换为字典序更小的字符串.否则肯定会出现 \(s_i>s_{i+1}\) 的情况. 所以只要从头到尾扫一遍 ...
- 6、将两个字符串连接起来,不使用strcat函数
/* 将两个字符串连接起来,不使用strcat函数 */ #include <stdio.h> #include <stdlib.h> void strCat(char *pS ...
- easui 两个combobox相互选中时至对方为空的解决方案
combobox HTML: <select id="monthplan" class="zxui-combobox" name="monthp ...
- 教你用JavaScript完成轮播图
案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个轮播图.图片每3秒自动轮换,也可以点击左右按键轮播图片,当图片到达最左端或最右端时, ...
- 长度最小子数组-LeetCode209 滑动窗口
力扣:https://leetcode.cn/problems/minimum-size-subarray-sum/ 题目 给定一个含有 n 个正整数的数组和一个正整数 target .找出该数组中满 ...
- 编译器优化丨Cache优化
摘要:本文重点介绍几种通过优化Cache使用提高程序性能的方法. 本文分享自华为云社区<编译器优化那些事儿(7):Cache优化>,作者:毕昇小助手. 引言 软件开发人员往往期望计算机硬件 ...
- 【数据库】Oracle建表、创建序列、添加触发器生成自增主键
CREATE TABLE "TEST"."T_ORDER" ( "AUUID_0" VARCHAR2 ( 255 ) NOT NULL ...
- JavaScript中的防抖与节流-图文版
01.防抖还是节流 防抖 与 节流 目的都是避免一定时间内,大量重复的操作造成的性能损耗.因此原理也类似,都是阻止过多的事件执行,只保留一部分来执行.适用场景略有不同,也有交叉,动手练习一遍就懂了. ...
- java逻辑运算&&与&的区别
本文主要阐述&&(短路与)和&(逻辑与)的运算异同:a && b 和 a&b : 共同之处是只有a和b同时为真时,结果才为真,否则为假 不同点在于 a ...
- week_9(异常检测)
Andrew Ng 机器学习笔记 ---By Orangestar Week_9 This week, we will be covering anomaly detection which is w ...