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. 【Virt.Contest】CF1155(div.2)

    CF 传送门 T1:Reverse a Substring 只有本身单调不减的字符串不能转换为字典序更小的字符串.否则肯定会出现 \(s_i>s_{i+1}\) 的情况. 所以只要从头到尾扫一遍 ...

  2. 6、将两个字符串连接起来,不使用strcat函数

    /* 将两个字符串连接起来,不使用strcat函数 */ #include <stdio.h> #include <stdlib.h> void strCat(char *pS ...

  3. easui 两个combobox相互选中时至对方为空的解决方案

    combobox HTML: <select id="monthplan" class="zxui-combobox" name="monthp ...

  4. 教你用JavaScript完成轮播图

    案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个轮播图.图片每3秒自动轮换,也可以点击左右按键轮播图片,当图片到达最左端或最右端时, ...

  5. 长度最小子数组-LeetCode209 滑动窗口

    力扣:https://leetcode.cn/problems/minimum-size-subarray-sum/ 题目 给定一个含有 n 个正整数的数组和一个正整数 target .找出该数组中满 ...

  6. 编译器优化丨Cache优化

    摘要:本文重点介绍几种通过优化Cache使用提高程序性能的方法. 本文分享自华为云社区<编译器优化那些事儿(7):Cache优化>,作者:毕昇小助手. 引言 软件开发人员往往期望计算机硬件 ...

  7. 【数据库】Oracle建表、创建序列、添加触发器生成自增主键

    CREATE TABLE "TEST"."T_ORDER" (    "AUUID_0" VARCHAR2 ( 255 ) NOT NULL ...

  8. JavaScript中的防抖与节流-图文版

    01.防抖还是节流 防抖 与 节流 目的都是避免一定时间内,大量重复的操作造成的性能损耗.因此原理也类似,都是阻止过多的事件执行,只保留一部分来执行.适用场景略有不同,也有交叉,动手练习一遍就懂了. ...

  9. java逻辑运算&&与&的区别

    本文主要阐述&&(短路与)和&(逻辑与)的运算异同:a && b 和 a&b : 共同之处是只有a和b同时为真时,结果才为真,否则为假 不同点在于 a ...

  10. week_9(异常检测)

    Andrew Ng 机器学习笔记 ---By Orangestar Week_9 This week, we will be covering anomaly detection which is w ...