আমি কীভাবে র‌্যাবিট এমকিউ কেবল লোকাল হোস্টে শুনতে পারি?


40

আমি একটি ডেবিয়ান লিনাক্স স্কুইজ মেশিনে রাবিট এমকিউ ইনস্টল করেছি এবং আমি এটি কেবল লোকালহোস্ট ইন্টারফেস শুনতে চাই। আমি যুক্ত করেছি

RABBITMQ_NODE_IP_ADDRESS=127.0.0.1

আমার /etc/rabbitmq/rabbitmq.confফাইলে, এবং এটি amqpপোর্টে শুনার সময় এটি কেবলমাত্র স্থানীয় হোস্ট ইন্টারফেসের সাথে আবদ্ধ করে তোলে (5672)। যাইহোক, এপিএমডি (4369) এবং 43380 পোর্টগুলি শুনলে এটি এখনও সমস্ত ইন্টারফেসের সাথে আবদ্ধ থাকে:

# lsof -n -a -i -urabbitmq
COMMAND   PID     USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
epmd     7353 rabbitmq    3u  IPv4 1177662      0t0  TCP *:epmd (LISTEN)
epmd     7353 rabbitmq    5u  IPv4 1177714      0t0  TCP 127.0.0.1:epmd->127.0.0.1:50877 (ESTABLISHED)
beam.smp 7365 rabbitmq   10u  IPv4 1177711      0t0  TCP *:43380 (LISTEN)
beam.smp 7365 rabbitmq   11u  IPv4 1177713      0t0  TCP 127.0.0.1:50877->127.0.0.1:epmd (ESTABLISHED)
beam.smp 7365 rabbitmq   19u  IPv4 1177728      0t0  TCP 127.0.0.1:amqp (LISTEN)

আমি কীভাবে এটি প্রতিরোধ করব? আমাকে কি আইপিটিবেলগুলি স্থাপন করতে হবে, বা এমন কি অতিরিক্ত রেবিটএমকিউ কনফিগারেশন বিকল্প রয়েছে যা এটি আমার যা করতে চাইবে তা করতে পারে?


এপিএমডি রাবিটএমকিউর অংশ নয়। এটি এরং নামকরণ ডেমন। শুধুমাত্র লোকালহোস্টের সাথে আবদ্ধ থাকার সর্বোত্তম উপায় হ'ল খরগোশকে নডনাম 'খরগোশ @ লোকালহোস্ট' দেওয়া। এটি একাধিক র‌্যাবিট এমকিউ সার্ভারগুলি গুচ্ছ করার জন্য ব্যবহৃত নডনাম এবং এটি নেটওয়ার্কের নোড সন্ধান করতে এরলং ব্যবহার করে। @ এর পরে অংশটি হল হোস্টনাম যা খরগোশটি চলছে এবং স্পষ্টতই, লোকালহোস্ট কোনও বাহ্যিকভাবে অ্যাক্সেসযোগ্য নাম নয়।
মাইকেল ডিলন

উত্তর:


48

নিম্নলিখিতটি /etc/rabbitmq/rabbitmq-env.confরাখলে রবিট এমকিউ এবং এপিএমডি কেবল লোকাল হোস্টে শুনবে:

export RABBITMQ_NODENAME=rabbit@localhost
export RABBITMQ_NODE_IP_ADDRESS=127.0.0.1
export ERL_EPMD_ADDRESS=127.0.0.1

উচ্চতর সংখ্যাযুক্ত বন্দরটির জন্য লোকালহোস্ট ব্যবহার করতে এরলংকে কনফিগার করতে আরও কিছু কাজ লাগে (যা আমি বলতে পারি ক্লাস্টারিং নোডের জন্য ব্যবহৃত হয়)। যদি আপনি ক্লাস্টারিংয়ের বিষয়ে চিন্তা করেন না এবং কেবল খরগোশ পুরোপুরি স্থানীয়ভাবে চালিত হতে চান তবে আপনি কেবল লুপব্যাক ইন্টারফেসটি ব্যবহার করার জন্য এরলংকে একটি কার্নেল বিকল্পটি পাস করতে পারেন।

এটি করতে, একটি নতুন ফাইল তৈরি করুন /etc/rabbitmq/- আমি এটি কল করব rabbit.config। এই ফাইলটিতে আমরা এরলং বিকল্পটি রাখব যা আমাদের রান সময় লোড করতে হবে।

[{kernel,[{inet_dist_use_interface,{127,0,0,1}}]}].

আপনি যদি ম্যানেজমেন্ট প্লাগইন ব্যবহার করে থাকেন এবং লোকালহোস্টের মধ্যেও এটি সীমাবদ্ধ রাখতে চান তবে আপনাকে এর বন্দরগুলি পৃথকভাবে কনফিগার করতে হবে, খরগোশকে কনফিগ এতে অন্তর্ভুক্ত করে:

[ {rabbitmq_management, [ {listener, [{port, 15672}, {ip, "127.0.0.1"}]} ]}, {kernel, [ {inet_dist_use_interface,{127,0,0,1}} ]} ].

(দ্রষ্টব্য রবিটএমকিউ এপিএমডিটি বন্ধ হয়ে যাওয়ার সাথে সাথেই চলে যাবে, সুতরাং আপনি যদি এরলংয়ের ক্লাস্টারিং বন্দরটি বন্ধ করতে চান তবে আপনাকে রাবিট থেকে পৃথকভাবে এপিএমডি পুনরায় চালু করতে হবে))

পরবর্তী র‌্যাবিট এমকিউ শুরুতে এটি লোড করা আমাদের দরকার। /etc/rabbitmq/rabbitmq.confআবার খুলুন এবং নিম্নলিখিতটি উপরে রাখুন:

export RABBITMQ_CONFIG_FILE="/etc/rabbitmq/rabbit"

এই খরগোশের সার্ভারটি শুরু হওয়ার পরে কনফিগারেশন ফাইলটি লোড হয় এবং এরলংগুলিতে বিকল্পগুলি পাস করবে।

আপনার এখন সমস্ত লোকাল হোস্টে সমস্ত এড়ং / রাবিট এমকিউ শোনা উচিত! এটি দিয়ে পরীক্ষা করা যায়netstat -ntlap

সম্পাদনা করুন: RabbitMQ পুরোনো সংস্করণে, কনফিগারেশন ফাইল হল: /etc/rabbitmq/rabbitmq.conf। তবে এই ফাইলটি ফাইলটি প্রতিস্থাপন করেছে rabbit-env.conf


1
বলিহারি! ধন্যবাদ। দ্রষ্টব্য: ইপিএল এর মাধ্যমে সেন্টোস / আরএইচইএল-এর জন্য র‌বিটএমকিউতে আমার 'রেবিটমেক-এনভাকনফ' দরকার ছিল। এবং 'খরগোশ' কনফিগের জন্য 'খরগোশ' রফতানিটি আমার কাছে অদ্ভুত বলে মনে হলেও এটি প্রত্যয় হিসাবে কাজ করেছিল।
অ্যাস্ট্রোস্টল

" /etc/rabbitmq/rabbitmq.confআবার খুলুন "। আবার কেন"? মানে rabbitmq-env.conf?
ফিনজ

পরিবেশের পরিবর্তনশীল ERL_EPMD_ADDRESSকেবলমাত্র এপিএমডির শ্রবণকারী আইপি নিয়ন্ত্রণ করে, আপনি যদি রেবিটএমকিউ-র শ্রবণকারী আইপি ক্লাস্টার পোর্ট (25672) পরিবর্তন করতে চান তবে আপনাকে inet_dist_use_interfaceবিকল্পটি ব্যবহার করতে হবে । NODE_IP_ADDRESS=127.0.0.1 ERL_EPMD_ADDRESS=127.0.0.1 SERVER_START_ARGS="-kernel inet_dist_use_interface {127,0,0,1}"
টেরি

13

রবিট এমকিউ লোকালহোস্ট / শোনার জন্য কেবল লোকালহোস্টে শোনার জন্য:

3 বিভিন্ন উপায়ে (সমস্ত সমতুল্য):

  • এনভায়রনমেন্ট ভেরিয়েবল ফাইলটিতে NODE_IP_ADDRESS = 127.0.0.1 রাখুন (দেখুন http://www.rabbitmq.com/configure.html#define-enferences-variables )

  • Tcp_listeners এবং ssl_listeners বৈশিষ্ট্যগুলি কনফিগার ফাইলে রাখুন: কনফিগারেশন এন্ট্রি tcp_listeners এবং ssl_listeners রব্বিটএমকিউ শুনে এমন ইন্টারফেসগুলি পরিচালনা করে। লোকালহোস্টে কেবল শোনার জন্য একটি প্রবেশিকা উদাহরণস্বরূপ, c tcp_listeners, [12 '127.0.0.1', 5672}]} (সিনট্যাক্স সঠিক নাও হতে পারে, এটি পরীক্ষা করে দেখুন) http://www.rabbitmq.com/configure.html# কনফিগ ফাইল

  • env রফতানি করুন। প্রারম্ভিক স্ক্রিপ্টে পরিবর্তনশীল (/etc/init.d/rabbitmq-server) রফতানি র‌্যাববিটমকিউ_এনওডি_আইপি_এডিএড্রেস = 127.0.0.1

দ্বিতীয়টি আমার পক্ষে কাজ করেছিল।

EPMD:

এপিএমডি প্রোগ্রাম এরলং রানটাইম কাজের বিতরণ অংশ তৈরি করে। আপনি যদি একটি মাল্টি-মেশিন ক্লাস্টার তৈরি করে থাকেন তবে আপনাকে এগুলি অন্যান্য নোডে এবং অ্যাক্সেসে লোকালহোস্টে অ্যাক্সেসযোগ্য রেখে দেওয়া উচিত। তবে এতে কুকি ফাইলের মাধ্যমে অন্তর্নির্মিত সুরক্ষা রয়েছে।

এটি খুব কমই কোন মনোযোগ প্রয়োজন। কেবল মনে রাখবেন যে এরলং প্রোগ্রামগুলি (যেমন খরগোশমেক্টটেল সহ) অন্যান্য বামন প্রোগ্রামগুলির সাথে যোগাযোগ করতে সেই বন্দরটি অ্যাক্সেস করা দরকার।

তবে, যদি আপনি আর্থিক তথ্য বা স্বাস্থ্য রেকর্ডগুলির সাথে কাজ করে থাকেন তবে এপিএমডি রক্ষা করা ভাল ধারণা হতে পারে। ডিফল্ট পোর্ট এপিএমডি ব্যবহারগুলি 4369, অন্যান্য প্রোগ্রামগুলি এটির সাথে টিসিপির মাধ্যমে সংযুক্ত থাকে।

আরও দেখুন: http://www.erlang.org/doc/man/epmd.html# পরিবেশ - পরিবর্তনগুলি

আপনার যদি আর কোনও খরগোশ এমকিউ সুরক্ষিত করার প্রয়োজন হয়,

  1. অন্তর্নির্মিত অতিথি অ্যাকাউন্টটি অক্ষম করুন http://www.rabbitmq.com/admin-guide.html#default-state

  2. এসএসএল ব্যবহার এবং শংসাপত্র শৃঙ্খলা ব্যবহার করে প্রমাণীকরণ বিবেচনা করুন

আমি এই উত্তরগুলি RabbitMQ সম্প্রদায় আইআরসি চ্যানেল থেকে পেয়েছি।

তাদের ধন্যবাদ জানাতে চাই।

http://dev.rabbitmq.com/irclog/index.php?date=2011-06-14

আশা করি উপরেরগুলি আপনার জন্য কিছুটা সময় সাশ্রয় করবে (উত্তর পেতে আমাকে 6 ঘন্টা সময় লাগল)।


উপরের এপিএমডি লিঙ্কটি ERL_EPMD_ADDRESS এর জন্য একটি এন্ট্রি রয়েছে, সম্ভবত এপিএমডি ঠিকানার সাথে আবদ্ধ হবে সেট করার জন্য রেবিটমিকিউ ব্যবহারকারীর জন্য সেই পরিবেশের পরিবর্তনশীলটি কোথায় সেট করতে হবে তা ছাড়া আমি দেখতে পাচ্ছি না।
ফ্রান্সোইস বিউসোলিল

5

আপনি যদি খরগোশ mq.conf ফাইলে পরিবেশের ভেরিয়েবলগুলি নির্দিষ্ট করে থাকেন তবে আপনাকে RABBITMQ_ উপসর্গটি ফেলে দিতে হবে, তাই চেষ্টা করুন:

NODE_IP_ADDRESS = 127.0.0.1


আমার ইনস্টলেশনে, হয় RABBITMQ_NODE_IP_ADDRESSবা NODE_IP_ADDRESSকাজ করে তবে কেবল এমএকিপি পোর্টের জন্যই উল্লেখ করা হয়েছে।
Vebjorn Ljosa

1
এপিএমডি বন্দরটি ইরং পোর্ট ম্যাপারের একটি ফাংশন এবং আফাইক এটির বাইন্ড ঠিকানা সীমাবদ্ধ করা সম্ভব নয়।
সিবিজেড

এছাড়াও, ইপিএমডি পোর্টটি কুকিজের সাহায্যে সুরক্ষিত রয়েছে যাতে আপনার রাবিটএমকিউ সার্ভার কুকি না জানলে কেউ সংযোগ করতে পারে না। আপনি কেবল এই কুকিটি কোনও খরগোশ এমকিউ ক্লাস্টারের অন্য সদস্যদের দিতে পারেন। একটি API কী হিসাবে একই নীতি।
মাইকেল ডিলন

1

আফাইক আপনি এপিএমডি ইন্টারফেসগুলি সত্যই কনফিগার করতে পারবেন না। আপনি কেবল এপিএমডি পোর্ট সেট আপ করতে পারেন: http://www.erlang.org/faq/how_do_i.html#id55132

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.