Canal + Kafka安装

搭建zookeeper + kafka server
参考https://github.com/alibaba/canal/wiki/Canal-Kafka-RocketMQ-QuickStart

搭建container

docker run -itd --net none --hostname dev-kafka-145 --name dev-kafka-145 spagobi /bin/bash
pipework br0 dev-kafka-145 10.168.3.145/[email protected]
docker exec -it dev-kafka-145 bash

下载并安装

cd /opt

wget http://apache.claz.org/kafka/1.1.1/kafka_2.11-1.1.1.tgz
wget http://apache.cs.utah.edu/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz
tar -xvf kafka_2.11-1.1.1.tgz
tar -xvf zookeeper-3.4.12.tar.gz
mv kafka_2.11-1.1.1 kafka
mv zookeeper-3.4.12 zookeeper

设置zookeeper

vi /etc/profile

# ZooKeeper Env
export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
mv $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg
mkdir /opt/zookeeper/data
mkdir /opt/zookeeper/logs
vi $ZOOKEEPER_HOME/conf/zoo.cfg
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/logs
echo "1">/opt/zookeeper/data/myid

启动zookeeper

./zkServer.sh start

安装kafka

cd /opt/kafka
vim /opt/kafka/config/server.properties

zookeeper.connect=10.168.3.145:2181
listeners=PLAINTEXT://10.168.3.145:9092
advertised.listeners=PLAINTEXT://10.168.3.145:9092
log.dirs=/opt/kafka/logs
vim bin/kafka-server-start.sh
export JMX_PORT=9096 ##enable JMX使用 这行需要放在run class之前
vim bin/kafka-server-stop.sh 默认的不能找到kafka进程, 不能停止, 需要修改

第二行改为

PIDS=$(ps ax | grep -i ‘kafka\/bin’| grep java | grep -v grep | awk ‘{print $1}’)

启动kafka server

bin/kafka-server-start.sh config/server.properties &

搭建canal server
参考https://github.com/alibaba/canal/wiki/AdminGuide

搭建canal docker container

docker run -itd —net none —hostname dev-canal-144 —name dev-canal-144 spagobi /bin/bash
pipework br0 dev-canal-144 10.168.3.144/[email protected]
docker exec -it dev-canal-144 bash

下载canal(实际需要下载最新的源码,修改后进行编译, 参考另外一篇文章)

git clone [email protected]:alibaba/canal.git
cd canal
mvn clean install -Dmaven.test.skip -Denv=release
mv target/canal.deployer-1.1.1.tar.gz /opt/canal/
cd /opt/canal
tar -xvf canal.deployer-1.1.1.tar.gz

修改canal配置

vi conf/conf/canal.properties

canal.serverMode = kafka
canal.destinations= us_qa ##如果多个, 以逗号间隔, 默认是example
canal.auto.scan = false ##默认为true, 会自动扫描conf文件夹下子文件夹变动
canal.mq.servers=10.168.3.145:9092 ##kafka server的地址
mv conf/example conf/us_qa ##将默认的example文件夹改为us_qa
vi conf/us_qa/instance.properties

canal.instance.master.address=192.168.1.94:3306 ##解析的myql地址
canal.instance.master.journal.name=mysql-bin.000632 ##开始解析的日志
canal.instance.master.position=0 ##开始解析的日志位置
canal.instance.master.timestamp=1 ## 设1表示不指定
canal.instance.dbUsername=canal ##连接数据库的用户名
canal.instance.dbPassword=canal ##连接数据库的密码
canal.mq.topic=us_qa ##插入到kafka消息队列的topic名字

启动canal server

bin/startup.sh

canal + kafka集群配置

zookeeper集群

vi conf/zoo.cfg ##要加上集群中所有机器的地址

server.1=10.168.3.145:2888:3888
server.2=10.168.3.147:2888:3888
server.3=10.168.3.148:2888:3888

`echo "1">/opt/zookeeper/data/myid ##每个机器写对应上面自己的id

然后启动就可以了

bin/zkServer.sh start

查看状态

bin/zkServer.sh status

kafka集群

vi server.properties

broker.id=0 ##每个机器用自己的id
zookeeper.connect=10.168.3.145:2181,10.168.3.147:2181,10.168.3.148:2181 ##zookeeper集群地址
offsets.topic.replication.factor=2  ##设置kafka内消息内容的冗余量
transaction.state.log.replication.factor=2 ##设置kafka内消息内容的冗余量
default.replication.factor=2 ##设置kafka内消息内容的冗余量

然后启动就可以了

canal集群

vi conf/canal.properties

canal.id= 1
canal.ip=10.168.3.144
canal.instance.global.spring.xml = classpath:spring/default-instance.xml ##一定要使用default-instance, 默认是file-instance, canal分析的进展都写到文件里面去, 只能用在单机, default-instance使用zookeeper来保存进度信息
canal.zkServers=10.168.3.145:2181,10.168.3.147:2181,10.168.3.148:2181 ##zookeeper集群信息
canal.mq.servers=10.168.3.145:9092,10.168.3.147:9092,10.168.3.148:9092 ##kafka集群信息

查看当前分析进度:
在zookeeper上,

get /otter/canal/destinations/us_qa/1001/cursor

猜你喜欢

转载自blog.csdn.net/qq_22994783/article/details/85768469