运维日常工作流程

运维日常工作流程

十月 11, 2017

主要工作:
【一】线上工作:

  1. 国内海外游戏服务器更新
  2. 监控报警维护处理
  3. 准备游戏新区服
  4. 根据运营需求进行合服

【二】测试环境工作:

  1. 内网AWS部署测试镜像服供QA使用
  2. 内网测试服务器部署
  3. 为开发人员部署其他测试环境

【三】配合运营的工作:

  1. 作弊日志上传内网FTP
  2. 海外反作弊的发送
  3. userinfo的Log上传至FTP
  4. 根据运营要求生成激活码

【四】内网其他工作:

  1. IT相关

####准备游戏新区服流程
#####操作流程CheckList

  • 检查服务器压力负载
  • 检查redis内存大小
  • 检查新服与目标机器IP是否一致
  • 检查fact,dns是否正确
  • 检查etcd是否有改动
  • 检查目标机器端口是否开放
  • 检查当前gamex版本信息
  • 检查是否有热更
  • 检查启动时间

#####部署操作

  • 查看playbook中gamex信息,确定新服目标机器
  • 查看redis信息,确定新服目标空闲DB( redis-cli -h IP -a PASSWD info )
  • 本地修改playbook配置信息,增加新服gamex,etcd和csv的配置信息并提交git
  • jenkins上注册sn码
  • jenkins上注册etcd
  • 确定好目标机器IP,本地注册ansible的fact
  • jenkins上单服部署gamex
  • 部署redisstorage-userinfo
  • 重启GMtools
  • 验证新服是否注册成功,查看新服目标机器配置信息
  • 登陆GMtools检查新服信息

####线上合服流程
#####操作流程CheckList

  • 检查数据库备份是否正常
  • 检查playbook中gamex配置信息是否正确
  • 检查机器fact,dns是否正确
  • 检查redis内存
  • 检查etcd是否有改动
  • 检查当前gamex版本信息

#####合服准备

  • 统计目标区服的详细信息,可在本地执行脚本查看( python get_redis_used.py )
  • 登陆跳板机查看redis db信息,规划合服后的redis db ( python get_redis_used.py )
  • 本地修改目标区服的Etcd配置并删除被合区服的gamex

#####合服操作

  • 停服操作
  • Jenkins上手动执行上传日志到S3的3个job
  • 登陆跳板机,在all_shard_info.txt中写入统计的目标区服信息
  • 在merge_conf.txt中写入规划好的配置信息
  • 执行合服脚本,sh create_merge_conf.sh 创建merge.toml文件,同时再次检查merge.tom的配置是否与规划的一致
  • 记录合服脚本输出并归档到印象笔记
  • jenkins上删除目标区服对应的服务及配置
  • git提交修改代码
  • jenkins注册对应大区Etcd
  • jenkins选择对应大区部署gamex
  • jenkins选择对应大区部署redisstorage-userinfo
  • jenkins上传充值每小时log到S3
  • 登陆跳板机,连接合服完毕的机器,查看配置是否正确
  • 检查合服后的redis db的key值是否正常
  • QA测试完毕没有任何问题后,清理被合服区服的原db

极无双线上部署流程规范

上线CheckList

  • 是否有运维部署操作(服务器磁盘大小升级、服务器cpu升级、服务器内存升级、数据库机器进行升级、其它服务进行升级)
    如果有运维部署操作,需要对应的操作流程
    所有的操作大流程基本上是
    首先和运营确认本次更新时间、运维操作预估时间,两者时间是否有较大的出入
    根据对应的服务器操作流程进行服务器的升级和降级,必须保障数据的完整
    如果对数据库操作,先备份
  • 确认是否有提前停服需求–>【运营、策划】
    如果有停服需要,如何做,检查停服脚本的大区?
    停服之后,如果删除这个脚本或者关闭这个脚本(避免出现忘记修改脚本,导致多次停服)

  • 检查确认是否存在热更–>【服务器】
    如何去掉热更

  • 检查确认是否存在敏感数据操作–>【服务器】
    敏感数据是否测试过;;;;

  • 检查确认更新服务版本信息 –>【邮件】

  • 记录版本信息到印象笔记并截图至服务器群组确认(记录信息命名格式:版本+时间)

  • 确认部署所需版本包已成功传至对应S3

  • 确认维护公告是否生效–>【运维中心群组】

  • 开始更新维护并同步操作信息至群组 –>【运维中心群组】
    更新gamex、auth等操作需要注意的地方,比如选择大区,

  • 检查Ansible部署输出是否有Err日志

  • 检查服务器进程是否Running
    上机器检查、grafana

  • 是否需要重新部署redisstorage-userinfo
    存在数据库操作的情况,都需要重新部署整个大区的redisstorage-userinfo
    gamex增加、减少等

  • 是否需要重启GMtools
    存在数据库操作的情况,都需要重新部署整个大区的redisstorage-userinfo
    gamex增加、减少等

  • 检查GM工具区服显示是否为可进
    顺便检查下 所有的gamex 是否玩家可进

  • 检查监控报警是否正常

  • 检查其它服务是否正常,eg gamex、auth、crossservice、chat等

  • 通知QA进行测试

  • 维护完成后关注监控是否存在异常,服务器看看log

上线故障排除

  • 1.)Jenkins部署未找到版本包
    1
    2
    3
    #排错思路:查看确认内网Jenkins编译名称-->Jenkins部署匹配名称是否一致-->S3对应bucket是否存在该包
    #一般解决:编辑对应jenkins任务配置选项,查看filename变量选项,如下行
    s3://yingzhuo-gamex/gamexback/gmtools'.execute
  • 2.)Jenkins部署变量报错
    1
    2
    #排错思路:是否存在新添加Etcd key值需提交--> 是否注册etcd --> 打包配置模板变量名称与注册etcd变量名称是否一致
    #一般解决:重新注册etcd
  • 3.)公告服务可用性快速验证
    1
    2
    3
    http://$ip:$port/notice/v1/getnotice?gid=$gid&version=$version
    # a. 更改Notice的外网IP及端口,以及gid 和version信息,通过http方法进行访问,正常会返回公告信息
    # b. 需注意现版本对外端口需要开放两个,port1 及 port2