是否可以只有一个consul服务器为rails app提供密钥对?

时间:2015-09-19 11:09:41

标签: ruby-on-rails amazon-web-services consul

我想知道是否可以只用一个consul服务器来服务器consul服务器键值对。

我正在尝试设置consul服务器,仅为我的rails应用程序存储键值对。我只设置了一个将作为代理人的领事服务器。但是在设置领事馆的网络时遇到了问题。

我尝试运行一个物理实例作为领事服务器来服务领事的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

其中X.X.X.X是实例的私有IP

2 个答案:

答案 0 :(得分:1)

默认情况下,代理程序在localhost启动客户端,原因是文档:

  

Client Addr:这是用于代理的客户端接口的地址。这包括HTTP,DNS和RPC接口的端口。 RPC地址由查询和控制正在运行的代理的其他consul命令(例如,consul成员,consul join等)使用。默认情况下,它仅绑定到localhost。如果更改此地址或端口,则只要运行consul成员等命令以指示如何访问代理,就必须指定-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

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

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

要访问WebUI,请在您的网络浏览器中打开以下链接:http://X.X.X.X:8500/ui

至于consul members命令,它只是打印出这个代理的已知成员列表,因此不需要执行它来使用WebUI。

答案 1 :(得分:0)

是的,这是可能的,但这不是一个好主意。 Consul经过优化,可在分布式架构中运行,其中对网络分区的容忍度是主要考虑因素。只有一个节点,你可以用Redis更好地切断它。它将更快,并扩展到更大的客户端集。阅读CAP Theorum

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

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