集群部署

ZooKeeper和Kafka集群部署

ZooKeeper集群部署

准备三台机器搭建集群,全部命令都在三台机器上运行java

基础环境配置

主机名配置

# hostnamectl set-hostname zookeeper1bash

# hostnamectl set-hostname zookeeper2服务器

# hostnamectl set-hostname zookeeper3ide

# bash    重启生效测试

配置文件

三台机器修改3d

# vi /etc/hostsserver

搭建集群

安装环境

三台机器安装JDK环境blog

# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel进程

查看java版本部署

# java -version

解压软件包 

将zookeeper压缩包上传到三台机器的/root目录,进行解压

# tar -zxvf zookeeper-3.4.14.tar.gz

修改配置文件

修改三台机器的配置文件

# cd zookeeper-3.4.14/conf 

# mv zoo_sample.cfg zoo.cfg

在文件最后加入三行

# vi zoo.cfg

initLimit:ZooKeeper集群模式下包含多个zk进程,其中一个进程为leader,余下的进程为follower。当follower最初与leader创建链接时,它们之间会传输至关多的数据,尤为是follower的数据落后leader不少。initLimit配置follower与leader之间创建链接后进行同步的最长时间

syncLimit:配置follower和leader之间发送消息,请求和应答的最大时间长度

tickTime:tickTime则是上述两个超时配置的基本单位,例如对于initLimit,其配置值为5,说明其超时时间为 2000ms * 5 = 10秒

server.id=host:port1:port2:其中id为一个数字,表示zk进程的id,这个id也是dataDir目录下myid文件的内容。host是该zk进程所在的IP地址,port1表示follower和leader交换消息所使用的端口,port2表示选举leader所使用的端口

dataDir:其配置的含义跟单机模式下的含义相似,不一样的是集群模式下还有一个myid文件。myid文件的内容只有一行,且内容只能为1 - 255之间的数字,这个数字亦即上面介绍server.id中的id,表示zk进程的id

建立myid文件

在三台机器上建立myid文件

# mkdir /tmp/zookeeper

# vi /tmp/zookeeper/myid

文件里的数字为zoo.cfg的指定值,第二台机器为2,第三台为3

启动服务

关闭三台机器的防火墙

# systemctl stop firewalld

启动zookeeper服务

# cd zookeeper-3.4.14/bin 

# ./zkServer.sh start

查看启动状态

# ./zkServer.sh status

两台机器为follower,一台为leader

Kafka集群部署 

kafka服务依赖于zookeeper服务。因此用搭建过zookeeper集群的三台机器进行构建kafka集群。全部命令都在三台机器上运行

搭建集群

解压软件包

将kafka压缩包上传到三台机器的/root目录,进行解压

# tar -zxvf kafka_2.11-1.1.1.tgz

修改配置文件

在三台机器上修改配置文件

# cd kafka_2.11-1.1.1/config

# vi server.properties

将配置文件中如下两行注释掉(在文本前加#)

#broker.id=0

#zookeeper.connect=localhost:2181

在文件底部添加配置

第一台机器

第二台机器

第三台机器

broker.id:每台机器不能同样

zookeeper.connect:有3台ZooKeeper服务器

listeners:在配置集群的时候,必须设置,否则之后的操做会报找不到leader的错误。

启动服务

在三台机器上启动服务

# cd kafka_2.11-1.1.1/bin

# ./kafka-server-start.sh -daemon ../config/server.properties

查看服务

# jps

第一台机器

第二台机器

第三台机器

测试服务 

# cd kafka_2.11-1.1.1/bin

在第一台机器建立topic命令

# ./kafka-topics.sh --create --zookeeper 192.168.37.12:2181 --replication-factor 1 --partitions 1 --topic test

成功输出“Created topic "test"

在第二台和第三台机器分别测试查看topic

# ./kafka-topics.sh --list --zookeeper 192.168.37.13:2181

# ./kafka-topics.sh --list --zookeeper 192.168.37.14:2181

成功输出test