阿里巴巴Canal之Canal Admin
参考:https://github.com/alibaba/canal/wiki/Canal-Admin-QuickStart
参考:https://github.com/alibaba/canal/wiki/Canal-Admin-Guide
背景
canal-admin
设计上是为canal提供整体配置管理、节点运维等面向运维的功能,提供相对友好的WebUI操作界面,方便更多用户快速和安全的操作
准备
canal-admin
的限定依赖:
- MySQL,用于存储配置和节点等相关数据
- canal版本,要求
>=1.1.4
(需要依赖canal-server提供面向admin的动态运维管理接口)
部署
(1)下载canal-admin
,访问 release 页面,选择需要的包下载,如以 1.1.4 版本为例
wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz
(2)解压缩
mkdir /tmp/canal-admin
tar zxvf canal.admin-$version.tar.gz -C /tmp/canal-admin
解压完成后,进入/tmp/canal
目录,可以看到如下结构
drwxr-xr-x 6 appblog staff 204B 8 31 15:37 bin
drwxr-xr-x 8 appblog staff 272B 8 31 15:37 conf
drwxr-xr-x 90 appblog staff 3.0K 8 31 15:37 lib
drwxr-xr-x 2 appblog staff 68B 8 31 15:26 logs
(3)配置修改
vim 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: admin
(4)初始化元数据库
mysql -h127.0.0.1 -uroot -p
# 导入初始化SQL
> source conf/canal_manager.sql
- 初始化SQL脚本里会默认创建
canal_manager
的数据库,建议使用root等有超级权限的账号进行初始化 canal_manager.sql
默认会在conf目录下,也可以通过链接下载 canal_manager.sql
(5)启动
sh bin/startup.sh
查看 admin 日志
vim logs/admin.log
2019-08-31 15:43:38.162 [main] INFO o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8089 (http)
2019-08-31 15:43:38.180 [main] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8089"]
2019-08-31 15:43:38.191 [main] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat]
2019-08-31 15:43:38.194 [main] INFO org.apache.catalina.core.StandardEngine - Starting Servlet Engine: Apache Tomcat/8.5.29
....
2019-08-31 15:43:39.789 [main] INFO o.s.w.s.m.m.annotation.ExceptionHandlerExceptionResolver - Detected @ExceptionHandler methods in customExceptionHandler
2019-08-31 15:43:39.825 [main] INFO o.s.b.a.web.servlet.WelcomePageHandlerMapping - Adding welcome page: class path resource [public/index.html]
此时代表canal-admin
已经启动成功,可以通过 http://127.0.0.1:8089/ 访问,默认密码:admin/123456
(6)关闭
sh bin/stop.sh
(7)canal-server
端配置
使用canal_local.properties
的配置覆盖canal.properties
# register ip
canal.register.ip =
# canal admin config
canal.admin.manager = 127.0.0.1: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 =
启动admin-server
即可
或在启动命令中使用参数:sh bin/startup.sh local
指定配置
设计理念
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的操作介绍
集群运维
创建集群
集群变更
配置项:
- 修改集群/删除集群,属于基本的集群信息维护和删除
- 主配置,主要是指集群对应的
canal.properties
配置,设计上一个集群的所有server会共享一份全局canal.properties
配置 (如果有个性化的配置需求,可以创建多个集群) - 查看server,主要是指查看挂载在这个集群下的所有server列表
Server运维
新建Server
配置项:
- 所属集群,可以选择为单机 或者 集群。一般单机Server的模式主要用于一次性的任务或者测试任务
- Server名称,唯一即可,方便自己记忆
- Server Ip,机器ip
- admin端口,canal 1.1.4版本新增的能力,会在
canal-server
上提供远程管理操作,默认值11110
- tcp端口,canal提供netty数据订阅服务的端口
- metric端口, promethues的exporter监控数据端口 (未来会对接监控)
Server变更
配置项:
- 配置,主要是维护单机模式的
canal.properties
配置,注意:挂载到集群模式的server,不允许单独编辑server的canal.properties
配置,需要保持集群配置统一 - 修改/删除,主要是维护server的基本属性,比如名字和ip、port
- 启动/停止,主要是提供动态启停server的能力,比如集群内这个机器打算下线了,可以先通过停止释放instance的运行,集群中的其他机器通过HA就会开始接管任务
- 日志,查看server的根日志,主要是
canal/canal.log
的最后100行日志 - 详情,主要提供查询在当前这个server上运行的instance列表,以server维度方便快速做instance的启动、停止操作。比如针对集群模式,如果server之间任务运行负载不均衡,可以通过对高负载Server执行部分Instance的停止操作来达到均衡的目的
Instance运维
创建Instance
instance配置比较简单,主要关注:
- 资源关联,比如挂载到具体的单机 或 集群
instance.properties
配置维护,可以载入默认模板进行修改
Instance变更
配置项:
- 修改,主要就是维护
instance.properties
配置,做了修改之后会触发对应单机或集群server上的instance做动态reload - 删除,相当于直接执行
instance stop
,并执行配置删除 - 启动/停止,对instance进行状态变更,做了修改会触发对应单机或集群server上的instance做启动/停止操作
- 日志,主要针对instance运行状态时,获取对应instance的最后100行日志,比如
example/example.log
系统运维
主要是涉及canal-admin
的元数据配置,配置都在二进制包解压之后的conf目录下
-rwxr-xr-x 1 appblog staff 403B 8 31 15:43 application.yml
-rwxr-xr-x 1 appblog staff 5.0K 8 31 14:56 canal-template.properties
-rwxr-xr-x 1 appblog staff 3.8K 8 30 22:14 canal_manager.sql
-rwxr-xr-x 1 appblog staff 2.0K 8 31 14:56 instance-template.properties
-rwxr-xr-x 1 appblog staff 1.5K 8 30 22:14 logback.xml
application.yml
,Spring Boot默认依赖的配置,比如链接数据库的账号密码,链接canal-server
admin管理的账号密码logback.xml
,日志配置canal-template.properties
,canal配置的默认模板,针对canal-server
开启自动注册时,会选择这个默认模板instance-template.properties
,instance配置的默认模板
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/25/alibaba-canal-canal-admin/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论