大家好,希望有人可以帮我查询/配置Geode Redis Adapter。我在确定如何/是否可以在我的Geode群集中配置多个Redis服务器以在高可用性设置中运行时遇到一些困难。
我对Geode很新,但了解在传统的Geode应用程序中,客户端与定位器进程交互以访问来自群集的数据并平衡负载。鉴于此适配器的目的是作为Redis的替代品(即客户端无需更改),我想它的功能有所不同。
这是我到目前为止所尝试的内容:
我已根据此link从源代码构建并在2个CentOS 7虚拟机上成功获得gfsh
cli:
在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适配器是否只允许您扩展单个服务器?
答案 0 :(得分:1)
这可能不是一个答案,但评论可能太长了。
我不熟悉您在此处讨论的特定Geode Redis适配器。但根据我对Gemfire / Geode的经验,您可能需要检查一些事项:
您启动了第一台没有定位器参数的主机,我不确定这是否会导致群集形成出现任何问题。 Gemfire中有两种形成集群的方法:通过指定mcast端口或指定定位器。
您正在检查的地区的范围看起来不对。 &#34;本地&#34;不会复制任何更新。当你正确设置时,它应该显示为DISTRIBUTED_NO_ACK / DISTRIBUTED_ACK / GLOBAL我想。
希望这有帮助
答案 1 :(得分:0)
__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