前言
canal-admin设计上是为canal提供整体配置管理、节点运维等面向运维的功能,提供相对友好的WebUI操作界面,方便更多用户快速和安全的操作
快速部署
-
下载
访问releases页面下载
-
解压后进入conf目录修改application.yml
server: port: 8089 spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 spring.datasource: address: 127.0.0.1:3306 database: canal_manager username: canal password: canal driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://${spring.datasource.address}/${spring.datasource.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false hikari: maximum-pool-size: 30 minimum-idle: 1 canal: adminUser: admin adminPasswd: 123456 #密码长度不能低于6位
-
初始化元数据库
进入conf目录,执行canal_manager.sql中语句
-
赋予canal用户权限,否则后面创建集群会插入数据失败
GRANT ALL PRIVILEGES ON canal_manager.* TO 'canal'@'%'; FLUSH PRIVILEGES;
-
启动
startup.bat
-
访问http://localhost:8089,用户名和密码为application.yml配置中的admin/123456
运维配置
设计理念
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地址,以及访问配置的账号、密码即可)
理解了这一层基本概念之后,就开始WebUI的操作介绍.
集群运维
- 创建集群
- 添加配置
server运维
- 添加server
节点1
节点2
instance运维
- 创建Instance
canal服务端配置
- 节点192.168.220.133配置
-
使用canal_local.properties配置覆盖canal.properties
# register ip canal.register.ip = 192.168.220.133 # canal admin config canal.admin.manager = 192.168.220.1:8089 canal.admin.port = 11110 canal.admin.user = admin canal.admin.passwd = 6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 # admin auto register canal.admin.register.auto = false canal.admin.register.cluster = prod canal.admin.register.name = 192.168.220.133
canal.admin.passwd的配置需要进入canal_manager数据库中canal_user表中查看
注意:canal.admin.register.cluster和canal.admin.register.name 必须配置并且跟刚刚添加的集群中的名字一样,否则canal服务会因为找不到配置文件而启动失败 -
启动
./startup.sh local
-
启动成功后则可以看到如图所示结果:
-
- 节点192.168.220.130配置
-
使用canal_local.properties配置覆盖canal.properties
# register ip canal.register.ip = 192.168.220.130 # canal admin config canal.admin.manager = 192.168.220.1:8089 canal.admin.port = 11110 canal.admin.user = admin canal.admin.passwd = 6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 # admin auto register canal.admin.register.auto = false canal.admin.register.cluster = prod canal.admin.register.name = 192.168.220.130
-
启动
./startup.sh local
-
启动成功后则可以看到如图所示结果:
-
- 部署好之后,instance实例也已自动启动,并且部署在192.168.220.133节点上
- 最后启动客户端,修改127.0.0.1:3306中的表数据,成功接收到数据