Zookeeper安装
Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括: 配置维护,域名服务,分布式同步。
目标:封装好复杂易出错的关键服务,将简单易用的接口和性能高效,功能稳定的系统提供给用户。
1.官网下载zk
2.进行解压,进入conf目录,新建配置文件zoo.cfg
配置文件说明:
- dataDir 数据文件目录
- dataLogDir 日志文件目录
- clientPort 客户端连接端口
- tickTime 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳。单位毫秒
- initLimit 集群中follower服务器和leader服务器初始连接时能容忍的最多心跳数
- syncLimit 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数
- server.N=YYY:A:B 集群信息,N服务器编号,YYY服务器IP地址,A为LF通信端口,表示该服务器与集群中的leader交换的信息的端口;B为选举端口,标识选举新leader时服务器间相互通信的端口(当leader挂掉时,其余服务器相互通信,选择新的leader)
3. zookeeper的data/myid配置
zookeeper1 对应的是 1,zookeeper2 对应的是 2,zookeeper3 对应的是 3
4. 启动节点,完成对zk集群的搭建
5. zk的基本操作
- ls / 查看当前zk包含的所有内容
- create /zk mydata 创建一个新的znode节点“zk”以及与它关联的字符串
- get /zk 获取znode节点
- delete /zk 删除节点
- quit 退出客户端
注:安装jdk环境,且路径不包含特殊字符和空格
6. zk节点为什么是奇数个?
zk容错是指,当宕掉几个zk之后,剩下的个数必须大于宕掉的个数,也就是剩下的个数大于n/2,zk才可以继续使用,无论奇偶数都可以选举leader。是在最大容错服务器个数的条件下,节省资源,如果是6个zk,做多也就宕掉2个,没必要部署多余1个;集群中只有过半的机器正常工作,那么整个集群对外才是可用的。 2n和2n-1容忍是一样的,如果只部署2个zk,挂掉一个,剩下一个并不能构成quorum的大多数,部署2个比单机模式更不靠谱。
7. windows查看是否有2181端口
netstat -ano|findstr 2181
8. 搭建服务器注意的几点问题
zkServer.cmd文件末尾增加pause,避免闪退
‘wmic’ 不是内部或外部命令,也不是可运行的程序 解决方法
环境变量中增加%SystemRoot%;%SystemRoot%\system32;%SystemRoot%\System32\Wbem
kafka 安装
kafka是一种高吞吐量的分布式发布订阅系统
1. 官网下载kafka http://kafka.apache.org/downloads
2. 修改配置文件server.properties
- log.dirs 定义日志的生成的位置,"/" 或者 转义字符"\",这样会生成正确的路径
- zookeeper.connect 连接zk的ip以及端口
3. 启动kafka (确保zk已启动,需要zk这种分布式应用程序协调服务)
- 在kafka目录中执行 .\bin\windows\kafka-server-start.bat .\config\server.properties
- 注:不要关闭窗口,会按照默认在9092端口运行,并连接zookeeper默认端口2181
- 在kafka下windows目录下: 创建主题 kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test0811
- 在kafka下windows目录下: 创建生产者 kafka-console-producer.bat --broker-list localhost:9092 --topic test0811
- 在kafka下windows目录下: 创建消费者 kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test0811
操作日志的处理 kafka-run-class.bat文件中默认使用log4j.properties文件中的配置
更改配置可以将日志归档在一个文件下log4j.appender.kafkaAppender.File=C:/software/kafka/kafka_2.12-2.7.0/logs
消除不断生成日志的问题,就是同一天的不同时间不停生成 log4j.logger.kafka.controller=TRACE, controllerAppender
将trace改为INFO