背景

canal-admin设计上是为canal提供整体配置管理、节点运维等面向运维的功能,提供相对友好的WebUI操作界面,方便更多用户快速和安全的操作

准备

首先确保你先完成了canal-admin的基本部署和运维指南,请参考:

设计理念

引入了canal-admin之后,canal-server之前面向命令行的运维方式需要有一些变化,主要的变化在于配置体系上,每个server节点上不应该再去维护复杂而且冗长的canal.properties/instance.properties,应该选择以最小化、无状态的方式去启动,因此在canal 1.1.4上,对于配置做了一些重构来支持canal-admin,同时也兼容了原先的命令行运维模式.

变化点

  • 引入canal_local.properties,针对canal-server启动所需要的配置,做了最小化配置,只需要关注和admin请求的必要参数即可
  1. # register ip
  2. canal.register.ip =
  3. # canal admin config
  4. canal.admin.manager = 127.0.0.1:8089
  5. canal.admin.port = 11110
  6. canal.admin.user = admin
  7. canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
  8. # admin auto register
  9. canal.admin.register.auto = true
  10. canal.admin.register.cluster =

面向user/passwd的安全ACL机制

针对canal.admin.passwd,这里默认做了密码加密处理,这里的passwd是一个密文,和canal-admin里application.yml里的密码原文做对应.

密文的生成方式,请登录mysql,执行如下密文生成sql即可(记得去掉第一个首字母的星号)

  1. select password('admin')
  2. +-------------------------------------------+
  3. | password('admin') |
  4. +-------------------------------------------+
  5. | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 |
  6. +-------------------------------------------+

请注意几点:

  • 这个密码方式,同样对于canal.user.passwd有效 (1.1.4新增的,用于控制用户访问canal-server的订阅binlog的ACL机制)
  • canal.admin.user/canal.admin.passwd,这是一个双向认证,canal-server会以这个密文和canal-admin做请求,同时canal-admin也会议密码原文生成加密串后和canal-server进行admin端口链接,所以这里一定要确保这两个密码内容的一致性

面向容器无状态的运维

server的信息维护除了在canal-admin上基于WebUI的操作以外,还有更加方便的auto register机制,主要针对面向容器化之后可以通过扩容节点,自动完成集群配置的维护和instance分流

  1. # 是否开启自动注册模式
  2. canal.admin.register.auto = true
  3. # 可以指定默认注册的集群名,如果不指定,默认注册为单机模式
  4. canal.admin.register.cluster =

配置状态化清理

  • canal.properties里的canal.id,目前已经废弃为基于canal.registerIp + canal.adminPort作为唯一标识,请求canal-admin来获取配置
  • instance.properties里的canal.instance.mysql.slaveId,这个在canal 1.0.26版本之后就已变更为随机生成,确保HA模式下slaveId的唯一性

启动

目前conf下会包含canal.properties/canal_local.properties两个文件,考虑历史版本兼容性,默认配置会以canal.properties为主,如果要启动为对接canal-admin模式,可以有两种方式

  • 指定为local配置文件
  1. sh bin/startup.sh local
  • 变更默认配置,比如删除canal.properties,重命名canal_local.properties为canal.properties