How to install kafka in linux ubuntu 16.04

  • برای این منظور حداقل ۳ سرور نیاز است.
    • آدرس IP سرور اول : 192.168.1.1
    • آدرس IP سرور دوم : 192.168.1.2
    • آدرس IP سرور سوم : 192.168.1.3

نصب Zookeeper

  • دستور زیر را بر روی هر ۳ سرور اجرا کنید.
# apt-get update
# apt-get -y dist-upgrade
  • دستور زیر را بر روی هر ۳ سرور اجرا کنید.
# apt-get install default-jre zookeeperd
  • خطوط زیر را به انتهای پرونده‌ی zoo.cfg اضافه نمایید. (درون سرور اول)
# vim /etc/zookeeper/conf/zoo.cfg
server.1=0.0.0.0:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888
  • خطوط زیر را به انتهای پرونده‌ی zoo.cfg اضافه نمایید. (درون سرور دوم)
# vim /etc/zookeeper/conf/zoo.cfg
server.1=192.168.1.1:2888:3888
server.2=0.0.0.0:2888:3888
server.3=192.168.1.3:2888:3888
  • خطوط زیر را به انتهای پرونده‌ی zoo.cfg اضافه نمایید. (درون سرور سوم)
# vim /etc/zookeeper/conf/zoo.cfg
server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=0.0.0.0:2888:3888
  • دستور زیر را بر روی سرور اول اجرا نمایید.
# echo 1 > /var/lib/zookeeper/myid
  • دستور زیر را بر روی سرور دوم اجرا نمایید.
# echo 2 > /var/lib/zookeeper/myid
  • دستور زیر را بر روی سرور سوم اجرا نمایید.
# echo 3 > /var/lib/zookeeper/myid
  • دستور زیر را بر روی هر ۳ سرور اجرا کنید.
# systemctl restart zookeeper
  • دستور زیر را بر روی تمام سرورها اجرا نمایید.
# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
  • حال دستور ruok را درون telnet اجرا نمایید. در صورتی که مشکلی وجود نداشته باشد، خروجی‌ای مشابه زیر دریافت خواهید کرد.
imokConnection closed by foreign host.

نصب Kafka

  • برای دریافت آخرین نسخه به وب سایت زیر مراجعه کنید.
https://kafka.apache.org/downloads
  • پیشنهاد می‌شود نسخه‌ی kafka_2.12-2.6.0.tgz دریافت شود. (Scala 2.12)
  • بسته‌ی بالا بر روی هر سه سرور اجرا شود.
  • دستور زیر بر روی هر سه سرور اجرا شود.
# mkdir /opt/kafka
  • دستور زیر بر روی هر سه سرور اجرا شود.
# tar -xvzf kafka_2.12-1.0.1.tgz --directory /opt/kafka --strip-components 1
  • پرونده‌ی server.properties بر روی هر سرور اول باز شود و تنظیمات زیر اعمال شود.
# vim /opt/kafka/config/server.properties
broker.id=0
listeners=PLAINTEXT://192.168.1.1:9092
advertised.listeners=PLAINTEXT://192.168.1.1:9092
log.dirs=/var/lib/kafka/data
zookeeper.connect=192.168.1.14:2181,192.168.1.2:2181,192.168.1.3:2181
delete.topic.enable=true
message.max.bytes=100000000
  • پرونده‌ی server.properties بر روی هر سرور دوم باز شود و تنظیمات زیر اعمال شود.
# vim /opt/kafka/config/server.properties
broker.id=1
listeners=PLAINTEXT://192.168.1.2:9092
advertised.listeners=PLAINTEXT://192.168.1.2:9092
log.dirs=/var/lib/kafka/data
zookeeper.connect=192.168.1.14:2181,192.168.1.2:2181,192.168.1.3:2181
delete.topic.enable=true
message.max.bytes=100000000
  • پرونده‌ی server.properties بر روی هر سرور سوم باز شود و تنظیمات زیر اعمال شود.
# vim /opt/kafka/config/server.properties
broker.id=2
listeners=PLAINTEXT://192.168.1.3:9092
advertised.listeners=PLAINTEXT://192.168.1.3:9092
log.dirs=/var/lib/kafka/data
zookeeper.connect=192.168.1.14:2181,192.168.1.2:2181,192.168.1.3:2181
delete.topic.enable=true
message.max.bytes=100000000
  • برای صحت عملکرد Kafka در هر سه سرور دستور زیر را اجرا کنید.
# bash /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
  • در صورت وجود مشکل برنامه خطا داده و خارج می‌شود.

تنظیمات Systemd

  • برای این که ابزار Kafka به صورت سرویس درون Systemd تعریف شود. پرونده‌ی kafka.service را درون هر سه سرور ایجاد کرده و تنظیمات زیر را اعمال نمایید.
# vim /etc/systemd/system/kafka.service

[unit]
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
User=root
ExecStart=/bin/bash -c '/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties'
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target
  • دستور زیر را بر روی هر سه سرور اجرا کنید.
# systemctl enable zookeeper.service kafka.service
# systemctl restart zookeeper.service kafka.service

آزمون اتصال سرورها

  • مشاهده‌ی تمام Topicهای موجود
  • برای این منظور :
# bash /opt/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181

 

  • ساخت Topic :
  • برای اطمینان از اتصال هر سه سرور به یکدیگر، دستور زیر را درون یکی از سرورها (مثلا سرور اول) وارد نمایید.
# bash /opt/kafka/bin/kafka-topics.sh --create --topic test-topic-1 --zookeeper 192.168.1.1:2181 --partitions 3 --replication-factor 3
Created topic test-topic-1
  • در دستور بالا فرض بر این است که دستور بر روی سرور اول اجرا شده لذا آدرس 192.168.1.1 وارد شده است.
  • در صورتی که دستور بالا با موفقیت اجرا شود، خروجی Created topic test-topic-1 نمایش داده می‌شود.

 

  • مشاهده‌ی جزییات Topic :
  • برای مشاهده‌ی جزییات تاپیک دستور زیر را روی یکی از سرورها اجرا کنید. (مثلا سرور دوم)
# bash /opt/kafka/bin/kafka-topics.sh --describe --topic test-topic-1 --zookeeper 192.168.1.2:2181
Topic: test-topic-1 PartitionCount: 3 ReplicationFactor: 3 Configs: 
Topic: test-topic-1 Partition: 0 Leader: 2 Replicas: 2,1,0 Isr: 2,1,0
Topic: test-topic-1 Partition: 1 Leader: 0 Replicas: 0,2,1 Isr: 0,2,1
Topic: test-topic-1 Partition: 2 Leader: 1 Replicas: 1,0,2 Isr: 1,0,2

 

  • ارسال پیام :
  • برای ارسال پیام (تست) وارد یکی از سرورها شده و دستور زیر را اجرا کنید. (مثلا سرور سوم)
# bash /opt/kafka/bin/kafka-console-producer.sh --broker-list 192.168.1.3:9092 --topic test-topic-1
>test
>line2
>bye
  • کلمات test ، line2 ، bye به عنوان پیامی هستند که ارسال شده اند.
  • به منظور ارسال پیام به صورت تصادفی (و در بازه‌های زمانی تصادفی) به صورت زیر عمل کنید.
for (( ;; )) ; do echo "$RANDOM" | bash /opt/kafka/bin/kafka-console-producer.sh --broker-list 192.168.1.3:9092 --topic test-topic-1 ; sleep $(shuf -i 1-9 -n 1) ; done

 

 

  • مشاهده‌ی پیام‌ها :
  • برای مشاهده‌ی پیام‌ها داخل یکی از سرورها رفته و دستور زیر را اجرا کنید. (مثلا سرور اول)
# bash /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.1:9092 --topic test-topic-1 --from-beginning 
line2
test
bye

  • آزمایش شده بر روی Ubuntu 16.04

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *