3

我想知道是否可以仅使用一台领事服务器来提供领事服务器键值对。

我正在尝试设置 consul 服务器以仅存储我的 rails 应用程序的键值对。我只设置了一个将充当代理的领事服务器。但是在设置 consul 的 web-ui 时遇到问题。

我尝试运行一个物理实例作为 consul 服务器来服务 consul 的 web-ui

consul agent -server -data-dir /tmp/consul -ui-dir /home/ubuntu/dist/

比在公共 ip 上访问 consul web-ui 我运行以下命令

consul members -rpc-addr=X.X.X.X:8400

收到以下错误

Error connecting to Consul agent: dial tcp X.X.X.X:8400: connection refused

其中 XXXX 是实例的私有 ip

4

2 回答 2

2

由于文档的原因,默认情况下代理在 localhost 启动客户端:

客户端地址:这是用于代理客户端接口的地址。这包括 HTTP、DNS 和 RPC 接口的端口。RPC 地址被其他查询和控制正在运行的代理的 consul 命令(例如 consul members、consul join 等)使用。默认情况下,这仅绑定到 localhost。如果更改此地址或端口,则在运行 consul members 等命令时必须指定 -rpc-addr 以指示如何访问代理。其他应用程序也可以使用 RPC 地址和端口来控制 Consul。

所以你需要设置一个标志-client=X.X.X.X来设置远程访问客户端的IP地址。尝试使用以下命令启动服务器:

consul agent -server -bootstrap -data-dir /tmp/consul -ui-dir /home/ubuntu/dist/ -client=X.X.X.X

XXXX 你的 IP 地址在哪里。要检查该选项是否被接受,请检查服务器输出,它包含如下行:

 Client Addr: X.X.X.X(HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400)

要访问 WebUI,请在 Web 浏览器中打开此链接:http://XXXX:8500/ui

至于consul members命令,它只是为您打印此代理的已知成员列表,因此无需执行它,即可使用 WebUI。

于 2015-09-21T13:56:44.103 回答
1

是的,这是可能的,但这不是一个好主意。Consul 经过优化,可在分布式架构中运行,其中对网络分区的容忍度是主要关注点。只有一个节点,使用 Redis 之类的东西会更好。它将更快并扩展到更大的客户群。阅读CAP Theorum

  • Redis 针对一致性和可用性进行了优化。
  • Consul 针对可用性和分区容错进行了优化(如果作为集群运行)。

对于单个节点,没有理由将 Consul 用于 K/V,但如果您还想要它的服务发现、DNS、事件和锁定功能,那么这是有原因的。

于 2015-12-13T00:15:26.833 回答