zoukankan      html  css  js  c++  java
  • mesos 0.25.0/0.28.0 集群部署升级指南

    Mesos升级流程:

    上线步骤描述:

    1. 对所有的 slave 先进行分批升级(先 1 个进行初试牛刀,等所有 mesos-deploy 流程都走通了后,可以再继续升级 1 台进行测试)。
    2. 观察已经升级的机器,确定无误后,继续分批将所有的 slave 升级完成。
    3. 升级 Master (A/B/C), 先将非 master leader 的 B 与 C 一台一台的升级,等 zookeeper 自动切换 master leader 后,观察一断时间,如果没问题,将 old master leader (A) 升级。
    4. 此时,所有机器升级完毕,将 marathon, chronos 和 storm 等frameworks 继续进行兼容性版本升级(这些框架的升级需要相应的 developer 配合完成),直到整个集群工作正常。

    上线步骤详情:

    Step1. PING 所有机器,提前检查是否有未加 Key 的机器

    ansible all -i hosts/xxx -m ping
    

    Step2: 升级 slave

    对所有的 slave 先进行分批升级,比如:先 1 个进行初试牛刀。 观察升级的机器,无误后,再升级 1 台测试,确保成功后,则继续分批有间隔地将所有的 slave 升级完

    • 确保在运行systemctl restart mesos-slave时都能正常重启,所以先执行 unguard 操作。

      $ ansible-playbook --limit=slaves -i hosts/xxx mesos.yaml --tags unguard
    • 在执行升级前先停止 mesos-slave 服务。

      $ ansible slaves -i hosts/xxx -m shell -a "systemctl stop mesos-slave"
    • 先在升级前确定 mesos repo 是否有更新? 如有,则需要执行 updaterepo 操作进行更新。

      $ ansible-playbook --limit=slaves -i hosts/xxx mesos.yaml --tags updaterepo
    • 为删除的彻底和防止中途出错,在 uninstall mesos-slave 之前修改 mesos_version 的版本为当前正在使用的版本即老版本。

      $ ansible-playbook --limit=slaves -i hosts/xxx mesos.yaml --tags uninstall_mesos
    • 在 install mesos-slave 之前修改 mesos_version 的版本为需要部署的新版本

      $ ansible-playbook --limit=slaves -i hosts/xxx mesos.yaml --tags mesos
    • 为防止 mesos-slave 服务不能正常启动,需要先执行如下的删除操作

      rm -rf /data/mesos/meta/slaves/latest
    • 由于执行了上述删除操作,可能会遇到之前容器一直在跑但并未 kill 的情况,则需要在重启 mesos-slave 之前,重启 docker 服务。

      $ ansible slaves -i hosts/xxx -m shell -a "systemctl restart docker"  
    • 重启 mesos-slave 服务,此时 slave 升级完毕,可以到 mesos GUI 页面查看升级情况。

      $ ansible slaves -i hosts/xxx -m shell -a "systemctl start mesos-slave"
    • 等一小段时间,待所有 slave 运行稳定后,执行 guard 操作。

      $ ansible-playbook --limit=slaves -i hosts/xxx mesos.yaml --tags guard

    注意:重复步骤 3 ,完成所有 slave 升级。


    Step3: 升级 master

    为保证 zookeeper 正常服务的 quota,目前我们设置的 3 ,即 3 台互备主从。由于安装完后 mesos-master 服务会自动启动,所以一个一个的进行升级以保证 mesos-master 服务不能断

    • 停止 1 台非 leader mesos-master 服务

      $ ansible masters -i hosts/xxx -m shell -a "systemctl stop mesos-master"
    • 先在升级前确定 mesos repo 是否有更新? 如有,则需要执行 updaterepo 操作进行更新

      $ ansible-playbook --limit=masters -i hosts/xxx mesos.yaml --tags updaterepo 
    • 为删除的彻底和防止中途出错,在 uninstall mesos-master 之前修改 mesos_version 的版本为当前正在使用的版本即老版本。

      $ ansible-playbook --limit=masters -i hosts/xxx mesos.yaml --tags uninstall_mesos
    • 在 install mesos-master 之前修改 mesos_version 的版本为需要部署的新版本

      $ ansible-playbook --limit=masters -i hosts/xxx mesos.yaml --tags mesos

    注意:重复步骤 3 ,将前两个非 leader 的 mesos master 升级完毕, 并将当前 leader 放在最后升级。

    Step4: 收尾工作

    至此,所有的机器都原则上都升级完成了。检查一下 Mesos GUI 页面上显示的 slave 的数目是不是与 mesos-deploy 脚本中的number_slaves 的值一致。如果不一致,可以找到相应的机器并登录到上面查看目录 /data/mesos/log/ 下的相应的日志文件,然后解决。

  • 相关阅读:
    Flask学习目录
    Android笔记
    PyQt学习目录
    学习目录
    Python学习目录一
    sqlserver STUFF & STR
    PowerShell+Jenkins,实现项目的自动化部署
    DotNet Core Backend development
    .Net Core 类注入单元测试
    团队项目之团队展示&选题
  • 原文地址:https://www.cnblogs.com/qianggezhishen/p/7349346.html
Copyright © 2011-2022 走看看