通过canal-admin1.1.4搭建canal-service高可用集群HA

本文详细介绍了如何在两台虚拟机上搭建Canal服务集群,包括Zookeeper安装、Canal-admin配置、Server管理以及Instance管理。通过集群配置实现服务高可用,当一台服务器停止时,服务能够自动切换到另一台。同时,文章还展示了通过Java代码连接Canal-server集群进行数据同步的示例,涉及数据库表结构、项目依赖、配置文件及监听数据变更的代码实现。

文章基于已经搭建好的canal环境,如果没有搭建好canal环境可以移步https://blog.youkuaiyun.com/u012946310/article/details/109361685 搭建好 canal 初始环境 canal admin 与 service 都为1.1.4版本

一,运行环境:

1,两台虚拟机
192.168.2.196:zk、mysql、redis安装在本虚拟机上面,并且有启动 canal-admin 与 canal-service 服务
192.168.2.169:只启动 canal-service
zk只启动一台实例服务

2,在196机器上通过docker安装zk

#1,下载zk
docker pull zookeeper
#2,运行
docker run --name zookeeper -p 2181:2181 -d zookeeper
#3,查看运行状态
docker ps

在这里插入图片描述

二、canal-service集群配置

可以参考官方文档说明:https://github.com/alibaba/canal/wiki/Canal-Admin-Guide

进入canal-admin控制台,账号密码:admin/123456
在这里插入图片描述
1,创建集群
在这里插入图片描述
在这里插入图片描述
集群创建完成后,点击操作 - 主配置 - 载入配置,配置zk注册地址点击保存

各配置说明参考文档:https://github.com/alibaba/canal/wiki/AdminGuide
在这里插入图片描述

配置项:

  • 修改集群/删除集群,属于基本的集群信息维护和删除
  • 主配置,主要是指集群对应的canal.properties配置,设计上一个集群的所有server会共享一份全局canal.properties配置
  • (如果有个性化的配置需求,可以创建多个集群) 查看server,主要是指查看挂载在这个集群下的所有server列表

2,Server 管理,新增集群server
新增两个server,选择刚刚新建的 springboot_canal_demo 集群
Server Ip分别是 192.168.2.196、192.168.2.169两台server主机服务
在这里插入图片描述
新增完成后,就能够在列表看到新增的两台服务,此时状态是断开状态,是因为我们还没启动canal服务
在这里插入图片描述

配置项:

  • 所属集群,可以选择为单机 或者 集群。一般单机Server的模式主要用于一次性的任务或者测试任务
  • Server名称,唯一即可,方便自己记忆
  • Server Ip,机器ip
  • admin端口,canal 1.1.4版本新增的能力,会在canal-server上提供远程管理操作,默认值11110
  • tcp端口,canal提供netty数据订阅服务的端口
  • metric端口, promethues的exporter监控数据端口 (未来会对接监控)

3,配置启动 192.168.2.196、192.168.2.169 机器canal服务
进入 conf 目录下,编辑 canal_local.properties 配置文件

vim conf/canal_local.properties

在这里插入图片描述

# register ip,填写虚拟机ip,默认为空,建议填写,防止注册时读取网卡ip有误,导致ip注册错误
canal.register.ip =192.168.2.196

# canal admin config 管理端地址
canal.admin.manager = 192.168.2.196:8089
canal.admin.port = 11110
canal.admin.user = admin
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
# admin auto register
canal.admin.register.auto = true
canal.admin.register.cluster =

启动服务

sh bin/startup.sh local

启动完成后就能够在列表看到,服务已经是启动状态
在这里插入图片描述
并且也已经将服务注册进zk了
在这里插入图片描述

三、Instance管理

1,创建Instance
instance配置比较简单,主要关注:

  • 资源关联,比如挂载到具体的单机 或 集群
  • instance.properties配置维护,可以载入默认模板进行修改

点击载入模板,选择之前创建的集群 springboot_canal_demo ,修改自己的配置即可

各配置说明参考文档:https://github.com/alibaba/canal/wiki/AdminGuide
在这里插入图片描述
配置完成后,保存,默认是启动当前实例
在这里插入图片描述

配置项:

  • 修改,主要就是维护instance.properties配置,做了修改之后会触发对应单机或集群server上的instance做动态reload
  • 删除,相当于直接执行instance stop,并执行配置删除
  • 启动/停止,对instance进行状态变更,做了修改会触发对应单机或集群server上的instance做启动/停止操作
  • 日志,主要针对instance运行状态时,获取对应instance的最后100行日志,比如example/example.log

四,集群高可用测试

通过列表看到,当前运行的 instance 所属主机是 192.168.2.196
在这里插入图片描述
通过server管理,将 192.168.2.196 服务停止,看 instance 运行实例会不会自动迁移到 192.168.2.169 机器
在这里插入图片描述
在这里插入图片描述
可以看到 instance 运行的实例已经切换到 169 的机器上面了,说明calal-server集群高可用服务已经搭建成功了

五,通过java代码连接 canal-server 集群服务,做数据同步

示例官方demo:https://github.com/alibaba/canal/wiki/ClientAPI
本文demo git地址:https://gitee.com/hwm0717/springboot_canal_demo/tree/ZK_HA

项目结构:
在这里插入图片描述
数据库sql

CREATE TABLE `user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `nickname` varchar(126) DEFAULT NULL COMMENT '昵称',
  `name` varchar(50) DEFAULT NULL COMMENT '姓名',
  `phone` varchar(11) DEFAULT NULL COMMENT '手机',
  `login_name` varchar(20) DEFAULT NULL COMMENT '登陆名',
  `login_pwd` varchar(100) DEFAULT NULL COMMENT '密码',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>springboot.canal.demo</groupId
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值