0

我在两个节点(Windows 2008 R2)上设置了 Couchbase 1.8 集群。

1)打开两台服务器上的所有必要端口,如下所述:http: //www.couchbase.com/docs/couchbase-manual-2.0/couchbase-network-ports.html

2) 我做了一个简单的设置,最初在一个新集群上创建节点 A (172.30.75.53)。将 IPAddress 更改为服务器的静态 IPAddress,如下所述:http: //www.couchbase.com/docs/couchbase-manual-1.8/couchbase-bestpractice-cloud-ip.html 使用默认的 Couchbase 存储桶创建。

3) 然后在节点 B (172.30.75.55) 上安装 Couchbase。将 IPAddress 更改为服务器的静态 IPAddress。

4) 回到节点 A,我将节点 B 添加到集群中。

5) 在 Couchbase Web 控制台中进行了初始重新平衡。

6) 在 Couchbase 控制台中,我可以看到两个节点启动并运行。

我创建了一个简单的应用程序 C# 示例应用程序进行测试,如下所示:

在指向节点 A 的配置文件中

var client = new CouchbaseClient();
var setResult = client.ExecuteStore(StoreMode.Set, "someKey", "someData", new    TimeSpan(7, 0, 0, 0)); 
var resultGet = client.ExecuteGet<string>("someKey");

然后可以毫无问题地进行获取和设置(如预期的那样)。

然后在我的配置文件中,更改为指向节点 B。

然后可以执行如下获取(如预期): var resultGet = client.ExecuteGet("someKey");

在节点 A 上,通过运行以下命令关闭 CouchBase 服务:service_stop.bat

由于我的测试应用程序仍然指向节点 B,仍然可以获取和设置(如预期的那样)。

在节点 A 上,通过运行:service_start.bat 启动 Couchbase 服务 在节点 B 上,通过运行:service_stop.bat 关闭 CouchBase 服务

然后在我的配置文件中,更改为指向节点 A。

现在,当连接到节点 A 时尝试执行如下获取和设置时: var setResult = client.ExecuteStore(StoreMode.Set, "someKey", "someData", new TimeSpan(7, 0, 0, 0)); var resultGet = client.ExecuteGet("someKey");

得到如下错误:

- 存储操作失败,详情参见 InnerResult 或 StatusCode” - 执行操作失败 -StatusCode : 0

失败。有关详细信息,请参阅 InnerException 或 StatusCode" StatusCode : Null

因此得出结论:

a) 可以在节点 A 和节点 B 正在运行时执行 Get 和 Set。(客户端连接到节点 A 或节点 B)

b) 可以在节点 A 停止且节点 B 运行的情况下执行获取和设置。(客户端连接到节点 B)

c) 无法在节点 A 运行且节点 B 停止的情况下执行获取和设置。(客户端连接到节点 A)

有任何想法吗?

谢谢,

马特

4

1 回答 1

0

您似乎正在为您的测试在单个键上执行单个获取/设置。如果是这种情况,那么正在发生的事情是该密钥位于节点 B 上,因此当您停止节点 B 时,找不到该密钥。使用 Couchbase,当节点关闭时,将无法访问该节点的数据,直到您对该节点进行故障转移。如果您在生产环境中运行,如果节点 B 出现故障,您会做的就是让该节点故障,然后一旦您解决了该节点遇到的任何问题,您就可以将其添加回来并重新平衡。

于 2012-11-10T19:39:27.540 回答