أحاول تثبيت Kafka و zookeeper المتكدسين باستخدام فرع آخر 5.4.1 من هذا الريبو.
ما هو الغرض من استخدام confluent.variables_handlers كدور تابع في أدوار confluent.zookeeper و confluent.kafka. هذا يتجاوز متغير zookeeper في confluent.zookeeper / defaults / main.yaml ، وبالمثل kafka_broker في confluent.kafka /defaults/main.yaml. أحصل على هذا الخطأ عندما أقوم بتثبيت kafka.
TASK [confluent.kafka_broker : Set Permissions on Data Dirs] ********
FAILED! => {"msg": "'dict object' has no attribute 'datadir'"}
يجب أن تدمج القواميس بالفعل ، تأكد من أن الدليل الحالي عند تشغيل cp-ansible هو جذر cp-ansible نفسه. سيكسبك هذا ملف ansible.cfg بـ hash_behaviour=merge
أعترف أن موقع المتغيرات محير ، وآمل أن أحسنه عندما يكون لدي الوقت
حاولت ذلك. الآن عندما أدير نفس قواعد اللعبة التي أحصل عليها
TASK [confluent.kafka_broker : Set Permissions on Data Dirs] ******
{"msg": "'dict object' has no attribute 'kafka_broker'"}
حسنًا ، هل يمكنك تقديم:
git status
git branch
cat hosts.yml
أو أيا كان اسم ملف الجرد الخاص بك
حسنا. لقد حصلت عليه بالعمل مع هذا hosts.yml
all:
vars:
ssl_enabled: false
ssl_mutual_auth_enabled: false
sasl_protocol: none
kafka_broker_configure_additional_brokers: false
kafka_broker:
vars:
kafka_broker:
datadir:
- /var/lib/kafka/my-data
hosts:
172.XX.YY.20:
172.XX.YY.18:
172.XX.YY.19:
قبل ذلك ، أضفت kafka_broker كجزء من متغيرات المجموعة في المخزون الديناميكي. كان بطريقة ما لا يعمل. أنا أتحقق من ذلك. شكرا للمساعدة السريعة.
يا هذا يبدو جيدا! لم أجرب قوائم الجرد الديناميكية ، ولكن طالما تم تمكين hash_merging ، يجب أن يعمل cp-ansible!
شيء آخر - لقد واجهت مشاكل في التحقق من اسم المضيف باستخدام عناوين IP ، لذلك إذا كنت تسير في اتجاه تشغيل التشفير ، فمن المحتمل أن أستخدم أسماء المضيف
لقد جمعت أجهزة Kafka الافتراضية الخاصة بي على أنها kafka_hosts في مخزوني ، لذا فإن تغيير قيم المضيفين في all.yaml يبدو هكذا.
- name: Kafka Broker Provisioning
# hosts: kafka_broker
hosts: kafka_hosts
ومتغيرات المجموعة المحددة تحت دليل الجرد مثل هذا.
# File kafka_hosts.yaml
---
ssl_enabled: false
ssl_mutual_auth_enabled: false
sasl_protocol: none
kafka_broker_configure_additional_brokers: false
confluent_server_enabled: false
kafka_broker_service_environment_overrides:
KAFKA_HEAP_OPTS: "-Xms1g -Xmx1g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"
kafka_broker:
datadir:
- /var/lib/kafka/
auto.create.topics.enable: true
properties:
num.partitions: 20
log.flush.interval.messages: 10000
log.flush.interval.ms: 1000
zookeeper.connection.timeout.ms: 6000
offsets.topic.replication.factor: 2
min.insync.replicas: 2
default.replication.factor: 3
هذا يحترم جميع المتغيرات باستثناء الخرائط مثل kafka_broker. يعطيني الخطأ
FAILED! => {"msg": "'dict object' has no attribute 'kafka_broker'"}
هل يجب علي دائمًا تسمية المجموعة باسم kafka_broker ؟
آسف ، أنا مبتدئ في الجوهر. ربما أفتقد بعض الأساسيات.
مررت للتو بنفس الشيء هنا
هل مازلت بحاجة للمساعدة في هذا؟
يمكنك إضافة مهام التصحيح في التعليمات البرمجية لمعرفة ما تم تعيين المتغيرات الخاصة بك عليه. أود أن أضيف هذا في مكان ما
- debug: var=kafka_broker
تأكد أيضًا من استخدام hash_merging مع ملفك ansible.cfg
كنت بحاجة إلى تسمية المجموعة المضيفة بشيء مختلف عن kafka_broker. لذلك قمت بإجراء تغيير في قواعد اللعبة. أضفت متغيرًا kafka_broker_host_group
يحمل اسم المجموعة المضيفة.
وقم بإجراء تغييرات على ملفات الأدوار مثل أدناه.
bootstrap.servers={% for host in groups['kafka_broker'] %}
بتغييره إلى bootstrap.servers={% for host in groups[kafka_broker_host_group]
. ساعدني هذا في الحصول على أسماء مجموعة مخصصة.
ونعم ، لقد ساعدني تعيين hash_behaviour للدمج في حل الخطأ الأصلي الذي فتحت هذه المشكلة من أجله.
شكرا للمساعدة :)
التعليق الأكثر فائدة
يجب أن تدمج القواميس بالفعل ، تأكد من أن الدليل الحالي عند تشغيل cp-ansible هو جذر cp-ansible نفسه. سيكسبك هذا ملف ansible.cfg بـ
hash_behaviour=merge
أعترف أن موقع المتغيرات محير ، وآمل أن أحسنه عندما يكون لدي الوقت