মেশিনগুলি স্যুইচ করার পরে আমি কীভাবে খরগোশ পুনরায় চালু করব?


16

আমি ইসি 2 তে জ্যাঙ্গো / সেলারি চালাচ্ছি, দালাল হিসাবে খরগোশকে নিয়ে। আমি যে মেশিনটি ব্যবহার করছিলাম তা ব্যর্থ হয়েছে, তাই আমি অন্য একটি উদাহরণ সরিয়ে ফেললাম। তবে নতুন মেশিনে স্যুইচ করার পরে, আমি সেলারি কাজ করতে পারিনি।

সম্পাদনা: আমি নীচে প্রচুর লগ অন্তর্ভুক্ত করেছি, যদি আমি সমস্যাটি ভুলভাবে নির্ণয় করি। তবে আমি 85% নিশ্চিত যে সমস্যাটি হ'ল খরগোশ-সার্ভারটি "স্টার্টিং ডাটাবেস" পর্যায়ে ব্যর্থ হতে পারে।

node          : rabbit@ip-10-212-66-181
app descriptor: /usr/lib/rabbitmq/lib/rabbitmq_server-1.7.2/sbin/../ebin/rabbit.app
home dir      : /var/lib/rabbitmq
cookie hash   : 5+uQ077En5bpvle3HJCQMg==
log           : /var/log/rabbitmq/rabbit.log
sasl log      : /var/log/rabbitmq/rabbit-sasl.log
database dir  : /var/lib/rabbitmq/mnesia/rabbit

starting internal event notification system                           ...done
starting logging server                                               ...done
starting database                                                     ...Erlang has closed

এই সমস্যাটি আরও কীভাবে নির্ধারণ / সমাধান করা যায় সে সম্পর্কে কোনও ধারণা?

আমি সেলারি চালানোর চেষ্টা করলে কী হয় তা এখানে:

$ python manage.py celeryd -l info
/opt/bitnami/python/lib/python2.6/site-packages/django_celery-2.4.2-py2.6.egg/djcelery/loaders.py:86: UserWarning: Using settings.DEBUG leads to a memory leak, never use this setting in production environments!
  warnings.warn("Using settings.DEBUG leads to a memory leak, never "
[2011-12-05 19:40:13,545: WARNING/MainProcess]  

 -------------- celery@ip-10-212-66-181 v2.4.3
---- **** -----
--- * ***  * -- [Configuration]
-- * - **** ---   . broker:      amqp://guest@localhost:5672//
- ** ----------   . loader:      djcelery.loaders.DjangoLoader
- ** ----------   . logfile:     [stderr]@INFO
- ** ----------   . concurrency: 1
- ** ----------   . events:      OFF
- *** --- * ---   . beat:        OFF
-- ******* ----
--- ***** ----- [Queues]
 --------------   . celery:      exchange:celery (direct) binding:celery


[Tasks]
  . tbAnalytics.models.processAnalysis
  . tbCollections.models.processCollection

[2011-12-05 19:40:13,558: INFO/PoolWorker-1] child process calling self.run()
[2011-12-05 19:40:13,562: WARNING/MainProcess] celery@ip-10-212-66-181 has started.
[2011-12-05 19:40:13,564: ERROR/MainProcess] Consumer: Connection Error: [Errno 111] Connection refused. Trying again in 2 seconds...
[2011-12-05 19:40:15,574: ERROR/MainProcess] Consumer: Connection Error: [Errno 111] Connection refused. Trying again in 4 seconds...

এটিকে অনুসরণ করে, দেখে মনে হচ্ছে খরগোশ সার্ভারটি সমস্যা এবং বিশেষ করে ডাটাবেস:

$ sudo rabbitmqctl status
Status of node 'rabbit@ip-10-212-66-181' ...
Error: unable to connect to node 'rabbit@ip-10-212-66-181': nodedown
diagnostics:
- nodes and their ports on ip-10-212-66-181: [{rabbitmqctl14448,38289}]
- current node: 'rabbitmqctl14448@ip-10-212-66-181'
- current node home dir: /var/lib/rabbitmq
- current node cookie hash: 5+uQ077En5bpvle3HJCQMg==

তবে আমি কীভাবে সার্ভারটি পুনরায় চালু করতে পারি তা বুঝতে সক্ষম হয়ে উঠতে পারি না:

bitnami@ip-10-212-66-181:/var/log/rabbitmq$ sudo rabbitmq-server start_app

+---+   +---+
|   |   |   |
|   |   |   |
|   |   |   |
|   +---+   +-------+
|                   |
| RabbitMQ  +---+   |
|           |   |   |
|   v1.7.2  +---+   |
|                   |
+-------------------+
AMQP 8-0
Copyright (C) 2007-2010 LShift Ltd., Cohesive Financial Technologies LLC., and Rabbit Technologies Ltd.
Licensed under the MPL.  See http://www.rabbitmq.com/

node          : rabbit@ip-10-212-66-181
app descriptor: /usr/lib/rabbitmq/lib/rabbitmq_server-1.7.2/sbin/../ebin/rabbit.app
home dir      : /var/lib/rabbitmq
cookie hash   : 5+uQ077En5bpvle3HJCQMg==
log           : /var/log/rabbitmq/rabbit.log
sasl log      : /var/log/rabbitmq/rabbit-sasl.log
database dir  : /var/lib/rabbitmq/mnesia/rabbit

starting internal event notification system                           ...done
starting logging server                                               ...done
starting database                                                     ...Erlang has closed
{"init terminating in do_boot",{{nocatch,{error,{cannot_start_application,rabbit,{bad_return,{{rabbit,start,[normal,[]]},{'EXIT',{{case_clause,{error,{timeout_waiting_for_tables,[rabbit_user,rabbit_user_permission,rabbit_vhost,rabbit_config,rabbit_listener,rabbit_durable_route,rabbit_route,rabbit_reverse_route,rabbit_durable_exchange,rabbit_exchange,rabbit_durable_queue,rabbit_queue]}}},[{rabbit,'-run_boot_step/1-lc$^1/1-1-',1},{rabbit,run_boot_step,1},{rabbit,'-start/2-lc$^0/1-0-',1},{rabbit,start,2},{application_master,start_it_old,4}]}}}}}}},[{init,start_it,1},{init,start_em,1}]}}

Crash dump was written to: erl_crash.dump
init terminating in do_boot ()

এছাড়াও, এটি প্রাসঙ্গিক কিনা তা জানবেন না, তবে এই প্রক্রিয়াটি পটভূমিতে চলছে।

$ ps aux | grep rabbit
rabbitmq   714  0.0  0.0   1980   408 ?        S    Dec04   0:00 /usr/lib/erlang/erts-5.7.4/bin/epmd -daemon

আমি এই জাতীয় ব্যর্থতার জন্য কোনও ডকুমেন্টেশন খুঁজে পাইনি। কোনও পরামর্শ?

উত্তর:


16

আমি খরগোশ-আলোচনার তালিকা থেকে কিছু খুব ভাল সহায়তা পেয়েছি:

রাবিটএমকিউ ব্যবহার করে যে ডাটাবেসটি মেশিনের হোস্টনামের সাথে আবদ্ধ, তাই যদি আপনি অন্য মেশিনে ডাটাবেস দির অনুলিপি করেন তবে এটি কার্যকর হবে না। যদি এটি হয় তবে আপনাকে পূর্বের মতো একই হোস্টনামের সাথে একটি মেশিন স্থাপন করতে হবে এবং কোনও নতুন মেশিনে কোনও অসামান্য বার্তা স্থানান্তর করতে হবে। খরগোশের ক্ষেত্রে গুরুত্বপূর্ণ কিছু না থাকলে আপনি কেবলমাত্র / var / lib / rabbitmq এর RabbitMQ ফাইলগুলি সরিয়ে সমস্ত কিছু পরিষ্কার করতে পারেন।

আমি / var / lib / rabbitmq / mnesia / খরগোশের / সমস্ত কিছু মুছে ফেলেছি এবং এটি কোনও ঝামেলা ছাড়াই শুরু হয়েছিল। হুররে!


8

ইস্যুটি এই সত্যের সাথে সম্পর্কিত যে ম্যান্সিয়া, যা রেবিটএমকিউয়ের সারি এবং মেটা-ডেটা কনফিগারেশন সঞ্চয় করে, মেশিনের হোস্ট-নেম ব্যবহার করে একটি ডাটাবেস তৈরি করে।

এই জাতীয় হোস্টনাম ভিত্তিক ডাটাবেস ডিরেক্টরি নীচে অবস্থিত হবে:

<rabbitmq_installdir>/var/lib/rabbitmq/mnesia/rabbit@<yourhostname>
<rabbitmq_installdir>/var/lib/rabbitmq/mnesia/rabbit@<yourhostname>-plugins-expanded

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

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

মেটাডেটা কনফিগারেশনটি নিষ্কাশন বা আমদানির দুটি উপায় রয়েছে

  • ম্যানেজমেন্ট প্লাগইন: খরগোশকের পরিচালনা প্লাগইনটি সক্রিয় করুন এবং ইউআরএল সার্ভারে যান: 15672। মূল পৃষ্ঠায় নীচে দুটি বিকল্প রয়েছে, একটি রফতানি করতে হবে এবং একটি সংজ্ঞাটি আমদানি করতে হবে

  • কমান্ড লাইন: rabbitmqadmin রফতানি খরগোশ config (বা রফতানির পরিবর্তে আমদানি)

সুতরাং, নীচের অংশের পরামর্শগুলি:

  • আপনার সারি কাঠামো / ব্যবহারকারী / ইত্যাদির বর্তমান রফতানি রাখুন
  • সার্ভারগুলি স্থানান্তরিত করার সময়, বা পুনরুদ্ধারের মধ্য দিয়ে যাওয়ার সময়, পূর্ববর্তী ডিরেক্টরি কাঠামোটি মুছে ফেলার জন্য পদক্ষেপ নিন (যদি সজ্জিত ডেটা অপ্রাসঙ্গিক হয়) এবং মূল কনফিগারেশন / মেটাডেটা পুনরায় আমদানি করুন।
  • যদি কোনও স্থির ক্রমযুক্ত ডেটা প্রাসঙ্গিক হয় তবে সর্বোত্তম বিকল্পটি হ'ল আপনার পুনরুদ্ধার হওয়া হোস্টের হোস্টের নামটি মূলের সাথে নামকরণ এবং বার্তাগুলি প্রসেস / শিরোনামের অনুমতি দেওয়ার জন্য প্রয়োজন হয় তবে প্রয়োজনের পরে আপনি আবার হোস্টনাম সামঞ্জস্য করতে পারেন।

1

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

মূল সমস্যাটি হ'ল আপনার নতুন মেশিনটির নতুন হোস্ট-নেম রয়েছে - এবং ডিরেক্টরিটির নাম অনুসারে ডিরেক্টরিটির নামকরণ করা হয়েছে (কেবল পূর্বে উল্লিখিত ডিরেক্টরিটির নামকরণ করা, সহায়তা করে না) তাই আমাদের আপনার মেশিনের হোস্টনামটির নাম পরিবর্তন করতে হবে এবং রাবিটমিকিউকে পুরানো ফাইলগুলির সাথে কাজ করতে হবে। "Ip-0-0-0-0" পুরানো মেশিনের নাম হতে দিন (সুতরাং সেখানে মেনেসিয়া ফোল্ডার / Ver / lib / rabbitmq / mnsesia / ip-0-0-0-0 হওয়া উচিত ) এবং নতুন মেশিন হোস্টের নাম "ip-1-1-1-1" এর মতো কিছু, তবে নতুন নামটি আমাদের পক্ষে এটি ওভাররাইট করার কারণে গুরুত্বপূর্ণ নয়। নিম্নলিখিত আদেশগুলি কার্যকর করুন:

sudo -s
echo "127.0.0.1 ip-0-0-0-0" >> /etc/hosts 
echo "ip-0-0-0-0" > /etc/hostname
reboot

পুনরায় বুট করার পরে আপনার মেশিনটির একটি নতুন নাম থাকবে এবং রাবিটমিকিউ পুরানো ফাইলগুলির সাথে কাজ করবে।

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