Zookeeper+Kafka集群安装配置
(Linux系统下安装步骤)
依赖环境搭建
安装 Java1.8 (三台机器统一)
1. 把Java的源文件包java_1.8.0_171放入 /opt目录中,编辑>vi /etc/profile 追加以下内容到文件中,保存:wq后退出
JAVA_HOME=/opt/java_1.8.0_171 export PATH=${JAVA_HOME}/bin:$PATH export CLASSPATH=.:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib/dt.jar |
2. 执行 >source /etc/profile 使环境变量立即生效
3. 验证>java -version,测试安装是否成功
创建用户
考虑到root权限比较大,尽量不要用root用户启动进程,建议新建admin用户
1. 创建用户 >useradd admin 此处三台机子的用户名必须相同
2. 设置密码 >passwd admin
>123456
3. 验证>ll,查看home下目录权限及所有信息
权限详解:https://blog.csdn.net/lv8549510/article/details/85406215
首字母d为文件夹,l为文件,权限分类如上图 r:4,w:2,x:1 (rwx :4+2+1=7 ,rw: 4+2=6,……) 1. 设置权限>chmod 777 文件目录/文件名 注:此目录下所有文件权限:文件路径/* 2. 设置文件夹/文件所有者 >chown -R admin:admin 文件目录/文件 3.所有服务器上,Zookeeper、Kafka、Flink需要有rwx三个权限,即在所有者登录后可以设置755权限 |
4. 切换admin用户操作(注:admin用户主目录在/home/admin下)
>su admin
Zookeeper安装
Zookeeper version:zookeeper-3.4.10.tgz
服务器:203.3.239.114,203.3.239.115,203.3.239.116(后续文档中IP用node1/node2/node3代替)
部署目录:/home/admin/zookeeper(后续文档中目录用$zookeeper_path代替)
!在java1.8安装成功后
!切换admin用户,并进入/home/admin目录下
1. 创建$zookeeper_path目录,解压zookeeper-3.4.10.tar包,放到$zookeeper_path目录下
>mkdir -p $zookeeper_path
>tar -xzvf zookeeper-3.4.10.tar.gz
2. 进入conf目录下,复制、修改zoo.cfg文件
>cd /zookeeper-3.4.10/conf
>cp zoo_sample.cfg zoo.cfg
修改zoo.cfg文件内容
tickTime = 2000 initLimit = 10 syncLimit = 5 dataDir = $zookeeper_path/data #数据所在目录 dataLogDir = $zookeeper_path/datalog #数据日志所在目录 server.1 = node1:2888:3888 #2888集群中内部通讯端口 server.2 = node2:2888:3888 server.3 = node3:2888:3888 |
3. 创建data和logs目录
>mkdir $zookeeper_path/data
>mkdir $zookeeper_path/datalog
4. 在$zookeeper_pat/data目录下,创建myid文件,并写入1(注:不同节点的myid序号不同,与步骤2中的server配置保持严格一致)
>echo “1”>> $zookeeper_path/data/myid
5. 复制zookeeper目录到node2,node3服务器上
>scp -r $zookeeper_path admin@node2:/home/admin
>scp -r $zookeeper_path admin@node3:/home/admin
并修改data/myid文件内容
node2:$zookeeper_path/data/myid内容改为2
node3:$zookeeper_path/data/myid内容改为3
6. 在node1,node2,node3服务器上进入 $zookeeper_path/zookeeper-3.4.10目录下,执行脚本启动Zookeeper集群
启动:>./bin/zkServer.sh start
停止:>./bin/zkServer.sh stop
查看状态:>./bin/zkServer.sh status
7. 验证
1) 在node1,node2,node3上执行>./bin/zkServer.sh status查看状态命令,会打印如下内容,则说明集群部署成功
JMX enabled by default Using config:/opt/apache/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode:leader或者follower |
2) >netstat -tunl | grep 2181,发现2181端口正在运行即可
3) >./bin/zkCli.sh -server node1:2181进入zookeeper集群,执行>ls /,弹出集群根目录([zookeeper])表示部署完成,并用quit突出
Kafka安装
Kafka version:kafka_2.12-2.3.1.tgz
服务器:203.3.239.114,203.3.239.115,203.3.239.116(后续文档中IP用node1/node2/node3代替)
部署目录:/home/admin/kafka(后续文档中目录用$kafka _path代替)
!在Zookeeper安装成功后(Kafka使用 Zookeeper来保存 broker 、topic和分区的元数据信息)
1. 创建$kafka _path目录,并解压kafka_2.12-2.3.1.tgz到此目录下
>mkdir $kafka _path
> tar -xzvf kafka_2.12-2.3.1.tgz
2. 进入部署目录,修改config/目录下的server.properties
- Kafka 1:
borker.id = 1 #三个服务器互不相同即可 advertised.listeners = PLANTEXT://node1:9092 log.dirs = $kafka_path/data-log zookeeper.connect = zknode1:2181,zknode2:2181,zknode3:2181 zookeeper.connection.timeout.ms = 6000 |
- Kafka 2:
borker.id = 2 advertised.listeners = PLANTEXT://node2:9092 log.dirs = $kafka_path/data-log zookeeper.connect = zknode1:2181,zknode2:2181,zknode3:2181 zookeeper.connection.timeout.ms = 6000 |
- Kafka 3:
borker.id = 3 advertised.listeners = PLANTEXT://node3:9092 log.dirs = $kafka_path/data-log zookeeper.connect = zknode1:2181,zknode2:2181,zknode3:2181 zookeeper.connection.timeout.ms = 6000 |
3. 在node1,node2,node3服务器上,启动运行kafka集群脚本
启动:>kafka-server-start.sh -daemon $kafka_path/kafka_2.12-2.3.1/config/server.properties
停止:>kafka-server-stop.sh
4. 验证
1) 在node1,node2,node3服务器上,执行>netstat –tunl | grep 9092,查看9092端口是否启动成功
2) 创建topic,用于接收信息
>./bin/kafka-topics.sh --create --bootstrap-server node1:9092,node2:9092,node3:9092 --topic <topic-name> --partitions <partitions_number> --replication-factor < replication-factor_number>
- 创建cb_transing为例
<topic-name> |
cb_transing |
主题名称 |
<partitions_number> |
3 |
分区数 |
< replication-factor_number> |
3 |
副本数 |
3) 查看topic是否创建成功
>./bin/kafka-topic.sh --list --bootstrap-server node1:9092,node2:9092,node3:9092
4) 生产消息
>./bin/kafka-console-producer.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --topic cb_transing
5) 消费消息
>./bin/kafka-console-consumer.sh –from-beginning --bootstrap-server node1:9092,node2:9092,node3:9092 --topic cb_transing
可以成功生产消息,并可以接收,则kafka安装成功!!!