当前位置:网站首页 > 云计算与后端部署 > 正文

服务器部署方案(服务器部署方案是什么)



在程序开发和运维过程中,会频繁地部署服务,并且每个服务的正常运行都依赖于其他服务,所以能够在不停服的情况下部署新版本服务来保持应用的整体稳定性可用性十分重要。

不停服部署有3种常见的发布部署模式。

滚动部署:滚动更新是一种逐步部署的方式,它逐步替换集群中的旧版本实例,同时保持应用程序的整体可用性。这个过程可以是自动化的,并且可以根据需要控制更新的速度和批次大小。

灰度发布:灰度发布(也称作金丝雀发布)是指将新版本首先部署给一小部分用户或者流量,然后根据新版本的表现决定是否扩大部署范围。这允许团队在全面发布之前测试新功能或修复的效果。

蓝绿部署:蓝绿部署是一种零停机时间的部署策略,它通过同时维护两个生产环境(一个是当前活跃的“Blue”环境,另一个是待部署的“Green”环境)来实现。在新版本准备就绪时,流量从Blue环境无缝切换到Green环境。如果新版本有问题,可以快速回滚到Blue环境,无需停机。

每种部署方案都有其特定的应用场景和优势,结合我们应用的系统架构、部署运维情况,确定利用nacos open-api可实现服务上下线的特性,编写shell脚本实现蓝绿部署方案.

Nacos是一款支持服务发现、配置管理和服务管理的平台,专为微服务架构设计,提供动态配置更新、健康检查、服务注册与发现等核心能力。

Nacos的服务管理有上下线服务的功能,且有open-api可直接调用触发。

Nacos api官方地址: 

注意: postman调用时, 不可带http相关头参数, 只保留Host即可。

Nacos的心跳机制

心跳机制可表示当前微服务模块运行状态是否正常, 还有和当前微服务模块保持沟通和交换信息。

默认情况下,服务启动开始每隔5秒会想Nacos发送一个"心跳包",这个心跳包中包含了当前服务的基本信息。

Nacos接收到这个心跳包,首先检查当前服务在不在注册列表中,如果不在按新服务的业务进行注册,如果在,表示当前这个服务是健康状态。

如果一个服务连续3次心跳(默认15秒)没有和Nacos进行信息的交互,就会将当前服务标记为不健康的状态。

如果一个服务连续6此心跳(默认30秒)没有和Nacos进行信息的交互,Nacos会将这个服务从注册列表中剔除。

这些时间可以通过配置修改,服务上线时间, 不能小于5。

nginx超时时间

nginx设置超时时间为65, 故下线时间需设置的比nginx长一些即可

服务启动时间

一般启动时间20秒左右。

异常情况: 启动时间超过了80秒,导致服务上线失败, 后续服务提前kill了

总结:

1. 下线的等待时间 不能小于nginx超时时间. 下线时间到,才可kill;

2. 上线前等待时间 不能小于服务启动时间 + nacos的注册发现时间;

3. 上线后等待时间 不能小于nacos同步时间。

nacos-test(Blue环境): 主启动目录, 日常运行

nacos-test-duplicate(Green环境): 备份启动目录, 重启时运行

nacos-test-jar: 新升级的jar包暂存区. (解决jar包覆盖, 导致classNotFound错误)

脚本结构:

一个服务的重启脚本, 所有服务都调用此脚本

入参: jar包名, 端口号

重启脚本: 各个服务调用的入口

传入参数: jar名, serviceName, dev环境端口, DUPLICATE端口。

整个重启过程不到6分钟. 可根据实际情况,调整等待时间(时间设置可参考: 影响时间的因素)。

# 下线等待时间

WAIT_TIME_OFF=70

# 上线前 等待时间

WAIT_TIME_ON_BEFORE=36

# 上线后 等待时间

WAIT_TIME_ON_AFTER=36

具体服务启动脚本: run-ssp-cloud-base.sh

以base服务为例:

格式如下: 就是调用restart-double.sh传入所需参数及设置日志即可

sh restart-double.sh ssp-cloud-base base-application 16001 16101 >> logs-console/start_sh_log/run-ssp-cloud-base.log 2>&1 &

-- 解决办法: 单独目录存放要升级的jar, 不要覆盖正在运行的jar.

2.Jar包保留上一次发版做备份, 失败时,可随时回滚上一版本.

-- cp -f /project/${JAR_NAME}.jar /project/jar_bak/${JAR_NAME}.jar

3.服务启动时间变长,要80秒左右

-- 延长等待时间,

-- 加shell循环等待,判断服务是否可用.

4.频繁重启,导致上下线混乱的问题,

-- 加文件标记重启状态, 循环等待(shell脚本如下:).

重启完成后解锁

Nginx作为负载均衡器, 也可实现蓝绿部署.

可行方案: nginx配置文件shell脚本替换指定字符..

作者:刘金龙| 资深后端开发工程师


到此这篇服务器部署方案(服务器部署方案是什么)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 查看redis端口(查看redis的ip)2025-08-23 07:18:04
  • 手机软件后缀怎么改(手机软件后缀是apk ,安装不了,怎么修改?)2025-08-23 07:18:04
  • redis端口被占用(redis-cli 端口)2025-08-23 07:18:04
  • 操作系统教程课后题答案(操作系统教程第5版课后答案pdf)2025-08-23 07:18:04
  • 服务器的部署(服务器的部署是什么)2025-08-23 07:18:04
  • 电视软件后缀名是什么(电视安装的软件后缀是apk吗)2025-08-23 07:18:04
  • 如何在服务器上部署springboot项目(springboot项目怎么部署到云服务器上)2025-08-23 07:18:04
  • 前端工程化工具和框架(前端工程化的好处)2025-08-23 07:18:04
  • 电视软件后缀.apk怎么删(电视安装的软件后缀是apk吗)2025-08-23 07:18:04
  • 华为模拟器怎么开启端口(华为模拟器怎么开启端口服务)2025-08-23 07:18:04
  • 全屏图片