领事出现时不会注册服务

时间:2016-03-26 03:38:19

标签: consul

在我的配置中,服务定义保存在/etc/consul.d/server

使用以下命令启动Consul:

consul agent -config-dir /etc/consul.d/server

启动领事时,没有注册任何服务。但是,可以使用具有相同定义文件的Web API注册相同的服务。

多个服务定义有什么问题,因为它们没有注册?

1 个答案:

答案 0 :(得分:1)

你有多个文件吗?如果是这样 - >确保它们都以.json结尾。

此外,在加载配置时,Consul以词法顺序从文件和目录加载配置。例如,配置文件basic_config.json将在extra_config.json之前处理。稍后指定的配置将合并到先前指定的配置中。在大多数情况下,"合并"意味着更高版本将覆盖更早版本。在某些情况下,例如事件处理程序,合并会将处理程序附加到现有配置。为文档中的每个选项指定了精确的合并行为。

https://www.consul.io/docs/agent/options.html

否则尝试将所有服务定义放入一个json文件中。

使用配置文件中的services键。 (不是复数S)

$cards = [...];

$ranks = [];

// Count the cards for each rank
foreach ($cards as $card) {
    if (!isset($ranks[$card['Rank']])) {
        $ranks[$card['Rank']] = 0;
    }

    $ranks[$card['Rank']]++;
}

// Sort the cards array
usort($cards, function ($a, $b) use ($ranks) {
    // If the cards count is the same for the rank, compare rank
    if ($ranks[$a['Rank']] == $ranks[$b['Rank']]) {
        return $a['Rank'] - $b['Rank'];
    }

    // Compare the card count for the rank
    return $ranks[$a['Rank']] - $ranks[$b['Rank']];
});