我正在运行一个Spring启动应用程序,该应用程序使用Spring数据连接到AWS上的Couchbase远程实例 .
我的Couchbase配置类如下所示:
@Value(value = "${couchbase-url}")
private String couchBaseUrl;
@Value("${couchbase-bucket}")
private String couchbaseBucketName;
@Value("${couchbase-password}")
private String couchbasePassword;
@Override
protected List<String> getBootstrapHosts() {
return Arrays.asList(couchBaseUrl);
}
@Override
protected String getBucketName() {
return couchbaseBucketName;
}
@Override
protected String getBucketPassword() {
return couchbasePassword;
}
我的param值看起来像这样:
couchbase-url=34.168.163.36:8091
couchbase-bucket=conversion-data
couchbase-password=secretpassword
针对本地实例运行此操作时,一切都按预期工作 . 当我对远程实例运行时,我收到以下错误:
com.couchbase.client.deps.io.netty.channel.ConnectTimeoutException: connection timed out: /10.0.10.140:8093
其中10.0.10.140是私有IP地址 . 所以初始连接似乎没问题,但之后它将我的服务重定向到私有IP地址 .
任何人都可以解释我如何让Couchbase响应公共IP地址?
1 回答
将服务器添加到couchbase群集时,它会询问服务器的IP地址或主机名,只需输入服务器的
public ip
即可 .您用于在群集中配置服务器的ip地址是couchbase为任何操作返回给客户端的内容(例如添加键值)
参考
https://developer.couchbase.com/documentation/server/5.0/install/init-setup.html
Couchbase Connection - External ip instead of internal
但作为一般做法,不建议通过
public ip
进行沟通如果您使用的是AWS,则可以在专用VPC中部署couchbase群集,并在另一个VPC中部署spring应用程序 . 然后,您可以使用VPC Peering在这两个VPC之间 Build 内部网络连接 .
上述设置启动并运行后,您可以使用
private ip
与couchbase群集中的服务器进行通信