我们的 QA 环境中有 2 个 Web 服务器和 1 个应用服务器。它们每个都托管一个 Membase 服务。为简单起见,我们将 Web 服务器称为:web01 和 web02。两者都运行 IIS。
要访问 Membase,我们使用 .Net 客户端:http: //memcached.enyim.com/
我们在这里遇到的问题是 web01 可以随时访问 Membase、设置和获取值而没有任何问题。但是 web02 似乎无法从我们的 Web 应用程序访问 Membase。
我们编写了一个测试控制台应用程序并从 web02 服务器运行它,它工作得很好。
我们甚至尝试过 Telnet 到我们在 web02 配置中的 url 和端口,并且成功了。
Membase 配置值在 machine.config 文件中定义。我们使用 WinMerge 比较了 web01 和 web02 之间的 machine.config 文件,它们是相同的。
然后我使用反射创建了我们的 MembaseClient 对象的转储,这是我们在 Web02 上得到的:
===========================================
Setting Value: 1337047585
On the Key: testPageKey_287945569
"Setting NOT successful!!"
*Membase Client dump:*
bucketName: OurBucketName
bucketPassword: ThisIsAPassword
poolUrls count: 3
Url_0: http://web01:8091/pools/OurBucketName
Url_1: http://web02:8091/pools/OurBucketName
Url_2: http://app01:8091/pools/OurBucketName
Node: 69.147.125.66:11210 is alive: False
Node: 69.147.125.67:11210 is alive: False
Node: 69.147.125.68:11210 is alive: False
===========================================
请注意最后 3 行如何提到 Node IsAlive = False... 这对我来说非常令人费解,因为 web01 表示所有节点都处于活动状态,Membase 管理控制台也是如此。再次从我们的测试应用程序中,在任何地方运行,包括 web02,我们可以在那个 QA Membase 集群中成功设置和获取值。
有人遇到过这个问题吗?或者对我们应该在哪里解决它有任何想法?
谢谢。