如何使用Tidis构建高可用的Redis集群?

我最近在使用最新的版:Tidis+三节点TiKV+3节点PD,想替换我原来的单机Redis,达到实现高可用的Redis目的。但是我使用一个Tidis节点 + 三节点的TiKV + 三节点PD时,出现了写入失败(我只有一种排序集读写操作)。我怀疑,是我构建的Tidis有问题,因为基于这三节点的TiKV之上,还有三个PD节点和三节点TiDB,一直有读写操作,运行接近20天了,没有任何问题。
我的Tidis+三节点架构图如下:


我的Tidis的config.toml配置部分如下:

[server]
listen = “0.0.0.0”
port = 6666
pd_addrs = “172.216.9.81:2379,172.216.9.82:2379,172.216.9.83:2379”
希望有正在使用Tidis的兄弟指导一下,非常感谢!

没用过 :thinking: 可以发报错先看看呐?

谢谢热心,没有报错!我的客户端是基于c语言的hiredis实现的,我只能看到hiredis写失败,然后退出了,这几天我退回去使用单机Redis后,一切正常。我现在也在重新构建Tidis和尝试捕获Tidis失败时的场景。

有些实践的方案你可以看看:

谢谢,您这几个,好像没有一个是使用Tidis的?:slight_smile:

我看成 Redis 了

目前没有想给的实践,期待你的实践文章

我目前的想法是,构建如下架构来,来测试一下:

突然想起来,我的c客户端失败后,我用redis-cli命令行去连接后,出现了如下错误:

[abelard@fedora redis-6.2.6]$ ./src/redis-cli -h 172.216.9.83 -p 6666
172.216.9.83:6666> scan *
Error: Server closed the connection
(8.19s)
172.216.9.83:6666>

进一步,看到了Tidis有一个日志文件:tikv-service.log,不停的吐:

2023/01/03 15:02:43.760 +08:00 ERRO [GC] failed to begin txn
2023/01/03 15:02:46.268 +08:00 ERRO error to begin new transaction: [/root/.cargo/git/checkouts/client-rust-cbb958c150bdea6a/2648fe6/tikv-
client-pd/src/cluster.rs:264]: failed to connect to [Member { name: "pd-172.216.9.83-2379", member_id: 7916348439350824078, peer_urls: ["ht
tp://172.216.9.83:2380"], client_urls: ["http://172.216.9.83:2379"], leader_priority: 0, deploy_path: "", binary_version: "", git_hash: "", 
dc_location: "" }, Member { name: "pd-172.216.9.82-2379", member_id: 15138125198525324009, peer_urls: ["http://172.216.9.82:2380"], client_u
rls: ["http://172.216.9.82:2379"], leader_priority: 0, deploy_path: "", binary_version: "", git_hash: "", dc_location: "" }, Member { name:
 "pd-172.216.9.81-2379", member_id: 17883531146897579492, peer_urls: ["http://172.216.9.81:2380"], client_urls: ["http://172.216.9.81:2379"],
 leader_priority: 0, deploy_path: "", binary_version: "", git_hash: "", dc_location: "" }]

而2379和2380是pd-server的端口,我的TiDB,一直在工作,这两个端口,不知道为什么在Tidis中出现了错误?

1 个赞

试一下看看~期待你的输出,咱们现在这块的内容还是比较匮乏~

嗯,我这次的问题,真正的原因应该是TiKV-service.log中的日志导致的,你可以帮忙看看吗?谢谢

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】

方便的话,重新按照这个格式描述一下问题。另外用的是 纯 tikv 没有用 tidb 是吗?

  1. 不是纯TiKV,我在TiKV上还跑了TiDB,现在TiDB一直在工作
  2. 重新描述,是另开一个主题,还是修改本主题呢?

tidis还真没用过,直接用redis集群不行吗?

想过直接用redis集群,但是我的项目还需要MySQL集群,所以想着用TiDB替换MySQL,
TiKV之上跑Tidis来替换单点的Redis,一块解决掉原来的单点和高可用问题

坐等大佬好文 :crazy_face:

重新发一个好一些,咱们歪楼讨论太多了

好的,我在阅读tidis服务启动,以及使用tikv-client连接pd-server部分的代码,弄清楚一点后,再发一个问题,谢谢提醒!

好叻~

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。