当前位置: 首页 > 面试题库 >

Couchbase连接-外部ip而非内部ip

邓威
2023-03-14
问题内容

在同一个数据中心中,我有一个应用程序服务器(客户端),该服务器连接到包含3个节点的沙发基础集群。

我希望客户端通过内部IP而不是外部IP连接以优化性能。假设这些是我的IP:

  • node1InternalIP / node1ExternalIP
  • node2InternalIP / node2ExternalIP
  • node3InternalIP / node3ExternalIP

当创建我的couchbase客户端(java代码)时,我提供了内部IP,但是当建立连接时,我得到了以下日志:

2014-07-28 12:33:21.030 INFO net.spy.memcached.auth.AuthThread:  Authenticated to /node1InternalIP :11210
2014-07-28 12:33:21.142 INFO net.spy.memcached.auth.AuthThread:  Authenticated to /node2InternalIP :11210
2014-07-28 12:33:21.253 INFO net.spy.memcached.auth.AuthThread:  Authenticated to /node3InternalIP :11210
2014-07-28 12:33:21.374 INFO com.couchbase.client.vbucket.provider.BucketConfigurationProvider:  Carrier config not available, bootstrapped through HTTP.
2014-07-28 12:33:21.544 INFO com.couchbase.client.CouchbaseConnection:  Added {QA sa=cache2.lac.company.info/node1ExternalIP:11210, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2014-07-28 12:33:21.545 INFO com.couchbase.client.CouchbaseConnection:  Added {QA sa=cache3.lac.company.info/node2ExternalIP:11210, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2014-07-28 12:33:21.545 INFO com.couchbase.client.CouchbaseConnection:  Added {QA sa=cache4.lac.company.info/node3ExternalIP:11210, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue

因此看来,身份验证是针对内部IP进行的,但连接本身是通过外部IP进行的,这与我有关。

另外,偶尔我会收到CheckedOperationTimeoutException:

net.spy.memcached.internal.CheckedOperationTimeoutException: Timed out waiting for operation - failing node: cache2.lac.company.info/node1ExternalIP:11210

异常表明客户端正在从外部ip连接超时。

如何确定我的连接将使用内部IP?


问题答案:

Couchbase使用单个地址(IP或主机名)来标识每个群集节点。然后在引导时将这些地址发送给客户端,以便它们可以连接到群集中的所有节点。您看到的是由于您最初使用外部IP地址作为其名称来设置群集节点,而这是在客户端连接时发送给客户端的内容。

要实现您想要的功能,您将需要使用主机名(管理指南)而不是IP地址来标识每个节点,然后将客户端的DNS配置为使用 外部
IP地址,但将节点的DNS(或/etc/hosts)配置为使用 内部 IP。



 类似资料:
  • 我已经使用默认参数在谷歌云上创建了一个现成的MongoDB服务器。他们之间一切正常(有沟通,我可以添加DBs和集合)。但是,我无法在任何外部机器上连接到MongoDB。我在GCP中创建了防火墙规则,允许端口27017上的所有连接(“0.0.0.0./0”)。 我正在运行命令: 我在他们两个身上都犯了同样的错误。我不知道如何解决这个问题。 编辑: 以下是我的防火墙设置。

  • 我对Kubernetes和Helm图表是新的,我想在这里找到我的问题的答案。 我一直认为是向外部公开集群的端口,而port是在内部服务上公开的端口,它路由到pods上的。我从这里得到了这个理解。 但是,我似乎可以打开或,但不能打开或。我希望能够通过访问104.198.205.71,而不是通过端口。我的理解不正确吗?

  • 我正在尝试建立一个聊天程序。我写了代码,一切都工作了,当我使用我的电脑和使用127.0.0.1连接时,仍然工作得很好。我还成功地在我的笔记本电脑和运行在同一路由器上的电脑之间成功连接。(我使用内部IP地址做到这一点,10.0.0.3)。 现在我正在尝试在我的路由器和其他路由器之间建立连接。为此,我试图连接到外部IP地址。我通过路由器做端口转发部分,我还做了一个静态IP。当我运行代码时,我总是得到一

  • 问题内容: 在下面显示的代码片段中,内部类本身继承了外部类。 方法中的唯一语句(最后一个片段)将值分配给类的私有字段,然后调用该方法。 该方法会导致另一个字符串- 要设置的私人领域中的类调用之前的方法延长。 因此,方法中的以下两个语句: 应该显示 另一个价值 另一个价值 但是他们显示 初始值 初始值 为什么会这样? 问题答案: 方法和领域都是。因此,其他子类(包括子类)均无法访问它们。它们不是继承

  • 问题内容: 好的,这是。我有两个表:product和product_sizes 所以基本上我的产品表具有id(主键),名称(产品名称)和size_id(product_sizes中的外键) 我的product_sizes表具有预定值: 在这里,我有一个有效的代码来显示产品表(使用while代码以html格式): 我的问题是我想显示(用html表示)尺寸名称而不是其size_id,类似于以下示例:

  • 问题内容: 我们有许多应用程序使用一个位于VPC外部(经典实例)的ElasticCache实例(Redis)。一些应用程序位于VPC中,而某些应用程序位于VPC外部(经典实例)。我们如何将所有应用程序连接到缓存? 我们将VPC外部的应用程序连接到缓存没有问题,因为缓存也位于VPC外部。VPC内部的应用程序数量较少,无法连接到缓存。 谢谢。 问题答案: 无法从VPC实例直接访问经典群集。解决方法是在