当前位置:首页 > 教程 > 正文内容

nginx平滑重启流程(nginx的平滑升级)

2023-04-23 05:20:06教程1

nginx的平滑升级

iSCSI: 基于IP协议 的SCSI远程存储 提供 块级别的存储

SCSI: 小型计算机系统接口 服务器上的一种磁盘接口 目前比较少最见

现在:

PCI-E M.2 NVME 1.5GB/s 读 1GB/s 写

机械HDD: 133MB/s 1.3Gb/s

SSD: 500MB/s

Sata:个人PC上使用比较多 3.0 SATA 6Gb/s 600MB/s

SAS: 服务器上的 类拟于sata 的接口 与sata兼容 6Gb/s

存储类型:

1)DAS:直接附加存储,直接将硬件存储设备 接在服务器的接口使用, U盘 ,移动硬盘 esata接口外接磁盘

优点: 性能, 资源独占 IO独占

缺点: 不能共享 ,不灵活

2) NAS: 网络附加存储 基于IP网络的 共享存储 提供 文件级存储 windows文件共享 CIFS (WINDOWS ) / FTP / NFS (LINUX)

优点: 灵活 廉价

缺点: 性能不好 ,访问的用户数增加, 性能下降

NAS硬件:

3)SAN:存储区域网络 通过IP协议或者 光纤实现存储连接 提供 块级别的存储 用于企业级方案

1.IP-SAN: 基于IP协议的SAN iSCSI 1Gb/s 10Gb/s

2.FC-SAN: 基于光纤的SAN 有专门的设备 16Gb/s 32Gb/s

优点: 性能好, 灵活 ,企业解决方案

缺点: 成本高

4)分布式存储 :软件定义存储 Ceph 统一存储 提供 文件级,块级, 对象级 所有类型的存储

文件级存储与块级存储:区别 文件系统在哪?

文件级: 文件系统在服务端

块级存储: 文件系统在客户端

发起程序

实验:将dc,server1,server2虚拟机还原快照到 contoso域环境

服务器

角色

IP地址

DC-windows

AD DS

172.16.70.200

Server1

iSCSI 目标服务器

172.16.70.201

Server2

iSCSI 发起程序 客户端

172.16.70.202

登录到域管理员:

安装组件:

授权客户端访问:

客户端: 172.16.70.202 server2可以连接 ip-san1的目标

客户端连接:

未连接目标服务器IQN前:

nginx降级

分布式系统服务保护

一、熔断

熔断一般是指依赖的外部接口出现故障的时断绝和外部接口的关系;例如你的A服务里面的一个功能依赖B服务,这时候B服务出问题了,返回的很慢。这种情况可能会因为这么一个功能而拖慢了A服务里面的所有功能,因此我们这时候就需要熔断!即当发现A要调用这B时就直接返回错误(或者返回其他默认值啊啥的),就不去请求B了。

雪崩效应:在微服务架构中,微服务是完成一个单一的业务功能,这样做的好处是可以做到解耦,每个微服务可以独立演进。但是,一个应用可能会有多个微服务组成,微服务之间的数据交互通过远程过程调用完成。这就带来一个问题,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。

熔断机制是应对雪崩效应的一种微服务链路保护机制。在微服务架构中,当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。

二、降级

降级也就是服务降级,当我们的服务器压力剧增为了保证核心功能的可用性 ,而选择性的降低一些功能的可用性,或者直接关闭该功能。这就是典型的丢车保帅了。就比如贴吧类型的网站,当服务器吃不消的时候,可以选择把发帖功能关闭,注册功能关闭,改密码,改头像这些都关了,为了确保登录和浏览帖子这种核心的功能。

熔断与降级的区别:触发原因不太一样,服务熔断一般是某个服务(下游服务)故障引起,而服务降级一般是从整体负荷考虑;

三、限流

限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务(定向到错误页或告知资源没有了)、排队或等待(比如秒杀、评论、下单)、降级(返回兜底数据或默认数据,如商品详情页库存默认有货)。

漏桶算法:漏桶算法思路是请求先进入到漏桶里,漏桶以一定的速度出水,当水流入速度过大会直接溢出,可以看出漏桶算法能强行限制数据的传输速率。

令牌桶算法:令牌桶算法的原理是系统会以一个恒定的速度往桶里放入令牌,而如果请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌可取时,则拒绝服务。相比于漏桶算法令牌桶的优点是可以改变放令牌的速度. 一旦需要提高速率,则按需提高放入桶中的令牌的速率. 一般会定时(比如100毫秒)往桶中增加一定数量的令牌, 有些变种算法则实时的计算应该增加的令牌的数量。Guava的RateLimiter就是采用该算法进行限流控制。

计数器算法:计数器算法的核心就是在规定的时间内限制请求次数;例如:对于A接口来说,我们1分钟的访问次数不能超过100个。在一开 始的时候,我们可以设置一个计数器counte=0,每当一个请求过来的时候,counter就加1,如果counter的值大于100并且该请求与第一个 请求的间隔时间还在1分钟之内,那么说明请求数过多,拒绝请求;如果该请求与第一个请求的间隔时间大于1分钟,且counter的值还在限流范围内,那么就重置 counter=0;

Semaphore限流:可以控制某个资源可被同时访问的个数,acquire()获取一个许可,如果没有就等待,而release()释放一个许可。

四、常用的web服务器

Nginx主要有两种限流方式:

按连接数限流(ngx_http_limit_conn_module)(令牌算法实现)

按请求速率限流(ngx_http_limit_req_module)(漏桶算法实现)

tomcat 通过以下三个配置参数来进行限流操作:

maxThreads(最大线程数):每一次HTTP请求到达Web服务,tomcat都会创建一个线程来处理该请求,那么最大线程数决定了Web服务可以同时处理多少个请求,默认200.

accepCount(最大等待数):当调用Web服务的HTTP请求数达到tomcat的最大线程数时,还有新的HTTP请求到来,这时tomcat会将该请求放在等待队列中,这个acceptCount就是指能够接受的最大等待数,默认100.如果等待队列也被放满了,这个时候再来新的请求就会被tomcat拒绝(connection refused)。

maxConnections(最大连接数):这个参数是指在同一时间,tomcat能够接受的最大连接数。一般这个值要大于maxThreads+acceptCount。

在实际工作中对于流量入口的限流一般都是采用Nginx,tomcat一般会设置为适合当前操作系统的最大连接数,具体的业务限流(某个服务接口)一般使用sentinel和hystrix。

五、hystrix

提供了线程池隔离(默认)与信号量隔离

六、sentinel

古之学者为己,今之学者为人

分类: 中间件

标签: 分布式

nginx在线升级

1、nigix是否在正常运行,需要用linux命令查看nginx运行情况。执行命令:ps -A | grep nginx。

如果返回结果的话,说明有nginx在运行,服务已经启动。如果不怕nginx关闭的话。也可以执行:service nginx restart。

把nginx服务重启,在重启时,也可以看到具体有没有什么地方出错。

2、看端口netstat -ntlp;

看进程ps -ef|grep nginx;

看日志是否更新tail -f access.log。

3、直接查看进程id:ps -C nginx -o pid。

这种直接返回pid的方式比较适合跟其他程序结合使用,比如在shell/python脚本中执行这个命令拿到pid,让后根据pid来判断Nginx是否启动。 推荐使用这种方式。

nginx版本升级

1、可以高并发连接

官方测试Nginx能够支撑5万并发连接,实际生产环境中可以支撑2~4万并发连接数。

原因,主要是Nginx使用了最新的epoll(Linux2.6内核)和kqueue(freeBSD)网路I/O模型,而Apache使用的是传统的Select模型,其比较稳定的Prefork模式为多进程模式,需要经常派生子进程,所以消耗的CPU等服务器资源,要比Nginx高很多。

2、内存消耗少

Nginx+PHP(FastCGI)服务器,在3万并发连接下,开启10个Nginx进程消耗150MB内存,15MB*10=150MB,开启的64个PHP-CGI进程消耗1280内存,20MB*64=1280MB,加上系统自身消耗的内存,总共消耗不到2GB的内存。

如果服务器的内存比较小,完全可以只开启25个PHP-CGI进程,这样PHP-CGI消耗的总内存数才500MB。

3、成本低廉

购买F5BIG-IP、NetScaler等硬件负载均衡交换机,需要十多万到几十万人民币,而Nginx为开源软件,采用的是2-clause BSD-like协议,可以免费试用,并且可用于商业用途。

BSD开源协议是一个给使用者很大自由的协议,协议指出可以自由使用、修改源代码、也可以将修改后的代码作为开源或专用软件再发布。

4、配置文件非常简单

网络和程序一样通俗易懂,即使,非专用系统管理员也能看懂。

5、支持Rewrite重写

能够根据域名、URL的不同,将http请求分到不同的后端服务器群组。

6、内置的健康检查功能

如果NginxProxy后端的某台Web服务器宕机了,不会影响前端的访问。

7、节省带宽

支持GZIP压缩,可以添加浏览器本地缓存的Header头。

8、稳定性高

用于反向代理,宕机的概率微乎其微。

9、支持热部署

Nginx支持热部署,它的自动特别容易,并且,几乎可以7天*24小时不间断的运行,即使,运行数个月也不需要重新启动,还能够在不间断服务的情况下,对软件版本进行升级。

nginx如何升级版本

结论:阿里云SSL证书的部署需要按照一定的步骤进行,需要一些专业知识和技能。解释原因:部署阿里云SSL证书需要进行一定的配置和设置。首先需要购买证书,并在阿里云后台进行审核和颁发。然后需要在服务器上进行安装证书和配置HTTPS访问。这个过程需要具备一定的技能和经验,否则可能会出现一些问题和错误。内容延伸:为了部署阿里云SSL证书,可以按照以下步骤进行操作:1.购买证书并上传到阿里云后台;2.下载并安装证书到服务器;3.配置HTTPS访问;4.测试是否成功。此外,可以参考阿里云提供的相关文档和教程,以及在遇到问题时向阿里云技术支持寻求帮助。

本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.

本文链接:https://www.xibujisuan.cn/98792750.html