一、tar包安装
先去github上下载相关tar包,地址https://github.com/alibaba/canal/releases
这里使用的版本是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
目录结构如下:
conf下面有一个canal_manager.sql,是admin需要的库表sql脚本,或者通过链接下载 。
conf下的application.yml 里面需要配置刚才的sql库信息;
执行bin目录下启动脚本之前,需要安装JDK,启动脚本里已经指定了JDK的目录,因此只需将JDK复制到该目录下即可:
安装好JDK之后启动,访问刚才配置的端口,默认8089,如果是阿里云的服务器,还需要将该端口加入到安全组。
先不配置,等canal-server安装启动后再进行配置。
1.2canal-server安装
admin和server可部署在不同的服务器上。
解压canal.deployer-1.1.4.tar.gz
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,并且状态是启动,如果是断开,请检查配置:
这个默认的server是单机版的,集群版一样,只不过需要先建集群,要有zookeeper。
接下来配置节点:
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地址;