我想使用Kafka 10.2附帶的嵌入式Zookeeper 3.4.9,而不是單獨安裝Zookeeper。每個卡夫卡經紀人將始終在本地主機上擁有1:1 Zookeeper。單獨的zookeeper安裝還是不使用kafka 10.2?
因此,如果我在主機A,b,C,D和E上有5個代理,每個代理運行一個Kafka和Zookeeper實例,那麼只需運行Kafka提供的Zookeeper就足夠了?
什麼缺點或配置限制,如果沒有任何嵌入式3.4.9 Zookeper已經較單機版?
我想使用Kafka 10.2附帶的嵌入式Zookeeper 3.4.9,而不是單獨安裝Zookeeper。每個卡夫卡經紀人將始終在本地主機上擁有1:1 Zookeeper。單獨的zookeeper安裝還是不使用kafka 10.2?
因此,如果我在主機A,b,C,D和E上有5個代理,每個代理運行一個Kafka和Zookeeper實例,那麼只需運行Kafka提供的Zookeeper就足夠了?
什麼缺點或配置限制,如果沒有任何嵌入式3.4.9 Zookeper已經較單機版?
這是幾個理由不上同一個盒子卡夫卡經紀人運行飼養員。
他們規模不同
5 ZK和5卡夫卡的作品,但6:6 11:11沒有。即使是相當大的Kafka集羣,您也不需要超過5個動物園管理員節點。與Kafka不同,Zookeeper將數據複製到所有節點,因此在添加更多節點時它會變慢。
他們爭奪的磁盤I/O
動物園管理員是非常磁盤I/O延遲敏感。您需要將其與Kafka提交日誌分開放置在單獨的物理磁盤上,否則您將面臨大量發佈到Kafka的風險,這會降低動物園管理員的工作效率,並導致其退出導致潛在問題的集合。
他們爭奪頁面緩存內存
卡夫卡使用Linux操作系統頁面緩存以減少磁盤I/O。當其他應用程序與Kafka在同一個盒子上運行時,您可以使用從緩存中取出的其他數據來減少或「污染」頁面緩存以獲得Kafka。
服務器故障採取了更多的基礎設施
如果框重新啓動你失去這兩個動物管理員,並在同一時間的經紀人。
即使ZooKeeper附帶了每個Kafka發行版,但這並不意味着它們應該在同一臺服務器上運行。實際上,建議在生產環境中,它們在不同的服務器上運行。
在卡夫卡代理配置可以指定的ZooKeeper地址,也可以是本地或遠程。這是從經紀人配置(config/server.properties
):
# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=localhost:2181
您可以替換localhost
與任何其他訪問的服務器名或IP地址。
對,我知道如何配置可能的場景。我的問題具體是關於**爲什麼**你不會共同定位它們,我唯一能想到的就是:共享磁盤,共享OS文件句柄限制。 – redgiant
這篇文章給出了一個很好的總結:http://grokbase.com/t/kafka/users/144rzmzp0w/kafka-zookeeper-co-location#20140424mcqakbn96gvynnq9kchvrb3bbr。 Plus, 1)如果有不同的應用程序(除Kafka外)依賴於ZooKeeper,那麼在ZooKeeper節點上沒有Kafka Broker似乎是合理的。 2)服務器故障會影響兩者中的一個,而不是兩者。 – vahid
謝謝,我現在將繼續使用我的5/5嵌入式動物園管理員安裝程序,並繼續研究未來的5/3拆分設置。 – redgiant
像你描述我們已經運行安裝,用3〜5個節點,每一個都運行卡夫卡經紀人和隨之而來的同一節點上分佈卡夫卡的飼養員。到目前爲止,該設置沒有問題,但我們的數據吞吐量並不高。
如果我們規模以上我們就會把它們分開5個節點,所以我們只規模卡夫卡的經紀人,但保持飼養員合奏小。如果zookeeper和kafka開始爭奪I/O太多,那麼我們會將他們的數據目錄移動到單獨的驅動器上。如果他們開始競爭CPU,那麼我們會將它們移動到不同的盒子中。總而言之,這取決於您的預期吞吐量,以及在開始引起爭用時如何升級您的設置。只要您可以靈活地使用更多的節點升級您的設置並稍後引入分離,您就可以輕鬆地開始,只需將kafka和zookeeper共同定位即可。如果您認爲稍後難以添加,最好從頭開始單獨運行。我們一直在共同運營他們18個月以上,迄今尚未遇到資源爭奪。
是的,那就是我正在做的。我使用Ansible來安裝和配置基本OS VM中的所有內容,所以如果需要,我可以稍後從5/5設置更改爲5/3分割設置。 – redgiant
謝謝,我同意1:1曲線與5個以上的節點發散無用。我有兩個單獨的SSD,我將kafka vs zookeeper數據/日誌/分區配置到了上面。虛擬機使用32G RAM等很強大,所以我應該在300米/天的吞吐量上表現出色。我現在將繼續使用我的5/5嵌入式應用,並繼續進行5/3獨立安裝的原型設計。 – redgiant