自动化部署流程设计

1.自动化安装

  1. 采购-->验货-->签字,验货单,盖公章。
  2. 资产管理:资产录入-->机房、区域、排、机柜、位置、配置(资产管理,验收单)(自动化获取)
  3. RAID-(验货的时候)RAID。自动化进行配置
  4. CMDB:资产录入-->机房、区域、排、机柜、位置、配置。MAC地址清单。+(后期收集)资产收集、录入,管理和AP,并且展示。
  5. 开机 关机 重启(IPMI)
  6. 详细配置 IP地址 掩码 网关 主机名 DNS (DNS解析)-》开始安装--》使用cobbler
  7. 安装完毕。角色(API Nginx PHP(memcache redis pdo) 启动,代码部署 )
  8. SaltStack-salt-key 执行状态,配置完毕。
  9. 自动进行检查(测试系统)+(etcd)加入集群。
  10. 加入监控

2.自动化部署

2.1部署环境

  1. 开发环境
  2. 测试环境(功能测试、性能测试)
  3. 预生产环境(生产环境的一个不对外的节点)
  4. 生产环境

2.2代码部署的几种情况

git pull s
svn update
rsync 缺点:不能做到及时回滚,适合代码更新非常不频繁的情况
rz sz 缺点:毫无任何优点

2.3实现真正的自动化部署

下文的前提是针对运维来说:代码已经在发布分支,进行发布。
1)获取代码 git pull1)
  a、最新的
  b、commit id 
  c、做好tag
2)编译(可选)build。ant maven
3)配置文件。
  a、分环境的(配置单独进行存放,config.example )
  b、统一的.集群有10个节点。Job节点 crontab.xml
4)打包包名的设计项目名称环境名称版本时间
5)文件分发(SCP salt-cp rsync) 校验 md5
6)将待部署节点,从集群中摘除
7)解压软件包
8)创建软连接
  软连接是关键是关键
    速度快
    准确
    同时存在缺点
    一定要重启php(清除opcache),tomcat等服务 9)同步差异配置文件 10)重启Web服务 11)测试,验证 12)加入集群

2.3自动化部署的优势

1.快速回滚
2.部署统计(使用nginx,禁止访问.svn)
3.配置文件管理

3.回退(回滚)

1、紧急回退
    1)列出版本
    2)回退
2、正常回退
正常回退到上一个版本,此次bug影响面波及不大,不涉及钱财的订单交易,不建议使用紧急回退方式,
建议使用重新发布上一个的方式。

  

4.拓展

    1. 并行:由于上述上线方案默认是串行方式,在这里可以可以分组部署,达到一个并行的效果,同时可以让测试人员分组测试,已满足上线要求。当然,这是node很多的情况,具体情况依照公司情况分析。
    2. 日志记录:日志当然是必要的,这里不再强调。
    3. 部署服务器双机:从携程的事情上,得到教训,双机部署的重要性,如果不是携程的人员及时在一个机器上找回了代码,后果就不堪设想啦。
    4. 回滚的必要性:这里提到了回滚的必要性,这是必须要执行的!!!遇到问题及时回滚,尤其是在业务高峰阶段,谨记不要上线代码!切记不能让开发人员在关键时刻修复bug,这样只会越拖越久,最终挨批的绝逼是运维人员。。。这是运维背黑锅的最大痛点之一,CEO绝不会把责任归属于开发,反而会问运维人员,为什么不执行回滚。
posted @ 2018-01-30 09:50  活的潇洒80  阅读(1297)  评论(0编辑  收藏  举报