Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
timchou
V2EX  ›  Linux

集群内的任务分发,有什么推荐的方案?

  •  
  •   timchou · Mar 15, 2016 · 3944 views
    This topic created in 3896 days ago, the information mentioned may be changed or developed.
    一个上千台机器的集群,需要对其中的机器下发不同任务,前端是 web 网页端触发,比如 web 端发起对 10.10.10.111 机器上重启 mysqld 进程的操作。

    大致的结构是:

    web
    |
    service
    | | ... |
    server 1 server 2 ... server n

    理想中是:前端 web 端给用户进行操作。中间 service 层提供 http rest 接口, web 端调用 service 层相应的接口, service 层接收操作并且丢到 MQ 里。最下面的 server ,类似一个个 worker ,连接到 service 层的 MQ ,然后 pull 属于自己的 task ,然后进行执行。


    以上这些预期是想用 celery 来做,但是 celery 中的问题是,每个 server(相当于 worker),对于 MQ 来说,都是相同的,但是我们的 worker 是有区别的,每个 task ,只能在指定的 worker 上执行(试想重启服务器这种 task)。

    我查了 celery 的文档,好像有 route 相关的东西,那是不是我每个 worker 要有一个自己的 queue ,那机器数量几千台,就要有几千个 queue 吗?并且我需要动态添加机器,但是 celery 貌似只支持配置文件中配置 queue 。

    所以目前看来 celery 并不能很好的满足。

    特来请教下针对这种场景有什么合适的解决方案吗?谢谢大集。
    7 replies  •  2016-03-16 13:13:43 +08:00
    lecher
    lecher
    Mar 15, 2016 via Android
    1
    如果 worker 的客户端处理写得很健全,用组播机制,或者 pub/sub 的订阅机制,保证所有 worker 都能收到相同的消息,特定消息加上 worker 的机器标识。 worker 执行之前检测是否与本机一致。

    其实底层的 Redis 是支持动态创建消息队列的,实在要开几千个队列也是可以的。
    calease
    calease
    Mar 15, 2016
    2
    配置管理用 saltstack, ansible, puppet, chef...
    defunct9
    defunct9
    Mar 15, 2016
    3
    用 salt 即可,以前在京东管 hadoop ,就是用 salt 。
    leopku
    leopku
    Mar 15, 2016
    4
    推一下 beanstalk ,有 cube 的概念
    timchou
    timchou
    OP
    Mar 16, 2016
    5
    @calease
    @defunct9
    cool ,我来学习下 saltstack ,谢谢了!


    @leopku 谢谢!不过这个 beanstalk 貌似是个代码托管以及协作平台?
    taijia
    taijia
    Mar 16, 2016 via Android
    6
    异步 beanstalk ,同步 gearman ,根据场景可以试试
    monnand
    monnand
    Mar 16, 2016 via Android
    7
    这种调度系统很多现成的, Google 的 Kubernetes, Apache 的 mesos , docker 的 swarm
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1187 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 17:46 · PVG 01:46 · LAX 09:46 · JFK 12:46
    ♥ Do have faith in what you're doing.