• fleet中service之间的依赖关系


    最近有人在topcoder上提出使用fleet在集群上部署service时有时候会发现,当启动依赖于整个集群服务的service时,只会检查那个service所在机器的依赖关系,这样就会造成一些问题,比如说用多台服务器提供一个paas的时候,只要其中一个服务器坏掉,那个service就不应该启动。

    正好之前用过fleet,于是就深入研究一番。fleet是一个分布式的服务启动管理系统,可以将某个服务自定义的运行在集群之中。fleet检查service依赖的方法有两种,
    一个是unit file自身的属性 Require=... 和After=...例如:

    [Unit]
    Description=Depend on zrpc
    After=zrpc.service
    Requires=zrpc.service
    

    After的意思是说当几个service同时启动的时候,这个会在after指定的service之后启动。
    Require的意思是说如果发现require的service没有启动,就会先启动require的service。这两个属性经常放在一起使用。

    还有一个就是fleet添加的属性,如:

    [X-Fleet] 
    MachineOf=zrpc.service
    

    意思就说这个service只会在运行了zrpc.service的机器中启动。

    那fleet是怎样解决依赖于整个集群service之间的依赖关系的呢?答案是没有,至少在目前的版本中还没有这个功能。虽然在部署的时候可以通过设置[X-Fleet] Global=true让某个服务在整个集群中启动,但是它还是只会检查所在机器的依赖关系。

    具体的例子:
    假如我们有两个service,一个是depend.service, 一个是zrpc.service,depend.service是依赖于zrpc.service的。
    首先启动zrpc.service.

    然后启动dpend.service

    一切正常,因为每台机器上的依赖关系都满足。但是如果我们关掉其中一个机器的zrpc.service:

    会发现只有一个depend.service停掉了,因为它只检查了所在机器的依赖关系。

  • 相关阅读:
    rk3288的SDK修复cm3218光敏驱动bug
    UVA 12627
    用JDBC编程的执行时错误及其解决大全
    linux中文输入法
    树套树专题——bzoj 3110: [Zjoi2013] K大数查询 & 3236 [Ahoi2013] 作业 题解
    To Noob Json是什么鬼?
    2015.7.3, 杭州……产品级敏捷案例研究
    Java下拼接运行动态SQL语句
    spring mvc+ajax分页
    Linux开发环境搭建与使用——ubuntu更新设置
  • 原文地址:https://www.cnblogs.com/daizuozhuo/p/4480658.html
Copyright © 2020-2023  润新知