Canal中间件使用

一、tar包安装

先去github上下载相关tar包,地址https://github.com/alibaba/canal/releases
Canal中间件使用_第1张图片
这里使用的版本是v1.1.4的稳定版本,虽然有v1.1.5,但是是alpha版的。

1.1 canal-admin安装

canal-admin是方便操作和维护的web-ui,1.1.4的版本之前是没有操作界面的,只能进入服务器后台维护。
canal-admin的限定依赖:
1、MySQL库,用于存储配置和节点等相关数据,下面有sql脚本可以直接创建;
canal版本,要求>=1.1.4 (需要依赖canal-server提供面向admin的动态运维管理接口);
将下载的tar包传到服务器后者使用命令直接拉取:

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

解压

tar zxvf canal.admin-1.1.4.tar.gz

目录结构如下:
Canal中间件使用_第2张图片
conf下面有一个canal_manager.sql,是admin需要的库表sql脚本,或者通过链接下载 。
conf下的application.yml 里面需要配置刚才的sql库信息;
执行bin目录下启动脚本之前,需要安装JDK,启动脚本里已经指定了JDK的目录,因此只需将JDK复制到该目录下即可:
Canal中间件使用_第3张图片
安装好JDK之后启动,访问刚才配置的端口,默认8089,如果是阿里云的服务器,还需要将该端口加入到安全组。
Canal中间件使用_第4张图片
Canal中间件使用_第5张图片
Canal中间件使用_第6张图片
先不配置,等canal-server安装启动后再进行配置。

1.2canal-server安装

admin和server可部署在不同的服务器上。
解压canal.deployer-1.1.4.tar.gz
Canal中间件使用_第7张图片
conf下有两个全局配置文件,canal.properties和canal_local.properties,如果不需要admin,可以直接使用canal.properties,1.1.4之前的版本也只有canal.propertie,需要和admin结合使用,则启动时应该读取canal_local.properties进行启动,可以将canal.properties删除,然后将canal_local.properties重命名为canal.properties,或者启动时指定./startup.sh local。

canal_local.properties配置内容:

# register ip
canal.register.ip =127.0.0.1

# canal admin config
canal.admin.manager = 127.0.0.1:8089   #admin的访问地址,两个在同一台服务器,直接配置127.0.0.1
canal.admin.port = 11110               #通信交互端口,和8089不一样
canal.admin.user = admin               #admin登录账号
canal.admin.passwd = 6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9  #admin登录密码,mysql5方式加密
# admin auto register
canal.admin.register.auto = true
canal.admin.register.cluster =        #填写admin所在的服务器ip,在本机可不填

启动即可。
成功后,在web页面会自动出现一个server,并且状态是启动,如果是断开,请检查配置:
Canal中间件使用_第8张图片
这个默认的server是单机版的,集群版一样,只不过需要先建集群,要有zookeeper。
接下来配置节点:
Canal中间件使用_第9张图片
instance实例建好之后,会自动在canal-server下的conf下创建同样的文件夹及配置,和老的版本相同。刚建完的instance是停止状态,需要手动启动下,所有instance创建好之后最好重启下server。之后就可以将接收到的binlog日志解析并发送消息了,消费端是公司自行封装的,不方便透露。

二、镜像安装

容器运行,官网已经有详细的说明,这里贴一下在k8s运行的yml文件。
canal-admin:

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: '1'
  generation: 1
  labels:
    app: r3-canal-admin
  name: r3-canal-admin
  namespace: common
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: r3-canal-admin
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: r3-canal-admin
    spec:
      containers:
        - env:
            - name: server.port
              value: '8089'
            - name: spring.datasource.address
              value: rm-uf6t96rb938k78rm7.mysql.rds.aliyuncs.com
            - name: spring.datasource.database
              value: canal_manager
            - name: spring.datasource.username
              value: canal
            - name: spring.datasource.password
              value: Burgeon123
          image: 'canal/canal-admin:v1.1.4'
          imagePullPolicy: Always
          name: r3-canal-admin
          resources:
            requests:
              cpu: 250m
              memory: 512Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

环境变量说明:主要是数据库参数和运行端口,不填都没关系的,端口会走默认,数据库会自动建一个;
canal-server:

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: '1'
  generation: 1
  labels:
    app: r3-canal-server
  name: r3-canal-server
  namespace: common
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: r3-canal-server
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: r3-canal-server
    spec:
      containers:
        - env:
            - name: canal.admin.manager
              value: '192.168.0.44:8089'
            - name: canal.admin.port
              value: '11110'
          image: 'canal/canal-server:v1.1.4'
          imagePullPolicy: Always
          name: r3-canal-server
          resources:
            requests:
              cpu: 250m
              memory: 512Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

环境变量说明:和admin关联的信息,交互端口和admin的ip地址;

你可能感兴趣的:(Java)