解决方案:
- 由于 pd 节点独占机器,剩余资源过多,尤其是非 Leader 的 pd 节点,几乎不用什么资源。所以建议还是 TiCDC 和 tipd 进行混部。
- TiCDC 和 tipd 进行混部时,要求 TiCDC 和 pd 节点使用不同的磁盘,隔离IO,避免相互干扰。同时通过 设置numa 隔离CPU、 cgroup 隔离内存使用。在内存和CPU充足的前提下,可以保证在一台机器上部署 TiCDC 和 pd 比较安全,且可以充分利用资源,提高机器使用率。
- 另外,也可以对 pd 节点设置 Leader 分布的优先级,设置指定 Leader 优先选举的节点。如果有3台pd机器,只部署2个TiCDC的情况下,可以只把TiCDC和 2 个非 Leader 的 pd 混部,另一个 pd 独享机器,这个时候可以设置它的优先级最高。
- 但是风险是如果设置优先级最高的 pd 快速重启一次,就会在短时间内切换 2 次pd leader,会加剧集群的抖动影响。
- 如果运维人员不是同一个人或者在未知晓设置了 pd leader 优先级的情况下,人为切换pd leader,会导致 Leader 迁移走后很快切回去,从而引发其他问题。
综上,建议把TiCDC 和 tipd 混部,但是也尽量保障节点之间资源使用的隔离性。
1 个赞
从库压力是相对较小的,不过由于集群之间的网络防火墙等设置,CDC虽然部署在下游,但是还是有上游集群的tiup管理的,总的来说管理起来不是很方便。
如果网络通畅无阻,部署在下游也是可以考虑的。
xfworld
(魔幻之翼)
23
试试,,完了后写个文章分享下心得,我感觉这种无可奈何的场景,都会遇到的…
2 个赞
Kongdom
(Kongdom)
24
还是觉得放pd上不保险,估计这样部署时,节点上的pd几乎不可能选举成为leader
pd在使用过程当中带来的风险点,主要是同步延迟很大时如果有重启,它会拉取全部落后的数据重新进行排序、整合再写入下游,这个时候会消耗很多的内存和CPU。如果落后很多,由于GC safe piont 最多只能保证 24h (默认),一旦超过这个时间 GC TTL,任务会失败。
也就是,一个同步任务,它最多是有落后24小时,这个时候重启会有瞬时的 CPU 和内存冲击,大概率会影响 pd leader 。
所以不让 ticdc 同步任务落后很多,是一个关键点。这就要求管理员一收到延迟告警,就必须尽快及时处理。
如果也做好了资源隔离,总体安全还是可控的。
andone
(Ti D Ber Lq Q Mt Rp V)
30
最好还是结合监控。来决定是和pd还是td。一般建议pd,td比较耗内存。
zhanggame1
(Ti D Ber G I13ecx U)
31
我觉得可以分开,比如有3个tidb server 3 pd 3 tikv,分散个各个组件上吧,有干扰但不会导致同一组件都压力过大
个人觉得除了tikv和tidbserver,其他的都可以混合部署,有tiflash也不建议混合
这里是指每个组件分开,各自承担部署一个 TiCDC吗?
先不考虑其他,就说和TiKV节点混部这个,资源竞争会比较激烈,这个方案就不是推荐的方式了。
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。