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模块和使用的更多相关文章

  1. 让你的网站免费支持 HTTPS 及 Nginx 平滑升级

    为什么要使用 HTTPS ? 首先来说一下 HTTP 与 HTTPS 协议的区别吧,他们的根本区别就是 HTTPS 在 HTTP 协议的基础上加入了 SSL 层,在传输层对网络连接进行加密.简单点说在 ...

  2. Nginx range filter模块数字错误漏洞修复 (Nginx平滑升级) 【转】

    对线上生产环境服务器进行漏洞扫描, 发现有两台前置机器存在Nginx range filter模块数字错误漏洞, 当使用nginx标准模块时,攻击者可以通过发送包含恶意构造range域的header ...

  3. Nginx range filter模块数字错误漏洞修复 (Nginx平滑升级)

    对线上生产环境服务器进行漏洞扫描, 发现有两台前置机器存在Nginx range filter模块数字错误漏洞, 当使用nginx标准模块时,攻击者可以通过发送包含恶意构造range域的header ...

  4. nginx平滑升级实战

    Nginx 平滑升级 1.查看旧版Nginx的编译参数 [root@master ~]# /usr/local/nginx/sbin/nginx -V [root@master ~]# ll ngin ...

  5. Nginx平滑升级版本!(重点)

    一.解释nginx的平滑升级 随着nginx越来越流行使用,并且nginx的优势也越来越明显,nginx的版本迭代也开始了加速模式,1.9.0版本的nginx更新了许多新功能,例如stream四层代理 ...

  6. 02 . Nginx平滑升级和虚拟主机

    Nginx虚拟主机 在真实的服务器环境,为了充分利用服务器资源,一台nginx web服务器会同时配置N个虚拟主机,这样可以充分利用服务器的资源,方便管理员的统一管理 配置nginx虚拟主机有三种方法 ...

  7. Nginx平滑升级详细步骤-113p.cn

    认识平滑升级 有时候我们需要对Nginx版本进行升级以满足运维人员对其功能的需求,例如添加xxx模块,需要xxx功能,而此时Nginx又在跑着业务无法停掉,这时我们就只能平滑升级了. 平滑升级原理 N ...

  8. Nginx 平滑升级、Nginx的一些基础配置

    # Nginx 平滑升级 # 方案一:使用Nginx服务信号进行升级 # 1.将就版本的sbin目录下可执行nginx进行备份(mv nginx nginxold) # 2.将新版本 configur ...

  9. nginx 番外----添加第三方模块

    #第三方模块需要先进行下载,然后再编译时指定文件目录 1.查看当前编译模块 root@nginx sbin]# ./nginx -V #查看当前添加模块 nginx version: nginx/ b ...

  10. Nginx在线服务状态下平滑升级或新增模块的详细操作

    今天应开发的需求,需要在Nginx增加一个模块,并不能影响现有的业务,所以就必须要平滑升级Nginx,好了,不多说了 1:查看现有的nginx编译参数 /usr/local/nginx/sbin/ng ...

随机推荐

  1. 嵌入式-C语言基础:指针数组(和数组指针区分开来)

    指针数组:一个数组,若其元素均为指针类型的数据,称为指针数组,指针数组存放的是指针类型的数据,也就是指针数组的每个元素都存放一个地址.下面定义一个指针数组: int * p[4];//[]的优先级是比 ...

  2. mysql忽略大小写配置

    #更改配置文件:vim /etc/my.cnf#添加此行在[mysqld]下lower_case_table_names=1​#重启服务systemctl restart mysqld  

  3. 2022!影响百万用户金融信用评分,Equifax被告上法庭,罪魁祸首——『数据漂移』!⛵

    作者:韩信子@ShowMeAI 数据分析实战系列:https://www.showmeai.tech/tutorials/40 机器学习实战系列:https://www.showmeai.tech/t ...

  4. Java-ArrayList应用

    存储随机数字 ArrayListRandom.java package cn.day04; import java.util.ArrayList; import java.util.Random; p ...

  5. linux内核中的likely与unlikely

    前言 内核版本:linux 4.9.x.在linux内核中,经常可以看见if( likely(x))或if( unlikely(x))的语句,本文将基于likely和unlikely的定义和作用进行一 ...

  6. i春秋GetFlag

    进去是个提示界面,提示我们这是个迷你文件管理系统,我们需要登录然后下载文件再获得flag. 然后我们查看源码,没什么信息,点login进去查看源码,没什么信息 下方出现了一个substr(md5(ca ...

  7. 修改msi文件

    前言 msi文件是一个安装包文件,可以看做一个数据库,其中包含很多资源,例如图片,配置文件,可执行文件exe等等. 我想要把修改过 exe可执行文件提交到msi文件中,那么就需要知道msi文件的构成, ...

  8. 使用selenium爬取淘宝

    一.出现的问题 前段时间在使用selenium对淘宝进行模拟登陆的时候,输入完正好和密码,然后验证码无论如何都不能划过去.找了好久,原来是因为selenium在浏览器中运        行的时候会暴露 ...

  9. Crane如何做到利用率提升3倍稳定性还不受损?

    作为云平台用户,我们都希望购买的服务器物尽其用,能够达到最大利用率.然而要达到理论上的节点负载目标是很的,计算节点总是存在一些装箱碎片和低负载导致的闲置资源.下图展示了某个生产系统的CPU资源现状,从 ...

  10. Ubuntu20.04 Java相关环境(JDK、Mysql、Redis、nacos、influxdb)部署以及运行

    重装了系统,系统版本号为:Ubuntu20.04 1.云平台 登录云平台,选择要重装的服务器,关机.一键重装即可 2.安装jdk 下载jdk-8u341-linux-x64.tar.gz,并复制到服务 ...