从Kubenetes中的Rails通过mcrouter访问Memcached

问题描述 投票:0回答:1

我有一个运行在Google Kubernetes Engine中的Rails 6应用程序,并且我试图使用Memcached启用分布式缓存。

我完全按照these instructions的步骤将Memcached与mcrouter一起部署到Kubernetes集群中。一切都没错,使用Python脚本进行的最终测试工作正常。

然后,在我的Rails应用程序中,我认为我只需要添加“ dalli” gem并使用MemCacheStore,如下所示:

cache = ActiveSupport::Cache::MemCacheStore.new("#{ENV['NODE_NAME']}:5000")
cache.write('key', 'value')

此代码应该连接到端口5000上本地节点上的微型计算机,并写入高速缓存(NODE_NAME环境变量保存本地节点的名称。

cache.write命令返回false并将其打印到日志中:

D, [2020-01-08T18:02:30.233119 #215] DEBUG -- : Dalli::Server#connect gke-rev79-cluster-phat-pool-41a53de4-rfz3:5000
W, [2020-01-08T18:02:30.258514 #215]  WARN -- : gke-rev79-cluster-phat-pool-41a53de4-rfz3:5000 failed (count: 0) EOFError: end of file reached

“ gke-rev79-cluster-phat-pool-41a53de4-rfz3”是本地节点名称

这是我从cache.inspect中得到的内容:

"#<ActiveSupport::Cache::MemCacheStore:0x0000000004087cb8 @options={}, @data=#<Dalli::Client:0x0000000004087498 @servers=[\"gke-rev79-cluster-phat-pool-41a53de4-rfz3:5000\"], @options={}, @ring=nil>>"

如何连接到缓存?也许我需要在Rails缓存存储区的选项中添加一些内容?

ruby-on-rails kubernetes memcached ruby-on-rails-6
1个回答
0
投票

[Dalli似乎不支持Mcrouter,因为它使用了Mcrouter不支持的Memcached二进制协议。

https://github.com/facebook/mcrouter/issues/56

© www.soinside.com 2019 - 2024. All rights reserved.