本教程将引导您完成手动设置undermoon集群的过程,以更好地了解undermoon的工作原理。架构我们将在一台机器上部署以下所有部分:mem_broker(内存代理)协调器(协调器)2个具有4个Redis节点的代理构建二进制文件$cargobuild请注意,您还需要安装Redis。部署内存代理$RUST_LOG=undermoon=debug,mem_broker=debugUNDERMOON_ADDRESS=127.0.0.1:7799target/debug/mem_broker部署协调器运行协调器并指定内存代理地址。$RUST_LOG=undermoon=debug,coordinator=debugUNDERMOON_BROKER_AD部署ServerProxy和RedisChunk详情请参考:UndermoonRedisCluster-Rust写的Chunk。使用Redis运行服务器代理运行2个服务器代理和4个Redis节点:#你需要在不同的终端运行每一行#前半部分$redis-server--port7001$redis-server--port7002$RUST_LOG=undermoon=debug,server_proxy=debugUNDERMOON_ADDRESS=127.0.0.1:6001target/debug/server_proxy#第二个Half$redis-server--port7003$redis-server--port7004$RUST_LOG=undermoon=debug,server_proxy=debugUNDERMOON_ADDRESS=127.0.0.1:6002target/debug/server_proxyRegisterServerProxy和Redis到MemoryBrokerRedisCluster永远不能在一台机器上创建。即使我们有足够的节点,Memorybroker也无法创建集群,因为它们似乎都在同一个主机127.0.0.1中;但是由于我们在一台机器上部署了整个undermoon集群,所以我们需要通过在发布的json中将host字段指定为localhost1和localhost2来显式地告诉memorybroker他们在不同的主机上。curl-XPOST-H'Content-Type:application/json'"http://localhost:7799/api/v3/proxies/meta"-d'{"proxy_address":"127.0.0.1:6001","nodes":["127.0.0.1:7001","127.0.0.1:7002"],"host":"localhost1"}'curl-XPOST-H'Content-Type:application/json'"http://localhost:7799/api/v3/proxies/meta"-d'{"proxy_address":"127.0.0.1:6002","nodes":["127.0.0.1:7003","127.0.0.1:7004"],"host":"localhost2"}'现在我们有2个服务器代理和4个节点。$curlhttp://localhost:7799/api/v3/proxies/addresses{"addresses":["127.0.0.1:6001","127.0.0.1:6002"]}$curlhttp://localhost:7799/api/v3/proxies/meta/127.0.0.1:6001{"proxy":{"address":"127.0.0.1:6001","epoch":2,"nodes":[],"free_nodes":["127.0.0.1:7001","127.0.0.1:7002"],"peers":[],"clusters_config":{}}}$curlhttp://localhost:7799/api/v3/proxies/meta/127.0.0.1:6002{"proxy":{"address":"127.0.0.1:6002","epoch":2,"nodes":[],"free_nodes":["127.0.0.1:7003","127.0.0.1:7004"],"peers":[],"clusters_config":{}}}创建集群创建一个名为mycluster的集群,其中包含4个Redis节点。$curl-XPOST-H'Content-Type:application/json'http://localhost:7799/api/v3/clusters/meta/mycluster-d'{"node_number":4}'现在我们可以连接到集群了:$redis-cli-h127.0.0.1-p6001-c127.0.0.1:6001>clusternodesmycluster___________2261c530e98070a6____127.0.0.1:6001myself,master-003connected8192-16383mycluster___________ad095468b9deeb2d____127.0.0.1:6002master-003connected0-8191127.0.0.1:6001>geta(nil)127.0.0.1:6001>getb->重定向到slot[3300]位于127.0.0.1:6002"1"
