2017-03-24 17 views
11

कफका चलाने के लिए, आपको config/server.properties फ़ाइल में कुछ गुण सेट करने की आवश्यकता है। दो सेटिंग्स हैं जिन्हें मैं समझ नहीं पा रहा हूं।काफ्का सर्वर कॉन्फ़िगरेशन - श्रोताओं बनाम advertised.listeners

क्या कोई श्रोताओं और विज्ञापित .listeners संपत्ति के बीच अंतर को समझा सकता है?

प्रलेखन कहते हैं:

श्रोताओं: पता सॉकेट सर्वर पर सुनता है।

और

advertised.listeners: होस्ट का नाम और बंदरगाह दलाल उत्पादकों और उपभोक्ताओं के विज्ञापन करेंगे।

जब मैं जो सेटिंग का उपयोग करना है?

उत्तर

14

चूंकि मैं अभी तक टिप्पणी नहीं कर सकता क्योंकि मैं इसे "उत्तर" के रूप में पोस्ट करूंगा, एम। स्थिति के जवाब में जोड़ रहा हूं।

वह लिंक एक ही दस्तावेज़ के भीतर इस blurb के बारे में जो श्रोता एक काफ्का ग्राहक (https://cwiki.apache.org/confluence/display/KAFKA/KIP-103%3A+Separation+of+Internal+and+External+traffic) द्वारा किया जाता है नहीं है:

जैसा कि पहले कहा, ग्राहकों को श्रोता नाम देखने कभी नहीं है और वास्तव में के रूप में पहले मेटाडाटा अनुरोध कर देगा । अंतर यह है कि वे वापस आने वाले एंडपॉइंट्स की सूची एंडपॉइंट के श्रोता नाम तक सीमित हैं जहां उन्होंने अनुरोध किया था।

यह वही यूआरएल आप अपने bootstrap.servers config में उपयोग पर निर्भर करता है कि URL होगा * कि ग्राहक वापस मिल जाएगा अगर यह advertised.listeners में मैप किया गया है के रूप में महत्वपूर्ण है (पता नहीं है क्या व्यवहार है अगर श्रोता मौजूद नहीं है)।

अपवाद चिड़ियाघर संचालक आधारित उपभोक्ताओं है:

इसके अलावा इस पर ध्यान दें। ये उपभोक्ता सीधे ब्रूकर पंजीकरण जानकारी को ज़ूकीपर से पुनर्प्राप्त करते हैं और सुरक्षा प्रोटोकॉल के रूप में PLAINTEXT के साथ पहला श्रोता चुनते हैं (वे केवल सुरक्षा प्रोटोकॉल का समर्थन करते हैं)।

एक उदाहरण दलाल config के रूप में (क्लस्टर में सभी दलालों के लिए):

advertised.listeners = बाहरी: //XXXXX.compute-1.amazonaws.com: 9990, आंतरिक: // आईपी -XXXXX.ec2.internal: 9993

inter.broker.listener.name = आंतरिक

listener.security.protocol.map = बाहरी: एसएसएल, आंतरिक: प्लेन

यदि ग्राहक कनेक्ट करने के लिए XXXXX.compute-1.amazonaws.com:9990 का उपयोग करता है, मेटाडेटा फ़ेच उस ब्रोकर पर जाएगा। हालांकि, ग्रुप कोऑर्डिनेटर के साथ उपयोग करने के लिए लौटने वाला यूआरएल 123.compute-1.amazonaws.com:9990* (एक अलग मशीन!) हो सकता है। इसका मतलब यह है कि मिलान श्रोता नाम पर किया जाता है जैसा कि वास्तविक यूआरएल (नोड) के बावजूद केआईपी-103 द्वारा विज्ञापित किया गया है।

चूंकि EXTERNAL के लिए प्रोटोकॉल मानचित्र SSL है, यह आपको कनेक्ट करने के लिए SSL कुंजीस्टोर का उपयोग करने के लिए मजबूर करेगा।

यदि दूसरी ओर आप एडब्ल्यूएस के भीतर हैं तो कहें, आप आईपी-XXXXX.ec2 जारी कर सकते हैं।आंतरिक: 99 3 9 और प्रोटोकॉल मानचित्र के अनुसार संबंधित कनेक्शन सादे टेक्स्ट होगा।

यह विशेष रूप से आईएएसएस में आवश्यक है जहां मेरे मामले में ब्रोकर और उपभोक्ता एडब्ल्यूएस पर रहते हैं, जबकि मेरा निर्माता क्लाइंट साइट पर रहता है, इस प्रकार विभिन्न सुरक्षा प्रोटोकॉल और श्रोताओं की आवश्यकता होती है।

संपादित करें: इनबाउंड नियमों को भी जोड़ना अब बहुत आसान है कि आपके पास विभिन्न ग्राहकों (ब्रोकर, उत्पादक, उपभोक्ता) के लिए अलग-अलग बंदरगाह हैं।

+0

मुझे यकीन नहीं है कि आप कम से कम एचडीपी 2.5.0.3 पर मेरे लिए 'श्रोताओं' और 'विज्ञापित .listeners' दोनों को उपनाम असाइन कर सकते हैं, यह काम नहीं किया, शायद कुछ याद किया। मेरे लिए क्या काम किया गया था विभिन्न कॉन्फ़िगरेशन समूहों को परिभाषित करना और आवश्यक आईपी पते पर विशिष्ट विज्ञापन सेट करना था। धन्यवाद, – reim

8

listeners क्या ब्रोकर सर्वर सॉकेट बनाने का उपयोग करेगा।

advertised.listeners क्या ब्रोकर से जुड़ने के लिए ग्राहक उपयोग करेंगे।

यदि आप एक "जटिल" नेटवर्क सेटअप है (सार्वजनिक और निजी सबनेट आदि के संबंध में और बीच में मार्ग) दो सेटिंग अलग हो सकता है।

1

इस लिंक से: https://cwiki.apache.org/confluence/display/KAFKA/KIP-103%3A+Separation+of+Internal+and+External+traffic

0.9.0.0 रिलीज चक्र के दौरान, प्रति दलाल कई श्रोताओं के लिए समर्थन शुरू की गई थी। प्रत्येक श्रोता सुरक्षा प्रोटोकॉल, आईपी/होस्ट और पोर्ट से जुड़ा हुआ है। जब विज्ञापित श्रोताओं तंत्र के साथ संयुक्त, वहाँ एक सीमा के साथ लचीलापन भी पर्याप्त मात्रा में है: दो कॉन्फ़िगरेशन (श्रोताओं और advertised.listeners) में से प्रत्येक में सुरक्षा प्रोटोकॉल के अनुसार सबसे एक श्रोता पर।

कुछ वातावरण में, एक बाहरी ग्राहकों, आंतरिक ग्राहकों और लागत, प्रदर्शन और सुरक्षा कारणों के लिए सुरक्षा प्रोटोकॉल की स्वतंत्र रूप से प्रतिकृति यातायात के बीच अंतर कर सकते हैं। कुछ उदाहरण है कि इस उदाहरण देकर स्पष्ट करना:

  • प्रतिकृति यातायात एक अलग नेटवर्क इंटरफेस को सौंपा गया है इतना है कि यह ग्राहक यातायात के साथ हस्तक्षेप नहीं करता है।
  • बाहरी यातायात, जबकि आंतरिक यातायात दलालों सीधे (प्रदर्शन, लागत) को छूता एक प्रॉक्सी/लोड संतुलन (सुरक्षा, तरलता) के माध्यम से चला जाता है।
  • आंतरिक यातायात बनाम बाहरी के लिए विभिन्न सुरक्षा सेटिंग्स भले ही सुरक्षा प्रोटोकॉल में ही है (उदाहरण के लिए के विभिन्न सेट सक्षम SASL तंत्र, प्रमाणीकरण सर्वर, अलग keystores, आदि)

जैसे, हम प्रस्ताव कि कफका दलाल बाध्यकारी (यानी श्रोताओं) के लिए एक ही सुरक्षा प्रोटोकॉल के लिए एकाधिक श्रोताओं को परिभाषित करने में सक्षम होना चाहिए और साझा करना (यानी विज्ञापित।श्रोताओं) ताकि आंतरिक, बाहरी और प्रतिकृति यातायात को अलग-अलग किया जा सकता है।

तो,

श्रोताओं - यूआरआई हम पर और उनके प्रोटोकॉल सुनेगा की अल्पविराम द्वारा अलग सूची। सभी इंटरफेस से जुड़ने के लिए होस्टनाम को 0.0.0.0 के रूप में निर्दिष्ट करें। डिफ़ॉल्ट इंटरफ़ेस पर बाध्य करने के लिए खाली होस्ट नाम छोड़ दें। कानूनी श्रोता सूचियों के उदाहरण: PLAINTEXT://myhost:9092,TRACE://:9091 PLAINTEXT://0.0.0.0:9092, TRACE://localhost:9093

advertised.listeners - श्रोताओं अगर ऊपर श्रोताओं से अलग, ग्राहकों का उपयोग करने के लिए चिड़ियाघर संचालक को प्रकाशित करने के लिए। आईएएएस वातावरण में, इसे इंटरफ़ेस से अलग होना पड़ सकता है जिस पर ब्रोकर बांधता है। यदि यह सेट नहीं है, तो listeners के लिए मान का उपयोग किया जाएगा।

संबंधित मुद्दे