Selamat siang!Dalam artikel ini, kita akan melihat pengaturan sekelompok tiga simpul ZooKeeper (layanan koordinasi sistem terdistribusi), dua di antaranya adalah broker pesan Kafka , dan yang ketiga adalah manajer.Akibatnya, skema komponen berikut akan diterapkan:
Semua komponen pada satu mesin, untuk kesederhanaan, kami akan menggunakan pesan penerbit (produsen) dan pelanggan (konsumen) bawaan.Modul ZooKeeper dibangun ke dalam paket Kafka, kami menggunakannya.Instalasi dan pengaturan
Menginstal Paket KafkaDalam hal ini, sistem operasinya adalah Ubuntu 16.04 LTS.Versi saat ini dan instruksi terperinci ada di situs web resmi .wget http://mirror.linux-ia64.org/apache/kafka/2.4.1/kafka_2.12-2.4.1.tgz
tar -xvzf kafka_2.12-2.4.1.tgz
Buat direktori yang berfungsi untuk tiga node server_1, server_2 dan server_3.mv kafka_2.12-2.4.1 kafka_server_1
cp -r kafka_server_1/ kafka_server_2/
cp -r kafka_server_1/ kafka_server_3/
Mengkonfigurasi simpulMengkonfigurasi broker Kafka(dari direktori kafka_server_1, kafka_server_2, dan kafka_server_3, masing-masing)vim config/server.properties
- id pialang (masing-masing 0, 1, 2)
- port klien (9092, 9093, 9094)
- Port ZooKeeper (2181, 2182, 2183)
- direktori log (/ tmp / kafka-logs-1, / tmp / kafka-logs 2, / tmp / kafka-logs 3)
broker.id=0
listeners=PLAINTEXT://:9092
zookeeper.connect=localhost:2181
log.dirs=/tmp/kafka-logs-1
Konfigurasi Znode:vim config/zookeeper.properties
- direktori untuk data (/ tmp / zookeeper_1, / tmp / zookeeper_2, / tmp / zookeeper_3)
- port klien (2181, 2182, 2183)
- jumlah maksimum koneksi klien dan batas koneksi
- port untuk pertukaran data antar node (mis., kami menginformasikan setiap node tentang keberadaan orang lain)
dataDir=/tmp/zookeeper_1
clientPort=2181
maxClientCnxns=60
initLimit=10
syncLimit=5
tickTime=2000
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
Membuat direktori untuk node ZooKeeper, menulis id node ke file layanan:mkdir -p /tmp/zookeeper_[1..3]
echo "1" >> /tmp/zookeeper_1/myid
echo "2" >> /tmp/zookeeper_2/myid
echo "3" >> /tmp/zookeeper_3/myid
Jika ada masalah dengan hak akses, ubah dalam direktori dan file:sudo chmod 777 /tmp/zookeeper_1
Menjalankan z-node dan broker
Untuk dua node pertama (kafka_server_1 /, kafka_server_2 /), jalankan skrip ZooKeeper dan server Kafka, argumennya adalah file konfigurasi yang sesuai:sudo bin/zookeeper-server-start.sh config/zookeeper.properties
sudo bin/kafka-server-start.sh config/server.properties
Untuk simpul ketiga (kafka_server_3 /) - hanya ZooKeeper.Skrip untuk menghentikan server:sudo bin/kafka-server-stop.sh
sudo bin/zookeeper-server-stop.sh
Membuat tema, produsen dan konsumen konsol
Topik (topik) - aliran pesan dari jenis tertentu, dibagi menjadi beberapa partisi (jumlahnya ditentukan oleh kunci - partisi). Setiap partisi digandakan pada dua server (- faktor-replikasi). Setelah kunci --bootstrap-server, tentukan port broker Kafka, dipisahkan dengan koma. Switch --topic menentukan nama topik.sudo bin/kafka-topics.sh --create --bootstrap-server localhost:9092,localhost:9093 --replication-factor 2 --partitions 2 --topic TestTopic
Untuk mengetahui daftar topik pada port, informasi tentang setiap topik dapat dilakukan dengan perintah:sudo bin/kafka-topics.sh --list --zookeeper localhost:2181
sudo bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic TestTopic
Pemimpin - server dengan instance utama dari partisi, replika - server tempat informasi digandakan, ISR - server yang berperan sebagai pemimpin jika terjadi kegagalan pemimpin.Kami membuat produsen konsol, konsumen konsol menggunakan skrip yang sesuai:sudo bin/kafka-console-producer.sh --broker-list localhost:9092,localhost:9093 --topic TestTopic
sudo bin/kafka-console-consumer.sh --bootstrap-server localhost:9092,localhost:9093 --from-beginning --topic TestTopic
Ini memastikan pengiriman pesan yang berkelanjutan kepada penerima, jika salah satu broker pesan memproses pesan kedua.Layanan untuk penjaga kebun binatang dan kafka di systemctl
Untuk kenyamanan memulai sebuah cluster, Anda dapat membuat layanan di systemctl: zookeeper_1.service, zookeeper_2.service, zookeeper_3.service, kafka_1.service, kafka_2.service.Kami mengedit file /etc/systemd/system/zookeeper_1.service (ubah direktori / home / pengguna dan pengguna pengguna menjadi yang diperlukan).[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=user
ExecStart=home/user/kafka_server_1/bin/zookeeper-server-start.sh /home/user/kafka_server_1/config/zookeeper.properties
ExecStop=/home/user/kafka_server_1/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
Untuk layanan zookeeper_2.service dan zookeeper_3.service mirip.File /etc/systemd/system/kafka_1.service:[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=user
ExecStart=/bin/sh -c '/home/user/kafka_server_1/bin/kafka-server-start.sh /home/user/kafka_server_1/config/server.properties > /tmp/kafka-logs-1 2>&1'
ExecStop=/home/user/kafka_server_1/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
kafka_2.service serupa.Aktivasi dan verifikasi layanansystemctl daemon-reload
systemctl enable zookeeper_1.service
systemctl start zookeeper_1.service
sudo journalctl -u zookeeper_1.service
systemctl stop zookeeper_1.service
Hal yang sama berlaku untuk zookeeper_2.service, zookeeper_3.service, kafka_1.service, kafka_1.service.Terimakasih atas perhatiannya!