一、Canal Admin 安装与配置
1.1 下载
1 | wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz |
1.2 配置
conf/application.yml
1 | server: |
1.3 初始化元数据库
数据库脚本位于 conf/canal_manager.sql
1.4 启动
1 | sh bin/stop.sh |
如果启动成功,可以通过 IP:8089 访问,默认密码:admin/123456
二、canal 配置
canal.properties 添加配置:
1 | # canal admin config |
重启 canal
或者不修改 canal.properties 配置,直接使用下面命令启动(使用 canal_local.properties 的配置):
1 | sh bin/startup.sh local |
或者删除 canal.properties 将 canal_local.properties 重命名为 canal.properties, 重启 canal
注意:需要确保配置的 MySQL 账户具有 canal_manager 库的插入权限,否则报错:
1 | ERROR com.alibaba.otter.canal.deployer.CanalLauncher - ## Something goes wrong when starting up the canal Server: |
直接 canal.properties 添加配置的话,默认的 example 实例会失效:
1 | com.alibaba.otter.canal.common.CanalException: instance : example config is not found |
需要在 Canal Admin 手动添加实例
三、更进一步
3.1 Canal Admin 设计理念:
canal-admin的核心模型主要有:
- instance,对应 canal-server 里的 instance,一个最小的订阅 MySQL 的队列
- server,对应 canal-server,一个 server 里可以包含多个 instance
- 集群,对应一组 canal-server,组合在一起面向高可用 HA 的运维
instance 因为是最原始的业务订阅诉求,它会和 server/集群 这两个面向资源服务属性的进行关联,比如 instance A 绑定到 server A 上或者集群 A 上
有了任务和资源的绑定关系后,对应的资源服务就会接收到这个任务配置,在对应的资源上动态加载 instance,并提供服务(动态加载的过程,有点类似于之前的 autoScan 机制,只不过基于 canal-admin 之后可就以变为远程的 web 操作,而不需要在机器上运维配置文件)
将 server 抽象成资源之后,原本 canal-server 运行所需要的 canal.properties/instance.properties 配置文件就需要在 web ui 上进行统一运维,每个 server 只需要以最基本的启动配置 (比如知道一下 canal-admin 的 manager 地址,以及访问配置的账号、密码即可)
3.2 面向 user/passwd 的安全 ACL 机制
canal.properties 中的 canal.admin.passwd 对应的是 application.yml 中的 canal.adminPasswd,使用 MySQL 的 password 方法加密(记得去掉第一个首字母的星号):
1 | select password('admin') |
canal.admin.user/canal.admin.passwd,这是一个双向认证,canal-server 会以这个密文和 canal-admin做请求,同时canal-admin 也会以密码原文生成加密串后和 canal-server 进行 admin 端口链接,所以这里一定要确保这两个密码内容的一致性
Canal Admin 后台登录密码也是使用 MySQL 的 password 方法加密的,用户名密码存储在 canal_manager 库的 canal_user 表
参考