{"id":702,"date":"2025-12-14T19:45:17","date_gmt":"2025-12-14T16:45:17","guid":{"rendered":"https:\/\/oraclius.com.tr\/?p=702"},"modified":"2026-07-21T11:55:14","modified_gmt":"2026-07-21T08:55:14","slug":"apache-kafka-3-9-1-ve-zookeeper-kurulum-rehberi","status":"publish","type":"post","link":"https:\/\/oraclius.com.tr\/en\/apache-kafka-3-9-1-ve-zookeeper-kurulum-rehberi\/","title":{"rendered":"Apache Kafka (3.9.1) ve Zookeeper Kurulum Rehberi"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Bu ad\u0131m, y\u00fcksek hacimli, ger\u00e7ek zamanl\u0131 veri ak\u0131\u015f\u0131 (stream processing) mimarilerinin bel kemi\u011fini olu\u015fturan Apache Kafka mesajla\u015fma platformunun kurulumunu detayl\u0131ca ele almaktad\u0131r. Bu rehberde, tek bir sunucuda hem Kafka Broker&#8217;\u0131 hem de onun y\u00f6netimini \u00fcstlenen Zookeeper s\u00fcrecini <strong>Standart Modda<\/strong> kurmay\u0131 \u00f6\u011freneceksiniz.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Platformun Rolleri: Kafka ve Zookeeper<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Da\u011f\u0131t\u0131k sistemlerin temelini olu\u015fturan bu iki platformun g\u00f6revlerini netle\u015ftirelim:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Kafka (Mesaj Kuyru\u011fu):<\/strong> Y\u00fcksek hacimli veri \u00fcretim ve t\u00fcketimini y\u00f6neten, dayan\u0131kl\u0131, b\u00f6l\u00fcmlendirilmi\u015f bir log sistemi. Veriyi saklar ve \u00fcreticiler ile t\u00fcketiciler aras\u0131nda asenkron ileti\u015fimi sa\u011flar.<\/li>\n\n\n\n<li><strong>Zookeeper (Koordinasyon Servisi):<\/strong> Standart Kafka kurulumunda, k\u00fcmenin y\u00f6netimini \u00fcstlenen merkezi bir koordinasyon servisidir. Broker&#8217;lar\u0131n durumunu, lider se\u00e7imlerini, k\u00fcme genelindeki konfig\u00fcrasyonlar\u0131 ve Topic tan\u0131mlar\u0131n\u0131 izler ve y\u00f6netir.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Kurulum Dosyalar\u0131n\u0131n Haz\u0131rlanmas\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Apache Kafka&#8217;n\u0131n en son stabil s\u00fcr\u00fcm\u00fcn\u00fc (Scala 2.13 ile paketlenmi\u015f) indiriyoruz:<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-ee856660 wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/downloads.apache.org\/kafka\/3.9.1\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">kafka_2.13-3.9.1.tgz<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Kurulum dizinini olu\u015fturma ve a\u00e7ma:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/opt\/kafka\ncd \/opt\/kafka\n\ntar -xzf \/tmp\/kafka_2.13-3.9.1.tgz --strip 1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Veri ve Log dizinlerini olu\u015fturma (Kafka, Zookeeper verileri ve Loglar i\u00e7in)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/opt\/kafka\/data\nmkdir \/opt\/kafka\/zookeeper_data<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo chown -R ogg:ogg \/opt\/kafka<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Kafka ve Zookeeper Yap\u0131land\u0131rma Ayarlar\u0131<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">java versiyonunu g\u00fcncelleyelim:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>java -version<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>java version \"11.0.28\" 2025-07-15 LTS\nJava(TM) SE Runtime Environment 18.9 (build 11.0.28+12-LTS-279)\nJava HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.28+12-LTS-279, mixed mode)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Java 11 var. Daha yeni versiyonu kural\u0131m:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>yum install java-17-openjdk -y<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo update-alternatives --config java\n\nThere are 3 programs which provide 'java'.\n\n  Selection    Command\n-----------------------------------------------\n + 1           \/usr\/lib\/jvm\/jdk-11.0.28-oracle-x64\/bin\/java\n*  2           \/usr\/lib\/jvm\/jdk-17.0.17-oracle-x64\/bin\/java\n   3           java-17-openjdk.x86_64 (\/usr\/lib\/jvm\/java-17-openjdk-17.0.17.0.10-1.0.1.el8.x86_64\/bin\/java)\n\nEnter to keep the current selection&#91;+], or type selection number: 2<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>java -version<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>java version \"17.0.17\" 2025-10-21 LTS\nJava(TM) SE Runtime Environment (build 17.0.17+8-LTS-360)\nJava HotSpot(TM) 64-Bit Server VM (build 17.0.17+8-LTS-360, mixed mode, sharing)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>config<\/code> dizini alt\u0131ndaki varsay\u0131lan dosyalar\u0131 tek sunuculu kurulumumuz i\u00e7in \u00f6zelle\u015ftirece\u011fiz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/opt\/kafka\/config\/zookeeper.properties<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kritik De\u011fi\u015fiklik (Veri Yolu):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Zookeeper'\u0131n durum verilerini saklayaca\u011f\u0131 dizin\ndataDir=\/opt\/kafka\/zookeeper_data \n# clientPort varsay\u0131lan olarak 2181'dir.<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/opt\/kafka\/config\/server.properties <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kritik Ayarlar (Single-Node Broker):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># 1. Broker ID (K\u00fcmede benzersiz olmal\u0131, bu ilk broker'\u0131m\u0131z)\nbroker.id=1\n\n# 2. Dinleme Adresi ve Portu\n# Sunucunuzun IP adresi (10.10.10.12) ve varsay\u0131lan port (9092)\nlisteners=PLAINTEXT:\/\/10.10.10.12:9092\n\n# 3. Log Dizinleri (Mesaj verilerinin fiziksel olarak saklanaca\u011f\u0131 yer)\nlog.dirs=\/opt\/kafka\/data\n\n# 4. Zookeeper Ba\u011flant\u0131s\u0131 (Ayn\u0131 sunucudaki Zookeeper'a ba\u011flan)\nzookeeper.connect=localhost:2181<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Zookeeper ve Kafka S\u00fcre\u00e7lerini Ba\u015flatma<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Kurulum dosyalar\u0131 ve konfig\u00fcrasyonlar haz\u0131r. S\u00fcre\u00e7leri ba\u015flat\u0131rken \u00f6nce Zookeeper&#8217;\u0131n ba\u015flamas\u0131 gerekti\u011fini unutmay\u0131n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zookeeper&#8217;\u0131 y\u00f6netmek i\u00e7in bir servis dosyas\u0131 (<code>.service<\/code>) olu\u015ftural\u0131m.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/etc\/systemd\/system\/zookeeper.service<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=Apache Zookeeper Service\nRequires=network.target remote-fs.target\nAfter=network.target remote-fs.target\n\n&#91;Service]\nType=simple # De\u011fi\u015ftirildi\nUser=ogg\nGroup=ogg\nEnvironment=\"JAVA_HOME=\/usr\/lib\/jvm\/jdk-17.0.17-oracle-x64\"\n\n# -daemon arg\u00fcman\u0131 kald\u0131r\u0131ld\u0131\nExecStart=\/opt\/kafka\/bin\/zookeeper-server-start.sh \/opt\/kafka\/config\/zookeeper.properties \nExecStop=\/opt\/kafka\/bin\/zookeeper-server-stop.sh\n\nRestart=on-failure\n\n&#91;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl daemon-reload\nsystemctl start zookeeper\nsystemctl enable zookeeper<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kafka&#8217;\u0131 y\u00f6netmek i\u00e7in bir servis dosyas\u0131 (<code>.service<\/code>) olu\u015ftural\u0131m.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/etc\/systemd\/system\/kafka.service<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=Apache Kafka Service\nRequires=zookeeper.service\nAfter=zookeeper.service\n\n&#91;Service]\nType=simple # De\u011fi\u015ftirildi\nUser=ogg\nGroup=ogg\nEnvironment=\"JAVA_HOME=\/usr\/lib\/jvm\/jdk-17.0.17-oracle-x64\"\n\n# -daemon arg\u00fcman\u0131 kald\u0131r\u0131ld\u0131\nExecStart=\/opt\/kafka\/bin\/kafka-server-start.sh \/opt\/kafka\/config\/server.properties\nExecStop=\/opt\/kafka\/bin\/kafka-server-stop.sh\n\nRestart=on-failure\n\n&#91;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl daemon-reload\nsystemctl start kafka\nsystemctl enable kafka<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Kafka ve Zookeeper Testleri<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">u testler, hem Zookeeper&#8217;\u0131n durumunu hem de Kafka&#8217;n\u0131n mesajlar\u0131 do\u011fru bir \u015fekilde i\u015fledi\u011fini g\u00f6sterecektir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zookeeper&#8217;\u0131n standart portunda dinleme yap\u0131p yapmad\u0131\u011f\u0131n\u0131 kontrol edelim.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>netstat -tulnp | grep 2181<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Beklenen \u00c7\u0131kt\u0131:<\/strong> \u00c7\u0131kt\u0131da <code>2181<\/code> portunu dinleyen bir Java s\u00fcreci (Zookeeper) g\u00f6rmelisiniz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A\u015fa\u011f\u0131daki komutu <strong>root<\/strong> veya Kafka&#8217;y\u0131 \u00e7al\u0131\u015ft\u0131ran <strong>ogg<\/strong> kullan\u0131c\u0131s\u0131 ile \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/opt\/kafka\/bin\/kafka-topics.sh --create --topic test_topic --bootstrap-server 10.10.10.12:9092 --partitions 1 --replication-factor 1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Yeni topic&#8217;in listelendi\u011finden emin olal\u0131m:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/opt\/kafka\/bin\/kafka-topics.sh --list --bootstrap-server 10.10.10.12:9092\ntest_topic<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Yeni bir terminal a\u00e7\u0131n ve <strong><code>test_topic<\/code><\/strong>&#8216;i dinlemeye ba\u015flay\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/opt\/kafka\/bin\/kafka-console-consumer.sh --topic test_topic --bootstrap-server 10.10.10.12:9092\ndeneme<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ba\u015fka bir terminal a\u00e7\u0131n ve <strong><code>test_topic<\/code><\/strong>&#8216;e mesaj g\u00f6ndermeye ba\u015flay\u0131n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/opt\/kafka\/bin\/kafka-console-producer.sh --topic test_topic --broker-list 10.10.10.12:9092\n&gt;deneme<\/code><\/pre>","protected":false},"excerpt":{"rendered":"<p>Bu ad\u0131m, y\u00fcksek hacimli, ger\u00e7ek zamanl\u0131 veri ak\u0131\u015f\u0131 (stream processing) mimarilerinin bel kemi\u011fini olu\u015fturan Apache Kafka mesajla\u015fma platformunun kurulumunu detayl\u0131ca ele almaktad\u0131r. Bu rehberde, tek bir sunucuda hem Kafka Broker&#8217;\u0131 hem de onun y\u00f6netimini \u00fcstlenen Zookeeper s\u00fcrecini Standart Modda kurmay\u0131 \u00f6\u011freneceksiniz.<\/p>","protected":false},"author":1,"featured_media":703,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43],"tags":[],"class_list":["post-702","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-genel-en"],"_links":{"self":[{"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/posts\/702","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/comments?post=702"}],"version-history":[{"count":2,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/posts\/702\/revisions"}],"predecessor-version":[{"id":714,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/posts\/702\/revisions\/714"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/media\/703"}],"wp:attachment":[{"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/media?parent=702"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/categories?post=702"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oraclius.com.tr\/en\/wp-json\/wp\/v2\/tags?post=702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}