k8s集群下搭建数据同步工具-canal:canal-adapter篇

12 篇文章 3 订阅
9 篇文章 0 订阅

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 过程中的一些总结,希望对你有所帮助!

欢迎关注我的个人微信公众号,一个菜鸟程序猿的技术技术分享和奔溃日常

一个菜鸟程序猿的技术技术分享和奔溃日常

要在Kubernetes (K8s) 上部署 Canal Server,你可以使用 Deployment 和 Service 来创建和管理它。 首先,你需要创建一个 Canal Server 的配置文件,例如 `canal-server.yaml`,其内容类似于以下示例: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: canal-server spec: replicas: 1 selector: matchLabels: app: canal-server template: metadata: labels: app: canal-server spec: containers: - name: canal-server image: canal/canal-server:v1.1.4 ports: - containerPort: 11111 env: - name: canal.destinations value: example --- apiVersion: v1 kind: Service metadata: name: canal-server spec: selector: app: canal-server ports: - port: 11111 targetPort: 11111 ``` 上述配置文件定义了一个名为 `canal-server` 的 Deployment 和一个名为 `canal-server` 的 Service。Deployment 中的容器使用 `canal/canal-server:v1.1.4` 镜像,并将容器的端口设置为 11111。Service 将流量转发到 Pod 的容器端口 11111。 执行以下命令来部署 Canal Server: ```shell kubectl apply -f canal-server.yaml ``` 这将创建一个名为 `canal-server` 的 Deployment 和一个名为 `canal-server` 的 Service。 你可以使用以下命令来检查 Deployment 和 Service 的状态: ```shell kubectl get deployments kubectl get services ``` 一旦 Deployment 和 Service 创建成功,你就可以通过 Service 的 Cluster IP 或 NodePort 来访问 Canal Server。 请注意,上述示例仅供参考,你需要根据自己的实际需求进行修改和调整。另外,还需要确保你的 Kubernetes 集群已正确配置,并且能够拉取指定的 Canal Server 镜像。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值