Canal Admin


一、Canal Admin 安裝與配置

1.1 下載

wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz
tar zxvf canal.admin-$version.tar.gz

1.2 配置

conf/application.yml

server:
  port: 8089
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

spring.datasource:
  address: 192.168.137.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

1.3 初始化元數據庫

數據庫腳本位於 conf/canal_manager.sql

1.4 啟動

sh bin/stop.sh

如果啟動成功,可以通過 IP:8089 訪問,默認密碼:admin/123456

二、canal 配置

canal.properties 添加配置:

# 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 =

重啟 canal

或者不修改 canal.properties 配置,直接使用下面命令啟動(使用 canal_local.properties 的配置):

sh bin/startup.sh local

或者刪除 canal.properties 將 canal_local.properties 重命名為 canal.properties, 重啟 canal

注意:需要確保配置的 MySQL 賬戶具有 canal_manager 庫的插入權限,否則報錯:

ERROR com.alibaba.otter.canal.deployer.CanalLauncher - ## Something goes wrong when starting up the canal Server:
com.alibaba.otter.canal.common.CanalException: load manager config failed.
Caused by: com.alibaba.otter.canal.common.CanalException: requestGet for canal config error: Error[INSERT command denied to user 'canal'@'192.168.137.101' for table 'canal_node_server']

直接 canal.properties 添加配置的話,默認的 example 實例會失效:

com.alibaba.otter.canal.common.CanalException: instance : example config is not found

需要在 Canal Admin 手動添加實例

三、更進一步

3.1 Canal Admin 設計理念:

canal-admin的核心模型主要有:

  1. instance,對應 canal-server 里的 instance,一個最小的訂閱 MySQL 的隊列
  2. server,對應 canal-server,一個 server 里可以包含多個 instance
  3. 集群,對應一組 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 方法加密(記得去掉第一個首字母的星號):

select password('admin')

+-------------------------------------------+
| password('admin')                         |
+-------------------------------------------+
| *4ACFE3202A5FF5CF467898FC58AAB1D615029441 |
+-------------------------------------------+

canal.admin.user/canal.admin.passwd,這是一個雙向認證,canal-server 會以這個密文和 canal-admin做請求,同時canal-admin 也會以密碼原文生成加密串后和 canal-server 進行 admin 端口鏈接,所以這里一定要確保這兩個密碼內容的一致性

Canal Admin 后台登錄密碼也是使用 MySQL 的 password 方法加密的,用戶名密碼存儲在 canal_manager 庫的 canal_user 表

參考

  1. Canal Admin QuickStart
  2. Canal Admin安裝和使用
  3. Canal Admin Guide
  4. Canal Admin ServerGuide


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM