canal server HA安装部署

一 介绍

canal-server架构

 

说明

    Canal的Server端本身根据配置启动了很多个Instance对象,所谓的Instance对象就是模拟的数据库slave和master进行连接,换句话说就是假设canal同时成为N个数据库的slave,那么就会有N个Instance实例。

    每个Instance内部包含5个组件(图中只包含了4个,估计另外一个没有实现的原因),分别是eventParser、eventSink、eventStore、metaManager、alarmHandler。其中同步的数据流是按照eventParser->eventSink->eventStore进行传输的,当然eventStore是重点因为它存储了所有从mysql同步过来的数据(数据结构很有意思,后面会介绍),metaManager主要是和zookeeper打交道的,用于记录位点的元信息。


canal的HA机制是在instance这个粒度上的。


此次介绍摘自https://www.jianshu.com/p/fea54a984031

二 实验环境

三 实验步骤

3.1 安装canal server

在规划的两台服务器(192.168.144.206/207)上安装canal server。

可以参考https://blog.csdn.net/yabingshi_tech/article/details/109513151

/*

也可点击这里下载canal server shell安装脚本进行安装(适用于CentOS系统)。

安装手册:

一 准备工作

① 创建目录

cd /opt && mkdir canal && cd canal

② 上传安装脚本install_canal.sh及canal安装包canal.deployer-1.1.4.tar.gz;

    修改安装脚本里的MasterHost值为源端MariaDB主库ip,修改CanalHost值为canal服务器ip。

③ 上传jdk安装包jdk-8u92-linux-x64.tar.gz至/usr/local下

④ 上传名称为'mysql'的文件至服务器的/usr/bin目录下,并为mysql文件赋予执行权限:chmod +x mysql

 

二 安装步骤

cd /opt/canal

sh install_canal.sh

查看脚本输出是否有报错。

检查canal.log是否有输出the canal server is running now

检查example.log是否有输出start successful

*/

注意:两台canal server上的server-id必须不同,且不能和主库的server-id相同。

3.2 安装zookeeper

在备用canal server服务器192.168.144.207上安装zookeeper,请参考:

https://blog.csdn.net/yabingshi_tech/article/details/109645577

3.4 修改配置文件,加上zookeeper配置

在两台canal server服务器上操作:

cd /usr/local/canal/conf

vi canal.properties

canal.zkServers = 192.168.144.207:2181

canal.instance.global.spring.xml = classpath:spring/default-instance.xml

 注意: 两台机器上的instance目录的名字需要保证完全一致,HA模式是依赖于instance name进行管理,同时必须都选择default-instance.xml配置

3.5 重启canal server

sh /usr/local/canal/bin/stop.sh

sh /usr/local/canal/bin/startup.sh

#检查日志

less /usr/local/canal/logs/canal/canal.log

[main] INFO  com.alibaba.otter.canal.deployer.CanalStarter - ## the canal server is running now ......

3.6 验证HA

#连接zookeeper, 查询当前工作节点

/usr/local/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
[zk: 127.0.0.1:2181(CONNECTED) 0] get /otter/canal/destinations/example/running

{"active":true,"address":"192.168.144.206:11111"}

……

#关闭当前运行的canal server

[root@localhost conf]# sh /usr/local/canal/bin/stop.sh

localhost.localdomain: stopping canal 28109 ...

Oook! cost:1

#查看当前运行节点

说明现在备份canal server在提供服务。

 

--本篇文章主要参考自:https://github.com/alibaba/canal/wiki/AdminGuide的‘HA模式配置’部分。

 

要在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 镜像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值