Geode Redis适配器

时间:2016-09-21 07:23:24

标签: gemfire geode

大家好,希望有人可以帮我查询/配置Geode Redis Adapter。我在确定如何/是否可以在我的Geode群集中配置多个Redis服务器以在高可用性设置中运行时遇到一些困难。

我对Geode很新,但了解在传统的Geode应用程序中,客户端与定位器进程交互以访问来自群集的数据并平衡负载。鉴于此适配器的目的是作为Redis的替代品(即客户端无需更改),我想它的功能有所不同。

这是我到目前为止所尝试的内容:

我已根据此link从源代码构建并在2个CentOS 7虚拟机上成功获得gfsh cli:

  • 192.168.0.10:host1
  • 192.168.0.15:host2

在host1上,我运行以下命令:

gfsh>start locator --name=locator1 --bind-address=192.168.0.10 --port=10334
gfsh>start server --name=redis --redis-bind-address=192.168.0.10 --redis-port=11211 --J=-Dgemfireredis.regiontype=PARTITION_REDUNDANT

在host2上,我运行以下命令:

gfsh>start server --name=redis2 --redis-bind-address=192.168.0.15 --redis-port=11211 --J=-Dgemfireredis.regiontype=PARTITION_REDUNDANT --locators=192.168.0.10[10334]

在host1上,我检查当前配置:

gfsh>list members
  Name   | Id
-------- | -------------------------------------------------
locator1 | 192.168.0.10(locator1:16629:locator)<ec><v0>:1024
redis2   | 192.168.0.15(redis2:6022)<ec><v2>:1024
redis    | 192.168.0.10(redis:16720)<ec><v1>:1025

gfsh>list regions
List of regions
-----------------
__HlL
__ReDiS_MeTa_DaTa
__StRiNgS

对于每个地区,我都可以看到服务器redis&amp; redis2作为主办会员 - 例如

gfsh>describe region --name=__StRiNgS
..........................................................
Name            : __StRiNgS
Data Policy     : normal
Hosting Members : redis2
                  redis

Non-Default Attributes Shared By Hosting Members

 Type  | Name  | Value
------ | ----- | -----
Region | size  | 0
       | scope | local

此时,我转向redis-cli进行一些测试。鉴于以前的输出,我的期望是如果我在一台服务器上设置一个密钥,我应该能够从另一台服务器读回来:

192.168.0.10:11211> set foo 'bar'
192.168.0.10:11211> get foo
"bar"

192.168.0.15:11211> get foo
(nil)

gfsh>describe region --name=__StRiNgS
..........................................................
Name            : __StRiNgS
Data Policy     : normal
Hosting Members : redis2
                  redis

Non-Default Attributes Shared By Hosting Members

 Type  | Name  | Value
------ | ----- | -----
Region | scope | local

Non-Default Attributes Specific To The Hosting Members

Member |  Type  | Name | Value
------ | ------ | ---- | -----
redis2 | Region | size | 0
redis  | Region | size | 1

正如您所看到的,针对host2的主机上添加的密钥返回(nil)。我非常感谢这里的任何帮助。是否有可能实现我在此瞄准的目标,或者Redis适配器是否只允许您扩展单个服务器?

3 个答案:

答案 0 :(得分:1)

这可能不是一个答案,但评论可能太长了。

我不熟悉您在此处讨论的特定Geode Redis适配器。但根据我对Gemfire / Geode的经验,您可能需要检查一些事项:

  1. 您启动了第一台没有定位器参数的主机,我不确定这是否会导致群集形成出现任何问题。 Gemfire中有两种形成集群的方法:通过指定mcast端口或指定定位器。

  2. 您正在检查的地区的范围看起来不对。 &#34;本地&#34;不会复制任何更新。当你正确设置时,它应该显示为DISTRIBUTED_NO_ACK / DISTRIBUTED_ACK / GLOBAL我想。

  3. 希望这有帮助

答案 1 :(得分:0)

夏威是正确的,范围“本地”区域不会复制其他成员的条目。解决方法可能只是从gfsh创建一个名为__StRiNgS的区域,但由于以两个下划线开头的区域名称仅供内部使用,这是不可能的。

我已提交此问题https://issues.apache.org/jira/browse/GEODE-1921来解决问题。我还附上了这个问题的补丁。应用修补程序后,我发现__StRiNgS区域现在为PARTITION

gfsh>start locator --name=locator1
gfsh>start server --name=redis --redis-port=11211
gfsh>list regions
List of regions
-----------------
HlL
StRiNgS
__ReDiS_MeTa_DaTa

gfsh>describe region --name=/StRiNgS
..........................................................
Name            : StRiNgS
Data Policy     : partition
Hosting Members : redis

Non-Default Attributes Shared By Hosting Members

Type  |    Name     | Value
------ | ----------- | ---------
Region | size        | 0
       | data-policy | PARTITION

答案 2 :(得分:0)

在host1上:

start locator --name=locator1 --bind-address=192.168.0.10 --port=10334
start server --name=redis --redis-bind-address=192.168.0.10 --redis-port=11211 --J=-Dgemfireredis.regiontype=REPLICATE

注意:Yoy必须使用regiontype作为&#34; REPLICATE&#34;如果您希望将数据从一个区域复制到另一个区域。

在host2上:

start server --name=redis2 --redis-bind-address=192.168.0.15 --redis-port=11211 --J=-Dgemfireredis.regiontype=REPLICATE --locators=192.168.0.10[10334]

https://geode.apache.org/docs/guide/11/developing/region_options/region_types.html