zoukankan      html  css  js  c++  java
  • 运维与自动化系列②自动化安装和部署

    自动化安装和部署概述

    一、自动化安装
    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.加入监控

    二、自动化部署

    1、部署环境

    开发环境

    测试环境(功能测试、性能测试)

    预生产环境即灰度环境(生产环境的一个不对外的节点,和生产环境公用一套数据库、redis等资源)

    生产环境

    2、代码部署的几种情况

    第一种 git pull
    svn update

    rsync 缺点:不能做到及时回滚,适合代码更新非常不频繁的情况

    第二种 rz sz 缺点:毫无任何优点


    3、实现真正的自动化部署

    下文的前提是针对运维来说:代码已经在发布分支,进行发布。

    1)获取代码 git pull

    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)加入集群

    3、自动化部署的优势

    1.快速回滚

    2.部署统计(使用nginx,禁止访问.svn)

    3.配置文件管理

    三、回退(回滚)
    1、紧急回退

    1)列出版本

    2)回退

    2、正常回退

    正常回退到上一个版本,此次bug影响面波及不大,不涉及钱财的订单交易,不建议使用紧急回退方式,

    建议使用重新发布上一个的方式。

    四、拓展
    并行:由于上述上线方案默认是串行方式,在这里可以可以分组部署,达到一个并行的效果,同时可以让测试人员分组测试,已满足上线要求。当然,这是node很多的情况,具体情况依照公司情况分析。

    日志记录:日志当然是必要的,这里不再强调。

    部署服务器双机:从携程的事情上,得到教训,双机部署的重要性,如果不是携程的人员及时在一个机器上找回了代码,后果就不堪设想啦。

    回滚的必要性:这里提到了回滚的必要性,这是必须要执行的,遇到问题及时回滚,尤其是在业务高峰阶段,谨记不要上线代码!切记不能让开发人员在关键时刻修复bug,这样只会越拖越久,最终挨批的一定是运维人员。这是运维背黑锅的最大痛点之一,CEO绝不会把责任归属于开发,反而会问运维人员,为什么不执行回滚。

  • 相关阅读:
    模板方法模式
    策略模式
    代理模式
    单例模式
    工厂模式
    服务器负载过高问题分析
    支付宝APP支付开发- IOException : DerInputStream.getLength(): lengthTag=89, too big
    阿里云linux服务器挂载数据盘
    3.3.4.2选择特定行
    3.3.4.1选择所有数据
  • 原文地址:https://www.cnblogs.com/reblue520/p/7110191.html
Copyright © 2011-2022 走看看