无法使用多区域设置引导游牧集群“错误引导:意外响应代码:500无区域路径”

问题描述

我正在尝试在多区域和多数据中心集群中设置 Nomad ACL, 在服务器节中,我在所有服务器节点上添加了以下内容

server {
  enabled = true
  bootstrap_expect = 2
  encrypt = "XXX-same-on-all-servers-XXX"
  authoritative_region = "HOME-DC"
  server_join {
    retry_join = ["server1","server2","server3"]
  }
}
acl {
  enabled = true
}

在我重新启动所有服务器以跟踪日志后,这就是我得到的

2021-02-01T11:38:04.156Z [WARN]  nomad.rpc: no path found to region: region=HOME-DC
2021-02-01T11:38:04.157Z [ERROR] nomad: Failed to fetch namespaces from authoritative region: error="No path to region"

如果我跑,这是我得到的

nomad acl bootstrap -address=$NOMAD_ADDR
Error bootstrapping: Unexpected response code: 500 (No path to region)

在文档上,我看到它要求您设置 acl 节的 replication_token 值,但我不清楚该怎么做,它是否必须像加密令牌一样以某种方式生成?如果是,那么如何? Reference

解决方法

  • 权威区域:authoritative_region 不是必需的,应该删除。删除后,运行 nomad acl bootstrap 会成功。

  • 非权威区域:

    • authoritative_region 始终是必需的。
    • replication_token 也是必需的,replication_token 可以是您的权威的引导令牌,或者创建另一个令牌以减少功能。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...