架构
我们将在一台机器上部署以下所有部件:
- mem_broker(内存代理)
- coordinator(协调器)
2
个代理与4
个Redis
节点
构建二进制文件
$ cargo build
请注意,您还需要安装 Redis
。
部署 Memory Broker
$ RUST_LOG=undermoon=debug,mem_broker=debug UNDERMOON_ADDRESS=127.0.0.1:7799 target/debug/mem_broker
部署 Coordinator
运行 coordinator
并指定 memory broker
地址。
$ RUST_LOG=undermoon=debug,coordinator=debug UNDERMOON_BROKER_ADDRESS=127.0.0.1:7799 target/debug/coordinator
部署 Server Proxy 与 Redis
Chunk
有关详细说明,请参阅:Rust 写的 Undermoon Redis 集群 - Chunk。
运行 Server Proxy 与 Redis
运行 2
个服务器代理和 4
个 Redis
节点:
# You need to run each line in different terminals # The first half $ redis-server --port 7001 $ redis-server --port 7002 $ RUST_LOG=undermoon=debug,server_proxy=debug UNDERMOON_ADDRESS=127.0.0.1:6001 target/debug/server_proxy # The second Half $ redis-server --port 7003 $ redis-server --port 7004 $ RUST_LOG=undermoon=debug,server_proxy=debug UNDERMOON_ADDRESS=127.0.0.1:6002 target/debug/server_proxy
将 Server Proxy 和 Redis 注册到 Memory Broker
Redis
集群永远无法在单台机器上创建。即使我们有足够的 node
,Memory broker
也无法创建集群,因为它们似乎都在同一主机 127.0.0.1
中;
但是由于我们在一台机器上部署了整个 undermoon
集群,我们需要通过在发布的 json
中将 host
字段指定为 localhost1
和 localhost2
来明确告诉 memory broker
它们在不同的主机中。
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
个节点。
$ curl http://localhost:7799/api/v3/proxies/addresses {"addresses":["127.0.0.1:6001","127.0.0.1:6002"]} $ curl http://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":{}}} $ curl http://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":{}}}
创建集群
使用 4
个 Redis
节点创建一个名为 mycluster
的集群。
$ curl -XPOST -H 'Content-Type: application/json' http://localhost:7799/api/v3/clusters/meta/mycluster -d '{"node_number": 4}'
现在我们可以连接到集群:
$ redis-cli -h 127.0.0.1 -p 6001 -c 127.0.0.1:6001> cluster nodes mycluster___________2261c530e98070a6____ 127.0.0.1:6001 myself,master - 0 0 3 connected 8192-16383 mycluster___________ad095468b9deeb2d____ 127.0.0.1:6002 master - 0 0 3 connected 0-8191 127.0.0.1:6001> get a (nil) 127.0.0.1:6001> get b -> Redirected to slot [3300] located at 127.0.0.1:6002 "1"