为什么像 Solr 或 Kafka 这样的分布式系统需要 ZooKeeper,而像 Cassandra 这样的分布式系统不需要呢?
想了解Zookeeper中的ServiceRegistry和Discovery在微服务方面的区别
我在相关节点上运行了 Zookeeper 守护进程,并尝试启动 kafka 代理,但出现以下错误:
FATAL [Kafka Server 13], Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
java.lang.NumberFormatException: For input string: "2181""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at org.apache.zookeeper.client.ConnectStringParser.<init>(ConnectStringParser.java:72)
at org.apache.zookeeper.ZooKeeper.<init>(ZooKeeper.java:443)
at org.apache.zookeeper.ZooKeeper.<init>(ZooKeeper.java:380)
at org.I0Itec.zkclient.ZkConnection.connect(ZkConnection.java:64)
at org.I0Itec.zkclient.ZkClient.connect(ZkClient.java:876)
at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:98)
at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:84)
at kafka.server.KafkaServer.initZk(KafkaServer.scala:157)
at kafka.server.KafkaServer.startup(KafkaServer.scala:82)
at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:29)
at kafka.Kafka$.main(Kafka.scala:46)
at kafka.Kafka.main(Kafka.scala)
Run Code Online (Sandbox Code Playgroud)
我的服务器属性
broker.id=13
port=9092
host.name=node013
num.network.threads=3
num.io.threads=8
zookeeper.connect="node014:2181,node135:2181,node136:2181"
zookeeper.connection.timeout.ms=6000
Run Code Online (Sandbox Code Playgroud)
和zookeeper.properties
dataDir=/tmp/zookeeper
clientPort=2181
maxClientCnxns=0
Run Code Online (Sandbox Code Playgroud)
我已尝试但未能弄清楚为什么错误日志在端口属性中显示额外的“。知道可能导致问题的原因吗?
我们之前有三个 Clickhouse 节点在 Zookeeper 中完美同步,直到其中一个节点丢失。
Clickhouse 节点完全按照以前的方式重建(使用 Ansible),并create table运行相同的命令,导致出现以下错误。
命令:
CREATE TABLE ontime_replica ( ... )
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/ontime_replica', '{replica}', FlightDate, (Year, FlightDate), 8192)
Run Code Online (Sandbox Code Playgroud)
错误是:
Received exception from server:
Code: 253. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Replica /clickhouse/tables/01/ontime_replica/replicas/clickhouse1 already exists..
Run Code Online (Sandbox Code Playgroud)
我们目前使用的是 Zookeeper 版本 3.4.10,我想知道是否有办法删除 Zookeeper 中的现有副本,或者简单地让 Zookeeper 知道这是现有副本的新版本。
先感谢您!
我有三个不同的节点,每个节点上都有 docker 和 Ubuntu。我可以在本地docker上运行zookeeper服务器(我的意思是没有任何集群配置),但我想用这三个节点创建kafka集群;事实上,我在每个节点上安装了 docker,并加载了 Ubuntu。我"zookeeper.properties"在 docker 环境中配置“150.20.11.157”,如下所示:
dataDir=/tmp/zookeeper/data
tickTime=2000
initLimit=10
syncLimit=5
server.1=0.0.0.0:2888:3888
server.2=150.20.11.134:2888:3888
server.3=150.20.11.137:2888:3888
clientPort=2186
Run Code Online (Sandbox Code Playgroud)
对于节点150.20.11.134,docker环境中的“zookeeper.properties”文件是这样的:
dataDir=/tmp/zookeeper/data
tickTime=2000
initLimit=10
syncLimit=5
server.1=150.20.11.157:2888:3888
server.2=0.0.0.0:2888:3888
server.3=150.20.11.137:2888:3888
clientPort=2186
Run Code Online (Sandbox Code Playgroud)
对于节点150.20.11.137,docker环境中的“zookeeper.properties”文件是这样的:
dataDir=/tmp/zookeeper/data
tickTime=2000
initLimit=10
syncLimit=5
server.1=150.20.11.157:2888:3888
server.2=150.20.11.134:2888:3888
server.3=0.0.0.0:2888:3888
clientPort=2186
Run Code Online (Sandbox Code Playgroud)
另外,我为节点 150.20.11.157 设置“server.properties”:
broker.id=0
port=9092
listeners = PLAINTEXT://150.20.11.157:9092
log.dirs=/tmp/kafka-logs
zookeeper.connect=150.20.11.157:2186,150.20.11.134:2186,
150.20.11.137:2186
Run Code Online (Sandbox Code Playgroud)
节点 150.20.11.134 的“server.properties”为:
broker.id=1
port=9092
listeners = PLAINTEXT://150.20.11.134:9092
log.dirs=/tmp/kafka-logs
zookeeper.connect=150.20.11.157:2186,150.20.11.134:2186,
150.20.11.137:2186
Run Code Online (Sandbox Code Playgroud)
节点 150.20.11.137 的“server.properties”为:
broker.id=2
port=9092
listeners = PLAINTEXT://150.20.11.137:9092
log.dirs=/tmp/kafka-logs
zookeeper.connect=150.20.11.157:2186,150.20.11.134:2186,
150.20.11.137:2186
Run Code Online (Sandbox Code Playgroud)
问题是当我在每个节点的docker上运行zookeeper服务器时。我收到此错误:
[2019-01-16 12:45:54,588] 信息 从以下位置读取配置:./config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig) [2019-01-16 12:45:54,601] INFO 解析主机名:172.28.10.137 到地址:/172.28.10.137 …
我正在致力于在 Prod 中扩展 kafka 集群。Confluence 提供了添加 kafka 代理的简单方法。但是,我如何知道如何与 Kafka 一起扩展 Zookeeper。比例应该是多少?现在我们有 5 个 Zookeeper 节点用于 5 个 kafka 代理。如果我有 10 个 kafka 代理,应该有多少个 Zookeeper 节点?
我已经能够在独立模式下使用 Docker 部署 ZooKeeper,运行单个 ZooKeeper 容器,但我现在尝试使用 Ansible 部署三个容器化 ZooKeeper,并且似乎无法让系统以复制模式启动。
我正在使用受良好支持的Docker 版本的 ZooKeeper,并尝试按照文档的建议设置ZOO_MY_ID和ZOO_SERVERS,尽管在尝试部署容器时它们很快就会失败并出现错误Invalid config,并且似乎还没有设置myid复制所需的变量模式。
错误的形式如下,您还会看到其他一些服务器的地址无法解析(尽管我可以很好地通过 ssh 进入这些机器,并且 Ansible 成功部署到每台机器 - 只是容器被卡住了)陷入崩溃循环)。
从泊坞窗日志:
Using config: /conf/zoo.cfg
2019-08-22 07:07:22,188 [myid:] - INFO [main:QuorumPeerConfig@133] - Reading configuration from: /conf/zoo.cfg
2019-08-22 07:07:22,192 [myid:] - INFO [main:QuorumPeerConfig@375] - clientPort is not set
2019-08-22 07:07:22,192 [myid:] - INFO [main:QuorumPeerConfig@389] - secureClientPort is not set
2019-08-22 07:07:22,198 [myid:] - ERROR [main:QuorumPeerMain@89] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Address …Run Code Online (Sandbox Code Playgroud) 我听说 Kafka 将在即将发布的版本中移除 Zookeeper。
到目前为止,Kafka 使用 Zookeeper 来处理元数据、选择控制器以及协调代理和集群拓扑。
我很好奇Kafka将如何在没有zookeeper的情况下处理zookeeper的角色。
我想知道没有zookeeper的Kafka内部的逻辑。
我正在尝试在 Ubuntu 18.04LTS Azure VM 上设置 Zookeeper 3.4.10。
根据ZooKeeper 管理员指南 “Java 堆大小不正确。您应该特别注意正确设置 Java 最大堆大小。特别是,您不应该造成 ZooKeeper 交换到磁盘的情况...”
该指南没有给出如何设置最大堆大小的说明。我已经做了一些搜索,并找到了在 Zookeeper/conf 目录中创建 java.env 的建议。我已经做到了这一点,并尝试使用我在研究过程中发现的两种不同方法来设置变量:
尝试#1:
export JVMFLAGS="-Xmx6144m"
Run Code Online (Sandbox Code Playgroud)
尝试#2
#!/bin/bash
export CLASSPATH="~/zookeeper-3.4.10/conf/log4j.properties"
export JVMFLAGS="-Xmx6144m"
Run Code Online (Sandbox Code Playgroud)
进行这些更改并重新启动 Zookeeper 后,我使用以下命令检查了 Java 堆大小:
java -XshowSettings:vm
Run Code Online (Sandbox Code Playgroud)
并且最大堆大小没有改变。
为 Zookeeper 配置最大堆的正确步骤是什么?
我们在集群中构建了18台kafka机器,kafka版本是1.0,在linux机器上
目前我们有 3 个 Zookeeper 服务器,但我们不知道 3 个 Zookeeper 服务器是否足以容纳 18 台 Kafka 机器
请告知我们需要多少个 Zookeeper 服务器来为 18 台 Kafka 机器提供服务?
apache-zookeeper ×10
apache-kafka ×5
docker ×2
ansible ×1
cassandra ×1
clickhouse ×1
java ×1
solr ×1