Skip to content

Instantly share code, notes, and snippets.

@skyjia
Created July 21, 2021 06:20
Show Gist options
  • Save skyjia/c8682aabec9d387990b216460693afe7 to your computer and use it in GitHub Desktop.
Save skyjia/c8682aabec9d387990b216460693afe7 to your computer and use it in GitHub Desktop.
部署操作手册示例范本

【闲情偶寄】系统部署操作手册

文档负责人:李渔

最后更新时间:2021年7月1日

目录

[TOC]

1 操作前必读

文档编写人员须知:

本小节应当描述操作前应当了解的所有信息。

背景知识要求:

  • 了解 Linux Terminal 工具的使用
  • 了解 SSH 命令的使用
  • 理解 mysql 命令行工具的使用
  • ……

访问权限要求:

  1. 拥有SSH远程登录堡垒机操作的权限;
  2. 拥有访问 foo 数据库进行 DDL 与 DQL 操作的相关权限;
  3. ……

2 操作计划

2.1 操作范围

文档编写人员须知:

本小节应当描述操作适用的范围。

本手册适用于**【闲情偶寄】系统v1版**相关部署发布。

2.2 计划操作日期与时间

  • **计划开始时间:**2021年7月10日23点
  • **计划结束时间:**2021年7月11日1点30分
  • **持续时长:**2.5小时

2.3 人员计划

文档编写人员须知:

本小节应当描述操作人员计划安排以及责任分配。

  • **主操作员:**黄天美
  • **操作审核人员:**李渔
  • 待命应急人员: 曹操、夏侯渊、典韦

2.4 目标操作环境

文档编写人员须知:

本小节应当描述当前操作涉及的系统环境和关键部署部件。

【闲情偶寄】系统线上正式版本环境:

  • 【闲情偶寄】系统应用服务器集群
  • 【闲情偶寄】数据库服务集群
  • API 网关服务

2.2 总体操作步骤

文档编写人员须知:

本小节简述本次部署操作的总体步骤,具体步骤在后续章节中展开。

本次系统采用停服更新策略进行发布,具体步骤如下:

  1. 发布公告,开始部署
  2. 停止线上服务
  3. 更新【闲情偶寄】数据库服务集群
  4. 验证【闲情偶寄】数据库更新
  5. 更新【闲情偶寄】系统应用服务器集群
  6. 验证【闲情偶寄】系统应用
  7. 结束部署,发布公告完成部署

说明:除了停服更新,相应的还可以使用滚动更新策略

3 部署准备工作

文档编写人员须知:

本章描述操作前所需要做的全部准备工作,包括但不限于构建、打包、脚本准备、数据准备、配置文件准备等。

3.1 构建与打包

文档编写人员须知:

本小节需要展开描述:

  • 需要构建(Build)哪些产出物?
  • 各个产出物从哪个代码源进行构建(Build)?
  • 各个产出物从哪个代码位置(branch/tag/commit)进行构建?
  • 执行构建(Build)所需的环境、工具、前提条件是什么?
  • 执行构建(Build)在哪里操作?
  • 执行构建(Build)的操作步骤是什么?

本次部署涉及以下3个打包部件:

  1. 【闲情偶寄】服务端应用程序v1.2.3
  2. 【闲情偶寄】基础库DLL v2.0.1
  3. 日志采集组件DLL v3.1.0

以下操作均在公司指定的构建服务器上(IP: 10.5.1.101)执行操作

3.1.1 打包【闲情偶寄】服务端应用程序

# 1 - 更新代码
cd $HOME/src/xian_qing_ou_ji
git checkout master
git pull
git checkout v1.2.3

# 2 - 执行构建(Build)
./build.sh

# 3 - 确认构建成功
# 检查Build输出内容是否符合预期
ls $HOME/src/xian_qing_ou_ji/out

3.1.2 打包【闲情偶寄】基础库DLL

TBD.

3.1.3 打包日志采集组件DLL

TBD.

3.2 准备数据库更新脚本文件

文档编写人员须知:

本小节描述数据库更新所需的脚本操作文件包括哪些,以及脚本的具体内容。如果脚本内容过长过多,可以放置于独立的文件之中,本文描述文件在哪里,获取方式是什么。

脚本文件通常主要包括以下两类,应当根据实际情况描述本次发布所涉及的部分:

  • DDL更新脚本文件:更新数据库结构定义的脚本内容。
  • 数据初始化/更新脚本文件:执行数据初始化或者更新存量数据的脚本内容。

3.2.1 DDL更新

数据库更新 DDL 脚本内容如下:

USE xian_qing_ou_ji;

-- 其它 DDL 操作语句

3.2.2 数据初始化与更新

数据初始化/更新脚本内容如下:

USE xian_qing_ou_ji;

-- 其它数据初始化语句

4 部署操作

文档编写人员须知:

本章详细描述部署操作的步骤,描述步骤要注意一下几点:

  1. 明确告知操作人员,部署过程涉及到的工具会用到哪些;

  2. 如果使用远程连接方式,则描述如何进行远程连接,包括远程连接应当使用什么账号、密码、秘钥或者授权等信息;

  3. 操作步骤描述必须明确说明当前操作步骤是在哪个位置进行操作的,例如哪个具体的服务器、哪个管理工具的操作界面等等;

  4. 操作步骤必须是傻瓜式的,任何操作人员按照操作步骤能执行完操作过程;

  5. 坚决不应当假设操作员了解一切可能的背景信息,这些背景信息都需要在文档步骤中描述出来。通常编写文档会忽略的信息可能有:

    • 配置文件的位置
    • 部署的目标文件夹在哪里
    • 配置文件的内容含义
    • 应当使用特权操作(例如 sudo 特权、Windows管理员特权)
    • 操作员以获得操作步骤所需的授权
    • ……

    重要的事情再说一遍:不要假设操作人员对以上内容已知情。

操作员须知:

  1. 以下操作按照本文档说明要求的步骤严格执行,不可跳跃步骤执行;
  2. 不可执行文档定义之外的对系统配置管理产生变更的任何操作或指令;
  3. 遇到突发情况需报告有关人员后再启动处突方案。

4.1 发布公告,开始部署

**公告发布人:**黄天美

**公告发布渠道:**钉钉、邮件

公告内如如下:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac malesuada libero, eget porttitor elit. Curabitur vulputate, purus sed feugiat ultricies, arcu lectus ullamcorper lacus, ut faucibus lectus ex ac ex. Maecenas ullamcorper lectus lacus, dignissim commodo est vulputate eu. Nulla facilisi. Vestibulum a ligula in massa imperdiet volutpat in et nisl. In lobortis est in malesuada imperdiet. Cras et libero pellentesque, ultricies nisi et, imperdiet neque. Ut ut eros felis. Fusce in gravida purus, sollicitudin efficitur mauris. Donec eu tellus ac lectus laoreet ullamcorper eget a sapien. Nullam vestibulum, diam et gravida accumsan, purus diam iaculis ipsum, et volutpat mauris magna a nunc. Aenean egestas cursus augue nec ornare. Sed quis urna in dui tincidunt tincidunt quis at nisi.

Morbi mattis risus et sapien ultrices tristique. Nulla ut porttitor tortor. Morbi eget nunc a tortor finibus blandit vitae vel lectus. Suspendisse eros elit, vehicula id ultricies ac, consequat quis turpis. Vivamus malesuada sed arcu vel iaculis. Praesent quis ornare mauris. Nulla venenatis gravida commodo. Phasellus vestibulum auctor ante, ut blandit ligula commodo dapibus.

4.2 停止线上服务

目的:停止线上服务是为了防止新进数据或业务未能被完成处理。

步骤1:远程登录堡垒机

# !!当前是本地计算机!!

# 连接跳板机
ssh -i "xxx.pem" libai@foo.bar.com

注意事项:

  • 操作员需已获得秘钥文件 xxx.pem

步骤2:关闭应用集群中的各个应用服务器节点中的服务

本应用集群包括4各节点服务器,地址分别是:

  • 10.1.0.200
  • 10.1.0.201
  • 10.1.1.200
  • 10.1.1.202

通过以下步骤依此登录操作各个节点服务器。

步骤2.1: 从堡垒机登录应用集群中的各个应用服务器节点

# !!当前是堡垒机!!

# 依此替换本环境变量的值,变换目标节点服务器
NODE_ADDR=10.1.0.200
ssh -i "app-node.pem" ubuntu@${NODE_ADDR}

步骤2.2: 关闭 apache 服务

# !!当前是应用服务器节点!!

sudo systemctl stop httpd 

重复[步骤2.1 ~ 2.2],完成对各个节点的操作

4.3 更新【闲情偶寄】数据库服务集群

步骤1:从堡垒机远程连接 MySQL 数据库服务

mysql -h db.internal.bar.com -u dbadmin -p

步骤2: 执行数据更新脚本

mysql> USE xian_qing_ou_ji;
mysql> {其它DDL操作语句}

4.4 验证【闲情偶寄】数据库更新

TBD。编写具体验证步骤:

  • 验证用到哪个工具?

  • 验证操作步骤是什么?

  • ……

4.5 更新【闲情偶寄】系统应用服务器集群

TBD。更新应用服务器操作步骤:

  • 如何连接目标服务器?
  • 操作步骤是什么?
  • 文件位置在哪里?
  • 是否需要配置文件?配置文件做哪些更新?
  • ……

4.6 验证【闲情偶寄】系统应用

TBD。编写具体验证步骤:

  • 验证需要用到哪个工具?
  • 验证操作步骤是什么?类似测试用例方式。
  • ……

4.7 结束部署,发布公告完成部署

TBD。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment