- 每天服务器都要安装jdk1.8环境
- 安装Zookeeper集群环境
- 安装kafka集群环境
- 运行测试
服务器环境准备
- 使用vmare虚拟三台服务器
centos6.5
A: 192.168.9.200 B: 192.168.9.201 C: 192.168.9.202
安装jdk1.8环境
- jdk-8u60-linux-x64.tar.gz,网盘下载地址:https://pan.baidu.com/s/1TW_Q0RyXPnLyAYLozf-5yg
提取码:p1sb - 安装参考文章
zookeeper集群搭建
Zookeeper集群最好是奇数个节点,根据选举机制,半数以上的票数才能当选为leader(假如有两个节点,你选我,我选你,根据半数以上票数规则,是无法确定集群中到底是你来当leader还是我来当.
-
tar zxvf zookeeper-3.4.10.tar.gz mv zookeeper-3.4.10.tar.gz zookeeper cd zookeeper/conf mv zoo_sample.cfg zoo.cfg
-
修改zoo.cfg两处 vim zoo.cfg
//数据目录,注意:在/usr/local/zookeeper/data dataDir=/usr/local/zookeeper/data //日志目录,没有则自行创建 dataLogDir=/usr/local/zookeeper/logs # zookeeper服务默认端口 clientPort=2181 # zookeeper最近的版本中有个内嵌的管理控制台是通过jetty启动,该服务默认端口是8080,这里可以自行配置 admin.serverPort=2182 //在文件末尾追加如下内容:(集群节点列表) server.0=192.168.9.200:2888:3888 server.1=192.168.9.201:2888:3888 server.2=192.168.9.202:2888:3888
端口2888:Zookeeper服务之间的通信端口,比如leader和follower之间的通信
端口3888:Zookeeper选举leader用的端口 -
创建data和日志目录并创建
myid
cd /usr/local/zookeeper/ mkdir data mkdir logs cd data vim myid //将节点0标识写入myid文件中 echo 0 > myid
由于Zookeeper集群中的每一个Zk服务都会有一个唯一标识自己的ID(zk进程ID),这个ID应用在myid和zoo.cfg两个文件中,其中myid文件中存放的是当前Zk服务的标识ID,而zoo.cfg中以server.ID来指定当前的Zk服务进程对应的是哪一台主机,当Zk服务启动的时候,会首先读取myid中的id标识,拿着这个id再去zoo.cfg文件中进行匹配查找,查找的目的是为了弄清楚当前Zk服务在整个ZooKeeper集群中的位置.
-
修改环境变量
vim /etc/profile### zookeeper export ZOOKEEPER_HOME=/usr/local/zookeeper export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
source /etc/profile
-
修改防火墙启动端口, vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT # 客户端连接zookeeper服务端的默认端口为218 -A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT # kafka的默认端口 -A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT
重启防火墙
/etc/init.d/iptables restart
分别在B、C两台主机上的ZK安装目录下的data目录下创建
myid
文件,并依次写入值:1,2
.-
分别启动三台zookeeper服务。
//启动 zkServer.sh start //查看状态 zkServer.sh status
kafka 集群搭建
kafka_2.11-1.0.0.tgz,下载地址:http://kafka.apache.org/downloads
-
解压缩后,移动目录并修改名称
mv kafka_2.11-1.0.0 /usr/local/kafka
-
修改配置文件
cd kafka/config, vim server.properties
// kafka节点位移标识 broker.id=0 //日志文件目录(需自行创建) log.dirs=/usr/local/kafka/logs //kafka监听主机端口 listeners=PLAINTEXT://192.168.9.200:9092 //zookeeper集群配置 zookeeper.connect=192.168.9.200:2181,192.168.9.201:2181,192.168.9.202:2181
-
配置环境变量
### kafka export KAFKA_HOME=/usr/local/kafka export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$KAFKA_HOME/bin:$PATH
source /etc/profile
克隆B和C节点
- 通过在vmware中克隆A, 得到B和C节点,注意:克隆完毕后网卡的MAC和IP都是一样的,所以需要登陆到B和C, 分别修改MAC和IP, 通过
ifconfig -a eth1
获取到MAC,然后修改将其修改,IP修改分别修改为:B:192.168.9.201
, C:192.168.9.202
; - 修改B机的
zookeeper
和kafka
集群信息;//zookeeper vim /usr/local/zookeeper/data/myid 内容修改为: `1` //kafka vim /usr/local/kafka/config/server.properties broker.id=1 listeners=PLAINTEXT://192.168.9.201:9092
- 修改C机的
zookeeper
和kafka
集群信息;//zookeeper vim /usr/local/zookeeper/data/myid 内容修改为: `2` //kafka vim /usr/local/kafka/config/server.properties broker.id=2 listeners=PLAINTEXT://192.168.9.202:9092
- 三台节点分别启动zookeeper
//启动 zkServer.sh start //查看状态,可知其中一个是leader, 两外两个是follwer zkServer.sh status
- 三台节点分别启动kafka
kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties //查看kafka是否启动成功 ps aux | grep kafka 或 netstat -tunlp | grep 9092
- 创建kafka的topic主题
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 -partitions 3 --topic myTest
-
myTest
主题分区
为3
,会在kafka集群中三个节点的日志kafka/logs/
中看到//以下三个日志目录 myTest代表主题名,数字0/1/2分别代表三个节点标识 //注意这三个节点标识于brokerId不一样, // 是kafka创建主题时特定的算法平均将三个分区物理文件放入到三个节点 //日志目录中的 00000000000000000000.log 就是真实的消息内容 `myTest-0` `myTest-1` `myTest-2`
使用ZooInspector可视化工具查看kafka注册到Zookeeper信息
- 参考文章
- 启动方式步骤,(我的windows jar包路径:D:\lxf\Program Files\ZooInspertor\build)
java -jar zookeeper-dev-ZooInspector.jar
-
连接zookeeper, 注意将超时时间session Timeout 设置长一些;
-
查看kafka集群及分区信息