k8s集群下搭建数据同步工具-canal:canal-server篇
前言
canal-server的搭建过程与canal-admin大体相同,但需要解决一下一些问题,我们知道,server是通过canal.properties中的register.ip向admin注册server信息的,但是在k8s环境下,pod的ip是不固定的,每一次pod重启其ip都会发生变化,也就会在admin中重新注册一个新的server,这种情况下程序基本是不可用的。
本文提供一种方法,通过headlessService和StatefulSet方式搭建canal-server,使canal-server以固定域名的方式向canal-admin注册,解决pod重启ip变化,重新注册新server的问题。
容器化
canal-server
环境准备
- yum源文件 CentOS6-Base-163.repo
- jdk包 jdk-8u201-linux-x64.tar.gz
- canal-server程序包 canal.server-1.1.4.tar.gz
- centos基础镜像 centos:6.6
将准备的文件与Dockerfile放在同一文件夹下
- 解压canal-server程序
mkdir canal-server
tar -zxvf canal.deployer-1.1.4.tar.gz -C canal-server
- 在canal-server/bin目录下创建文件config.sh(这部分主要是为了实现server在k8s中的自动注册过程中容器重启后ip变化的问题) 同时注意将start.sh文件中启动命令改为前台启动(删掉启动命令最后的 & )
cat > /home/canal/conf/canal.properties <<- EOF
# register ip
# ${HOSTNAME} 为podname,canal-server-discovery-svc-stable为svc名称
# StatefulSet类型pod名称是固定的,k8s集群内pod域名规则为pod_name.svc_name.namespace.svc.cluster.local
canal.register.ip = ${HOSTNAME}.canal-server-discovery-svc-stable.testcanal.svc.cluster.local
# canal admin config
canal.admin.manager = canal-adm

本文介绍在Kubernetes环境中使用Headless Service和StatefulSet搭建Canal Server的方法,解决Pod重启导致IP变化的问题,确保Server以固定域名注册。
最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



