k8s集群下搭建数据同步工具-canal:canal-adapter篇
前言
canal-adapter的创建步骤就相对简单,主要是镜像的构建和同步相关配置的问题,后续会写一些adapter适配过程中遇到的坑,以及可能需要自己去改造的部分内容。
容器化
canal-adapter
环境准备
- yum源文件 CentOS6-Base-163.repo
- jdk包 jdk-8u201-linux-x64.tar.gz
- canal-adapter程序包 canal.adapter-1.1.4.tar.gz
- centos基础镜像 centos:6.6
将准备的文件与Dockerfile放在同一文件夹下
- 解压canal-adapter程序
mkdir canal-adapter
tar -zxvf canal.adapter-1.1.4.tar.gz -C canal-adapter
-
将canal-adapter/bin目录下start.sh文件中启动命令改为前台启动(删掉启动命令最后的 & )
-
Dockerfile文件
FROM centos:6.6
#设置时钟
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo ZONE=\"Asia/Shanghai\" > /etc/sysconfig/clock
#更新yum源
RUN rm -rf /etc/yum.repos.d/*.repo
COPY CentOS6-Base-163.repo /etc/yum.repos.d/
RUN yum clean all
#创建用户
RUN groupadd -g 2500 canal; useradd -u 2501 -g canal -d /home/canal -m canal
RUN echo canal:De@2018er | chpasswd; echo root:dockerroot | chpasswd
# 安装相关包
RUN yum -y install wget vi openssl.x86_64 glibc.x86_64 tar inetutils-ping net-tools telnet which file
RUN yum clean all
# 配置java环境变量
COPY jdk-8u201-linux-x64.tar.gz /opt
RUN tar -zvxf /opt/jdk-8u201-linux-x64.tar.gz -C /opt && \
rm -rf /opt/jdk-8u201-linux-x64.tar.gz && \
chmod -R 755 /opt/jdk1.8.0_201 && \
chown -R root:root /opt/jdk1.8.0_201
RUN echo 'export JAVA_HOME=/opt/jdk1.8.0_201' >> /etc/profile
RUN echo 'export JRE_HOME=$JAVA_HOME/jre' >> /etc/profile
RUN echo 'export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH' >> /etc/profile
RUN echo 'export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH' >> /etc/profile
RUN source /etc/profile
#安装中文包
RUN yum install kde-l10n-Chinese -y
RUN yum install glibc-common -y
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV JAVA_HOME /opt/jdk1.8.0_201
ENV PATH $PATH:$JAVA_HOME/bin
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
#ADD 复制canal-adapter程序
ADD canal-adapter /home/canal/
RUN chmod 755 /home/canal/bin
#启动程序
WORKDIR /home/canal/bin
RUN chmod 777 /home/canal/bin/restart.sh
RUN chmod 777 /home/canal/bin/startup.sh
RUN chmod 777 /home/canal/bin/stop.sh
ENTRYPOINT /home/canal/bin/restart.sh
- 构建镜像
docker build -t canal/canal-adapter:v1.1.4 .
k8s集群创建pod
以下所有操作均在testcanal命名空间下进行
canal-adapter
主要是将所需配置挂载到容器中即可
- canal-adapter-deploy-es6.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: adapter-rdsidtest-es6
namespace: testcanal
labels:
app: adapter-rdsidtest-es6
spec:
replicas: 1
template:
metadata:
labels:
app: adapter-rdsidtest-es6
spec:
containers:
- image: canal/canal-adapter:v1.1.4
name: adapter-rdsidtest-es6
# imagePullPolicy: Always
ports:
- containerPort: 11110
protocol: TCP
name: http1
- containerPort: 11111
protocol: TCP
name: http2
- containerPort: 11112
protocol: TCP
name: http3
volumeMounts:
- mountPath: /home/canal/conf
name: es-commans
- mountPath: /home/canal/conf/es6
name: es-params
resources:
requests:
cpu: 100m
memory: 100Mi
limits:
cpu: 4000m
memory: 4Gi
volumes:
- name: es-commans
configMap:
name: adapter-es6-commans
- name: es-params
configMap:
name: adapter-es6-params
securityContext:
runAsUser: 0
- 创建adapter同步配置文件的configmap
kubectl create configmap adapter-es6-params --from-file=/canal/canal-adapter/conf/es6 -n testcanal
kubectl create configmap adapter-es6-commans --from-file=/canal/canal-adapter/conf -n testcanal
#创建pod
kubectl apply -f canal-adapter-deploy-es6.yaml
# 查看pod创建结果
kubectl get pods -n testcnal
# 验证同步
以上就是我在搭建和使用 canal 过程中的一些总结,希望对你有所帮助!
欢迎关注我的个人微信公众号,一个菜鸟程序猿的技术技术分享和奔溃日常