kafka单机安装: kafka单机安装_Lucifer Zhao的博客-CSDN博客
1、CentOS Kafka 集群环境安装
1.1、安装 Kafka
和单机版安装一样,分别 192.168.1.101、192.168.1.102、192.168.1.103 三台机器安装好 Kafka 环境。
具体安装过程,参考 kafka单机安装_Lucifer Zhao的博客-CSDN博客
1.2、修改配置文件
分别修改 192.168.1.101、192.168.1.102、192.168.1.103 这 3 台机器上的配置文件
cd /usr/local/kafka/config
vim server.properties
修改配置文件中的 broker.id 分别为 101、102、103
broker.id=101
listeners 分 别 设 置 为 PLAINTEXT://192.168.1.101:9092 、 PLAINTEXT://192.168.1.102:9092 、 PLAINTEXT://192.168.1.103:9092
listeners=PLAINTEXT://192.168.1.101:9092
三台机器的 zookeeper.connect 都修改为以下内容:
zookeeper.connect=192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181
1.3、启动 3 个服务
1.3.1、分别启动 ZK
[root@rmq101 kafka_2.13-3.2.0]# nohup ./bin/zookeeper-server-start.sh config/zookeeper.properties >> zookeeper.nohup &
如果启动zookeeper时报错nohup
[root@rmq101 kafka_2.13-3.2.0]# nohup ./bin/zookeeper-server-start.sh config/zookeeper.properties >> zookeeper.nohup &
[1] 1579
[root@rmq101 kafka_2.13-3.2.0]# nohup: 忽略输入重定向错误到标准输出端
修改命令,在&前加上 2>&1
[root@rmq101 kafka_2.13-3.2.0]# nohup ./bin/zookeeper-server-start.sh config/zookeeper.properties >> zookeeper.nohup 2>&1 &
[2] 1929
检查zookeeper是否启动成功:
ps -ef|grep zookeeper
1.3.2、再分别启动 kafka
[root@rmq103 kafka_2.13-3.2.0]# ./bin/kafka-server-start.sh -daemon ./config/server.properties
如果启动有问题,通过下面命令启动kafka
[root@rmq102 kafka_2.13-3.2.0]# nohup ./bin/kafka-server-start.sh ./config/server.properties > /dev/null 2>&1
通过 ps -ef|grep kafka 命令可以查看kafka是否启动成功
PS:如果遇到 zk node exists 的问题,先把 brokers 节点删掉(临时解决方案)。
1.4、集群下创建 Topic
在 bin 目录下, 创建一个名为 lucifer-topic1 的 topic,只有一个副本,一个分区:
[root@rmq101 kafka_2.13-3.2.0]# sh bin/kafka-topics.sh --create --topic lucifer-topic1 --bootstrap-server 192.168.1.101:9092
查看已经创建的 topic:
[root@rmq101 kafka_2.13-3.2.0]# sh bin/kafka-topics.sh --bootstrap-server 192.168.1.101:9092 --describe --topic lucifer-topic1
1.5、集群下启动 Consumer
在一个新的远程窗口中:
[root@rmq101 ~]# cd /usr/local/kafka_2.13-3.2.0/bin
[root@rmq101 bin]# sh kafka-console-consumer.sh --bootstrap-server 192.168.1.101:9092,192.168.1.102:9092,192.168.1.103:9092 --topic lucifer-topic1 --from-beginning
1.6、集群下启动 Producer
打开一个新的窗口,在 kafka 解压目录下bin子目录下:
[root@rmq103 bin]# sh kafka-console-producer.sh --broker-list 192.168.1.101:9092,192.168.1.102:9092,192.168.1.103:9092 --topic lucifer-topic1
1.7、集群下 Producer 窗口发送消息
在生产者窗口(第四个命令窗口为生产者)输入 hello world 回车
2、基于 Canal 和 Kafka 实现数据同步
2.1 背景介绍
Canal 的作用:把自己“伪装”成一个 MySQL 的 Slave,不停同步 Master 的 binlog 数据,再把 binlog 数据以 TCP 或者 MQ 的方式(支持 Kafka、RabbitMQ、RocketMQ)发送给需要同步数据的项目
canal 项目地址: https://github.com/alibaba/canal
本案例中,我们需要同步的目标数据库是 192.168.1.102 上部署的数据库。
2.2 在目标数据库上创建用户和数据库
注意 145 上的数据库首先要开启 binlog,binlog-format 必须是 ROW
server-id=1
log-bin=/usr/local/mysql/log-bin/mysql-bin
binlog-format=ROW
用户和数据库创建
-- 创建 canal 专用的用户,用于访问 master 获取 binlog
CREATE USER canal IDENTIFIED BY '123456';
-- 给 canal 用户分配查询和复制的权限
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO canal@'%';
-- 刷新权限
FLUSH PRIVILEGES;
ALTER USER 'canal'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
-- 创建测试数据库
CREATE DATABASE `canaltest` CHARSET `utf8mb4` COLLATE `utf8mb4_unicode_ci`;
2.3 在192.168.1.101上安装 ZK 和 Kafka
参考文档:kafka单机安装_Lucifer Zhao的博客-CSDN博客
2.4 下载安装 Canal
以安装目录:/usr/local/canal 为例。 用目前稳定版本 1.1.4
cd /usr/local/
mkdir canal
cd canal
wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gz
tar -zxvf canal.deployer-1.1.4.tar.gz
如果下载慢的话,最好先下载到本地,再上传到linux服务器
需要修改的配置项: conf/canal.properties
canal.serverMode=kafka
canal.mq.servers = 192.168.1.101:9092
example/instance.properties
canal.instance.master.address=192.168.1.102:3306
canal.instance.dbUsername=canal
canal.instance.dbPassword=123456
# 新增
canal.instance.defaultDatabaseName=canaltest
# 这个 topic 会自动创建
canal.mq.topic=canal-topic
在 bin 目录下启动 canal
sh startup.sh
# 查看实例日志
tail -100f /usr/local/canal/logs/canal/canal.log
2.5 建表测试
在 canaltest 数据库随便建一张表,做增删改的操作。 在 kafka 服务器上消费这个 topic
./kafka-console-consumer.sh --bootstrap-server 192.168.8.147:9092 --topic canal-topic
可以成功消费到 canal 发送的消息