V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
timchou
V2EX  ›  Linux

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

  •  
  •   timchou · 2016-03-15 15:05:18 +08:00 · 3132 次点击
    这是一个创建于 3171 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个上千台机器的集群,需要对其中的机器下发不同任务,前端是 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 条回复    2016-03-16 13:13:43 +08:00
    lecher
        1
    lecher  
       2016-03-15 15:46:37 +08:00 via Android
    如果 worker 的客户端处理写得很健全,用组播机制,或者 pub/sub 的订阅机制,保证所有 worker 都能收到相同的消息,特定消息加上 worker 的机器标识。 worker 执行之前检测是否与本机一致。

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


    @leopku 谢谢!不过这个 beanstalk 貌似是个代码托管以及协作平台?
    taijia
        6
    taijia  
       2016-03-16 10:59:56 +08:00 via Android
    异步 beanstalk ,同步 gearman ,根据场景可以试试
    monnand
        7
    monnand  
       2016-03-16 13:13:43 +08:00 via Android
    这种调度系统很多现成的, Google 的 Kubernetes, Apache 的 mesos , docker 的 swarm
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2846 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:16 · PVG 23:16 · LAX 07:16 · JFK 10:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.