Linux 部署 Tendis 集群(三主三从)

1. 简介

  • Tendis 存储版是腾讯互娱 CROS DBA 团队 & 腾讯云数据库团队自主设计和研发的开源分布式高性能 KV 存储。完全兼容 Redis 协议,并使用 rocksdb 作为存储引擎
  • 类似于 Redis Cluster,Tendis 存储版使用去中心化的集群管理架构。数据节点之间通过 gossip 协议通讯,用户访问集群中的任意数据节点,请求都能路由到正确的节点。并且集群节点支持自动发现、故障探测、自动故障切换、数据搬迁等能力,极大降低运维成本
  • 官网:http://tendis.cn/
  • 下载地址:https://github.com/Tencent/Tendis/releases
  • 环境依赖:
    • g++(required by c++17, version >= 5.5)
    • cmake(version >= 3.13.0)

2. 集群搭建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
$ tar -zxvf tendisplus-2.6.0-rocksdb-v6.23.3.tgz
$ cd tendisplus-2.6.0-rocksdb-v6.23.3

# 拷贝脚本
$ cp -r scripts scripts30000
$ cd scripts30000

# 修改配置
$ vi tendisplus.conf
bind 10.18.2.40
cluster-enabled yes
port 30000
loglevel notice
logdir ./home/log
dumpdir ./home/dump
dir ./home/db
pidfile ./home/tendisplus.pid
slowlog ./home/log/slowlog
rocks.blockcachemb 4096
executorThreadNum 48
#需要密码认证把这两个都带上
requirepass 123456
masterauth 123456
$ vi stop.sh
ip=10.18.2.40
port=30000
echo shutdown |../bin/redis-cli -h ${ip} -p ${port} -a 123456

# 拷贝脚本(如果部署在其他机器上,就重复上述操作,注意修改IP和端口)
$ cp -r scripts30000 scripts30001
$ cp -r scripts30000 scripts30002
$ cp -r scripts30000 scripts30003
$ cp -r scripts30000 scripts30004
$ cp -r scripts30000 scripts30005

# 修改每个scripts里的tendisplus.conf和stop.sh配置(IP/PORT)

# 在每个scripts中启动tendis
$ cd scripts30000
$ ./start.sh

# 配置集群
$ cd bin

# 联通节点
$ ./redis-cli -h 10.18.2.40 -p 30000 -a 123456
> cluster meet 10.18.2.40 30001
> cluster meet 10.18.2.40 30002
> cluster meet 10.18.2.40 30003
> cluster meet 10.18.2.40 30004
> cluster meet 10.18.2.40 30005
> quit

# 分配槽位(这三个就是主节点)
$ ./redis-cli -h 10.18.2.40 -p 30000 -a 123456 cluster addslots {0..5461}
$ ./redis-cli -h 10.18.2.40 -p 30001 -a 123456 cluster addslots {5462..10922}
$ ./redis-cli -h 10.18.2.40 -p 30002 -a 123456 cluster addslots {10923..16383}

# 检查集群信息(虽然都是master,但30000~30002后面有槽位信息)
$ ./redis-cli -h 10.18.2.40 -p 30000 -a 123456
> cluster nodes
> quit

# 配置从节点(注意替换下面的节点ID:这里30003是30000的从,30004是30001的从,30005是30002的从)
$ ./redis-cli -h 10.18.2.40 -p 30003 -a 123456 cluster replicate <30000_id>
$ ./redis-cli -h 10.18.2.40 -p 30004 -a 123456 cluster replicate <30001_id>
$ ./redis-cli -h 10.18.2.40 -p 30005 -a 123456 cluster replicate <30002_id>

# 再次检查集群信息(可以看到3个master,3个slave)
$ ./redis-cli -h 10.18.2.40 -p 30000 -a 123456
> cluster nodes
> quit

参考