2014-09-30 7 views
5

के पीछे लोचदार खोज क्लस्टरिंग मेरे पास दो अलग-अलग डिजिटल महासागर बूंदों पर चल रहा एक लोचदार खोज समूह है। वे दोनों निजी नेटवर्किंग के लिए स्थापित हैं, मेरे पास एक मोंगो डीबी प्रतिकृति सेट है जो बूंदों के विशिष्ट (निजी) आईपी पते से प्रासंगिक बंदरगाहों पर कनेक्शन स्वीकार करने के लिए स्थापित यूएफडब्ल्यू नियमों के साथ ठीक है।यूएफडब्ल्यू फ़ायरवॉल

हालांकि मैं एक ही विधि का उपयोग करके एक हरा लोचदार खोज क्लस्टर स्वास्थ्य प्राप्त करने में सक्षम नहीं हूं, केवल पीला। इसका मतलब है कि नोड्स एक-दूसरे से जुड़ने में सक्षम नहीं हैं।

elasaticsearch.yml (दोनों मशीनों पर) में मैंने मल्टीकास्ट को अक्षम कर दिया है और बूंदों के आंतरिक आईपी पते से कनेक्ट करने के लिए यूनिकास्ट का उपयोग कर रहा हूं। जब मैं पोर्ट 9300 (ufw 9300 की अनुमति देता हूं) पर सभी कनेक्शन स्वीकार करने के लिए फ़ायरवॉल स्थापित करता हूं तो यह ठीक काम करता है, और क्लस्टर स्वास्थ्य को हरे रंग के रूप में रिपोर्ट किया जाता है। हालांकि, जब मैं केवल वास्तविक आईपी पते से अनुमति देने के लिए नियम को प्रतिबंधित करता हूं, जैसे कि मोंगो डीबी प्रतिकृति सेट के साथ, यह काम नहीं करता है। मैंने सार्वजनिक और निजी पते दोनों और आईपीवी 4 और आईपीवी 6 के साथ प्रयास किया है।

मुझे यहां क्या याद आ रही है?

उत्तर

2

IPV6 डिफ़ॉल्ट रूप से पसंद किया जाता है। आप इस व्यवहार को java.net.preferIPv4Stack सिस्टम प्रॉपर्टी true पर सेट करके बदल सकते हैं।
आपको भी देखना होगा, डिफ़ॉल्ट रूप से ES anyLocalAddress (आमतौर पर 0.0.0.0 या ::0) से बांधें। आप सही आईपी पते के साथ network.bind_host सेट करके इसे बदल सकते हैं।

Reference [1.3] » Modules » Network Settings


अद्यतन:

सबसे पहले, मैं तुम्हें तो अपने में IPv6 को अक्षम की सलाह देते हैं, तो आप इन चरणों का पालन कर सकते हैं:

/etc/sysctl.conf में:

net.ipv6.conf.all.disable_ipv6 = 1 
net.ipv6.conf.default.disable_ipv6 = 1 
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6 
echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6 

या

sysctl -w net.ipv6.conf.all.disable_ipv6=1 
sysctl -w net.ipv6.conf.default.disable_ipv6=1 

उसके बाद, आप elasticsearch.yml में network.bind_host का मूल्य उनके संबंधित आईपी के

# Elasticsearch, by default, binds itself to the 0.0.0.0 address, and listens 
# on port [9200-9300] for HTTP traffic and on port [9300-9400] for node-to-node 
# communication. (the range means that if the port is busy, it will automatically 
# try the next port). 
# Set the bind address specifically (IPv4 or IPv6): 
# 
network.bind_host: 10.0.0.1 
# Set the address other nodes will use to communicate with this node. If not 
# set, it is automatically derived. It must point to an actual IP address. 
# 
network.publish_host: 10.0.0.1 

या दोनों के साथ नोड्स में परिवर्तन करना होगा:चल प्रणाली में अक्षम करने के लिए सेट

# Set both 'bind_host' and 'publish_host': 
# 
network.host: 10.0.0.1 

अंत में आपको अपने नेटवर्क एडेप्टर की कॉन्फ़िगरेशन को सत्यापित करना होगा, दोनों को पहले आईपी के साथ सही ढंग से कॉन्फ़िगर किया जाना चाहिए।

उम्मीद है कि यह

+0

धन्यवाद करके! नेटस्टैट का उपयोग करके मैं देखता हूं कि लोचदार खोज आईपीवी 6 पर संचार करता है। मैं वास्तव में समझ नहीं पा रहा हूं कि ईएस के लिए सही आईपी पता क्या होगा। अभी तक मैं network.host = [localhost, 10.0.0.1 (example)] को सेट करता हूं दूसरे मेजबान पर प्रथम नोड और [स्थानीय होस्ट, 10.0.0.2 (उदाहरण)]। यह सही है? netstat से मैं यह भी देखना है कि ते 9300 के साथ-साथ अन्य की तुलना में बंदरगाहों की एक पूरी श्रृंखला का उपयोग करता है, लेकिन यह क्यों की व्याख्या नहीं करता जब मैं किसी भी ट्रैफ़िक के लिए बंदरगाह 9300 खोलता हूं तो क्लस्टर संवाद कर सकते हैं, लेकिन जब मैं नोड के आईपी पते निर्दिष्ट नहीं करता हूं। – Axelfran

+0

मुझे इसे अभी काम करने के लिए मिला। मैंने आपके निर्देशों का पालन किया, और वास्तव में मुझे फायरव में आंतरिक और बाहरी दोनों आईपी को अनुमति देना पड़ा सब इसे करने के लिए। आपका बहुत बहुत धन्यवाद! – Axelfran

0

यदि आप नीचे दिए गए दस्तावेज़ को चेकआउट करते हैं तो यह कहता है कि ईएस ट्रांसपोर्ट डिफ़ॉल्ट रूप से पोर्ट्स 9300-9400 का उपयोग करता है। मैं उस सीमा को खोलने की कोशिश करता हूं और फिर देखता हूं कि क्या आप इसे आगे लॉक कर सकते हैं।

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-transport.html

+1

दुर्भाग्य से यह काम नहीं करता है।मेरा मानना ​​है कि इस समस्या में यूनिकास्ट के साथ कुछ करना है, क्योंकि यह केवल आईपी से बंदरगाह 9300 (ईएस स्वचालित रूप से पहले किसी से कनेक्ट होता है, केवल ओट्स अगर यह काम नहीं करता है) की अनुमति देता है। लेकिन मेरा मानना ​​है कि मैं इस तरह elasticsearch.yml में अनुमति दी आईपीएस हार्डकोड द्वारा समस्या से उबरे: discovery.zen.ping.unicast.hosts: [ "node1: 9200]," node2:। 9200 "] – Axelfran

+0

अच्छी जानकारी – jhilden

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