2016-02-15 9 views
9

एक का उपयोग कर आईईएक्स द्वारा एक अमृत नोड init कर सकते हैं:एलिक्सीर/एरलांग में, किस पोर्ट का उपयोग 'नोड.कनेक्ट' के लिए किया जाता है?

iex --sname [email protected] --cookie foo 

और फिर एक और एक का उपयोग कर आरईपीएल में इस नोड कनेक्ट कर सकते हैं:

Node.connect(:"[email protected]") 

ऐसा लगता है कनेक्शन TCP प्रोटोकॉल खत्म हो गया है। हालांकि, मुझे निर्दिष्ट करने के लिए कि कौन सा पोर्ट उपयोग किया गया है, मुझे document में पैरामीटर नहीं मिला। क्या किसी के पास इस बारे में कोई विचार है?

उत्तर

8

कनेक्ट नोड्स Erlang Port Mapping Daemon (epmd) जो बंदरगाह पर डिफ़ॉल्ट रूप से चलाता है द्वारा नियंत्रित किया जाता। प्रलेखन से:

एक अलग बंदरगाह नोड्स के स्वतंत्र समूहों, का प्रतिनिधित्व, EPMD के कई उदाहरण अनुमति देने के लिए निर्दिष्ट किया जा सकता एक ही मेजबान पर सह-अस्तित्व। क्लस्टर में सभी नोड्स को एक ही एपीएमडी पोर्ट नंबर का उपयोग करना चाहिए।

वास्तविक नोड एक यादृच्छिक (?) बंदरगाह को खोलता है और अपने sname करने के लिए स्थानीय epmd के साथ इस की घोषणा की। जब आप अब '[email protected]' से कनेक्ट होते हैं, तो आपके एरलांग वीएम 'node1' पर जानकारी के लिए पोर्ट 0369 पर 10.99.1.50 पर दूरस्थ epmd से पूछेंगे। यह उस वास्तविक पोर्ट नंबर के साथ उत्तर देगा जिस पर आपकी प्रक्रिया सीधे कनेक्ट होती है।

5

इस पोस्ट के अनुसार Erlang Distribution एरलांग टीसीपी पर बंदरगाह 436 9 का उपयोग करता है। इस पोस्ट के बारे में अधिक जानकारी है।

फ़ायरवॉल के लिए: Erlang वितरण प्रत्येक नोड के लिए EPMD के लिए बंदरगाह के साथ-साथ यादृच्छिक बंदरगाहों का उपयोग करता। आप Erlang कर्नेल अनुप्रयोग पर्यावरण सेटिंग्स inet_dist_listen_min और inet_dist_listen_max का उपयोग कर इन यादृच्छिक बंदरगाहों की सीमा को सीमित कर सकते हैं। आपको इन बंदरगाहों पर आने वाले टीसीपी कनेक्शन की अनुमति देने की आवश्यकता होगी, लेकिन केवल क्लस्टर के अन्य होस्टों से ही।

आप भी इस में दिलचस्पी हो सकती: Chris McCoord on the subject

+1

पोर्ट 436 9 का उपयोग केवल वास्तविक बंदरगाहों को संवाद करने के लिए किया जाता है। – filmor

+0

@filmor सही लगता है। सुधार के लिए धन्यवाद। –

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