supervisor分组

1.首先说说为什么要使用分组

需求:假如公司目前有一台配置很高的服务器用来部署项目,项目为了方便管理,使用supervisor进程管理工具,目前该服务器上面已经部署了一个项目。此时研发团队又开发了一个项目,需要部署上线,由于该服务器性能很好,老板想要节约成本,预将这个项目也部署在该服务器上,同样使用supervisor进行管理,那么此时就会出现一下情况:

  1. 如果仅有一个项目时,启动、停止、重启项目只需要使用以下命令

    supervisorctl start all
    supervisorctl restart all
    supervisorctl stop all
    
  2. 现在有两个项目了,则不能在使用all进行操做了,否则启动或停止时,两个项目则同时被操做,此时就可以使用分组来进行管理,将两个项目分别加入不同的组进行管理

    项目1分组组名为project1,它下面有很多服务,比如uwsgi、celery、channels…,服务名暂且和与服务对应分别命名为:uwsgi、celery_worker、celery_beat、channels

    项目2分组组名为project2,它下面也有很多服务,比如uwsgi、celery、channels…,服务名暂且和与服务对应分别命名为:uwsgi、celery_worker、celery_beat

    1. 现在需要停止项目1,但是不能影响项目2
      supervisorctl stop project1:
      这条命令会将项目1下的所有服务都停止(注意后面的冒号)
    1. 如果不使用分组的情况下(两个或多个项目的每个服务名称都不能重名,否则supervisor会出现异常),要停止一个项目且不影响另一个项目,必须使用以下命令
      supervisorctl stop celery_worker uwsgi celery_beat ...
      你必须手写所有要停止服务的名称,必须保证没有写错,如果写错一个就要重新来过,是不是很麻烦
    1. 当然有小伙伴需求是这样,使用了分组,但我想启动单个服务,是不是分组后每次只能重启该分组下的所有服务,当然不是,使用了分组后重启组内单个服务时可以使用以下命令,假如重启项目1下的channels服务
      supervisorctl restart project1:channels
2.说了分组的优点,接下来说说怎么对supervisor进行分组
  1. supervisor配置文件路径/etc/supervisord.d/下,关于supervisor基础知识,在之前的文章中已经讲过,此处不再赘述,将会使得该篇文章更加易读。

  2. 如果不使用分组时我们项目的多个服务的配置文件可能如下,每个服务单独写一个配置文件
    在这里插入图片描述

  3. 也可能是所有服务写在一个配置文件
    在这里插入图片描述

  4. 分组的使用,为了方便,我们将单个项目的所有服务写在一个文件中
    在这里插入图片描述

  5. 分组应该也可以写在单个配置文件中,假如项目下每个服务都有自己的配置文件,如第二条截图,给每个服务首行都添加一个组[group:组名],这块的组名都写成一致,此时应该也会被分配到一个组,此处没尝试,只是猜测,理论上应该没问题,你们有兴趣可以验证以下,到时候可以留言告知

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值