درباره نگهداری ZooKeeper

Edge for Private Cloud نسخه ۴.۱۷.۰۱

گروه‌های ZooKeeper به‌گونه‌ای طراحی شده‌اند که با وجود ازدست رفتن یک یا چند گره ZooKeeper، همچنان کار کنند و داده‌ها ازدست نروند. از این انعطاف‌پذیری می‌توان به‌طور مؤثر برای انجام تعمیر و نگهداری در گره‌های ZooKeeper بدون زمان اَکار سیستم استفاده کرد.

درباره ZooKeeper و Edge

در Edge، گره‌های ZooKeeper حاوی داده‌های پیکربندی درباره مکان و پیکربندی اجزای مختلف Edge است و اجزای مختلف را از تغییرات پیکربندی مطلع می‌کند. همه توپولوژی‌های Edge پشتیبانی‌شده برای سیستم تولید مشخص می‌کنند که از حداقل سه گره ZooKeeper استفاده شود.

از ویژگی‌های ZK_HOSTS و ZK_CLIENT_HOSTS در فایل پیکربندی Edge برای مشخص کردن گره‌های ZooKeeper استفاده کنید. برای مثال:

ZK_HOSTS="$IP1 $IP2 $IP3" 
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3" 

کجا:

  • ZK_HOSTS - نشانی‌های IP گره‌های ZooKeeper را مشخص می‌کند. نشانی‌های IP باید در همه گره‌های ZooKeeper به یک ترتیب فهرست شوند.

    در محیط چند «مرکز داده»، همه گره‌های ZooKeeper را از همه «مراکز داده» فهرست کنید.
  • ZK_CLIENT_HOSTS - نشانی‌های IP گره‌های ZooKeeper را که فقط این «مرکز داده» استفاده می‌کند مشخص می‌کند. نشانی‌های IP باید در همه گره‌های ZooKeeper در «مرکز داده» به یک ترتیب فهرست شوند.

    در نصب «مرکز داده» تکی، این گره‌ها همان گره‌هایی هستند که توسط ZK_HOSTS مشخص شده‌اند. در محیط چندمرکز داده، فایل پیکربندی «لبه» برای هر «مرکز داده» باید فقط گره‌های ZooKeeper را برای آن «مرکز داده» فهرست کند

به‌طور پیش‌فرض، همه گره‌های ZooKeeper به‌عنوان گره‌های رأی‌دهنده تعیین می‌شوند. این یعنی گره‌ها همه در انتخاب رهبر ZooKeeper مشارکت می‌کنند. می‌توانید اصلاح‌گر «:observer» را با ZK_HOSTS اضافه کنید تا نشان دهید یادداشت گره ناظر است، نه رأی‌دهنده. گره ناظر در انتخاب رهبر شرکت نمی‌کند.

معمولاً اصلاح‌گر «:observer» را هنگام ایجاد چندین «مرکز داده Edge» یا زمانی‌که یک «مرکز داده» واحد تعداد زیادی گره ZooKeeper دارد مشخص می‌کنید. برای مثال، در نصب Edge با ۱۲ میزبان و دو «مرکز داده»، ZooKeeper در گره ۹ در «مرکز داده ۲» ناظر است:

سپس از تنظیمات زیر در فایل پیکربندی‌تان برای «مرکز داده ۱» استفاده می‌کنید:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

و برای Data Center

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"

درباره رهبران، پیروان، رأی‌دهندگان، و ناظران

در نصب چندگره‌ای ZooKeeper، یکی از گره‌ها به‌عنوان رهبر تعیین می‌شود. همه گره‌های دیگر ZooKeeper به‌عنوان دنبال‌کننده تعیین می‌شوند. اگرچه خواندن می‌تواند از هر گره ZooKeeper انجام شود، همه درخواست‌های نوشتن به رهبر ارسال می‌شود. برای مثال، یک «پردازنده پیام» جدید به Edge اضافه می‌شود. این اطلاعات در رهبر ZooKeeper نوشته می‌شود. همه پیروان سپس داده‌ها را تکرار کنید.

در زمان نصب Edge، هر گره ZooKeeper را به‌عنوان رأی‌دهنده یا به‌عنوان ناظر تعیین می‌کنید. سپس رهبر توسط همه گره‌های رأی‌دهنده ZooKeeper انتخاب می‌شود. تنها شرط لازم برای انتخاب رهبر این است که باید حدنصاب گره‌های رأی‌دهنده ZooKeeper فعال دردسترس باشد. A حد نصاب یعنی بیش‌از نیمی از همه گره‌های رأی‌دهنده ZooKeeper در همه «مراکز داده» کار می‌کنند.

اگر تعداد کافی گره رأی‌دهنده دردسترس نباشد، هیچ رهبری نمی‌تواند انتخاب شود. در این سناریو، ‫Zookeeper نمی‌تواند به درخواست‌ها رسیدگی کند. این یعنی تا زمانی که حدنصاب بازگردانده نشود، نمی‌توانید درخواستی به «سرور مدیریت Edge» ارسال کنید، درخواست‌های «میانای برنامه‌سازی کاربردی مدیریت» را پردازش کنید، یا به سیستم «واسط کاربر Edge» وارد شوید.

برای مثال، در نصب «مرکز داده» تکی:

  • سه گره ZooKeeper نصب کردید
  • همه گره‌های ZooKeeper رأی‌دهنده هستند
  • حد نصاب دو گره رأی‌دهنده فعال است
  • اگر فقط یک گره رأی‌دهنده دردسترس باشد، گروه ZooKeeper نمی‌تواند کار کند

در نصب با دو «مرکز داده»:

  • سه گره ZooKeeper در هر «مرکز داده» نصب کردید، درمجموع شش گره
  • «مرکز داده ۱» سه گره رأی‌دهنده دارد
  • «مرکز داده ۲» دو گره رأی‌دهنده و یک گره ناظر دارد
  • حد نصاب براساس پنج رأی‌دهنده در هر دو «مرکز داده» است، بنابراین سه گره رأی‌دهنده فعال
  • اگر فقط دو یا تعداد کمتری گره رأی‌دهنده دردسترس باشد، گروه ZooKeeper نمی‌تواند عمل کند

افزودن گره‌ها به‌عنوان رأی‌دهنده یا ناظر

ممکن است الزامات سیستم شما ایجاب کند که گره‌های ZooKeeper بیشتری به نصب Edge خود اضافه کنید. مستندات افزودن گره‌های ZooKeeper نحوه افزودن گره‌های ZooKeeper اضافی به Edge را شرح می‌دهد. هنگام افزودن گره‌های ZooKeeper، باید نوع گره‌هایی را که می‌خواهید اضافه کنید (رأی‌دهنده یا ناظر) درنظر بگیرید.

باید مطمئن شوید که گره‌های رأی‌دهنده کافی دارید تا اگر یک یا چند گره رأی‌دهنده ازکار افتادند مجموعه ZooKeeper همچنان بتواند کار کند، یعنی همچنان تعداد کافی گره رأی‌دهنده دردسترس باشد. با افزودن گره‌های رأی‌دهنده، اندازه حد نصاب را افزایش می‌دهید و بنابراین می‌توانید گره‌های رأی‌دهنده بیشتری را تحمل کنید.

بااین‌حال، افزودن گره‌های رأی‌دهنده اضافی می‌تواند بر عملکرد نوشتن تأثیر منفی بگذارد زیرا عملیات نوشتن به توافق اکثریت آرا درباره رهبر نیاز دارد. زمان لازم برای تعیین رهبر براساس تعداد گره‌های رأی‌دهنده است که با افزودن گره‌های رأی‌دهنده بیشتر افزایش می‌یابد. بنابراین، نمی‌خواهید همه گره‌ها را رأی‌دهنده کنید.

به‌جای افزودن گره‌های رأی‌دهنده، می‌توانید گره‌های ناظر اضافه کنید. افزودن گره‌های ناظر عملکرد خواندن کلی سیستم را بدون افزودن به سربار انتخاب رهبر افزایش می‌دهد زیرا گره‌های ناظر رأی نمی‌دهند و بر اندازه حدنصاب تأثیر نمی‌گذارند. بنابراین، اگر گره ناظر ازکار بیفتد، بر توانایی گروه برای انتخاب رهبر تأثیر نمی‌گذارد. بااین‌حال، ازدست دادن گره‌های ناظر می‌تواند باعث افت عملکرد خواندن در مجموعه ZooKeeper شود زیرا گره‌های کمتری برای ارائه خدمات به درخواست‌های داده دردسترس است.

در یک «مرکز داده» واحد، Apigee توصیه می‌کند که صرف‌نظر از تعداد گره‌های ناظر، بیشتر از پنج رأی‌دهنده نداشته باشید. در دو «مرکز داده»، Apigee توصیه می‌کند که بیش‌از نه رأی‌دهنده نداشته باشید (پنج رأی‌دهنده در یک «مرکز داده» و چهار رأی‌دهنده در «مرکز داده» دیگر). سپس می‌توانید هر تعداد گره ناظر را که برای الزامات سیستم خود لازم است اضافه کنید.

ملاحظات نگهداری

اگر نگهداری ZooKeeper در یک گره در هر زمان انجام شود، می‌توان آن را در یک گروه کاملاً فعال بدون زمان توقف انجام داد. با اطمینان از اینکه در هر زمان فقط یک گره ZooKeeper غیرفعال است، می‌توانید مطمئن شوید که همیشه تعداد کافی از گره‌های رأی‌دهنده برای انتخاب رهبر دردسترس است.

نگهداری در چندین مرکز داده

هنگام کار با چندین «مرکز داده»، به‌یاد داشته باشید که مجموعه ZooKeeper بین «مراکز داده» تمایزی قائل نمی‌شود. نمای مونتاژهای ZooKeeper همه گره‌های ZooKeeper را در همه «مراکز داده» به‌عنوان یک گروه نشان می‌دهد.

مکان گره‌های رأی‌دهنده در یک «مرکز داده» معین هنگام انجام محاسبات حدنصاب توسط ZooKeeper عامل تعیین‌کننده نیست. گره‌های منفرد می‌توانند در سراسر «مراکز داده» ازکار بیفتند، اما تا زمانی که اکثریت در کل مجموعه حفظ شود، ZooKeeper همچنان کار می‌کند.

پیامدهای نگهداری

در زمان‌های مختلف، باید گره ZooKeeper را برای نگهداری پایین بیاورید، چه گره رأی‌دهنده باشد چه گره ناظر. برای مثال، ممکن است مجبور شوید نسخه Edge را در گره ارتقا دهید، دستگاهی که ZooKeeper را میزبانی می‌کند ممکن است ازکار بیفتد، یا گره ممکن است به‌دلیل دلیل دیگری مثل خطای شبکه دردسترس نباشد.

اگر گره‌ای که ازکار می‌افتد گره ناظر باشد، تا زمانی که گره بازیابی شود، می‌توانید انتظار افت جزئی در عملکرد گروه ZooKeeper داشته باشید. اگر گره یک گره رأی‌دهنده باشد، می‌تواند به‌دلیل ازدست رفتن گره‌ای که در فرایند انتخاب رهبر شرکت می‌کند، بر دوام گروه ZooKeeper تأثیر بگذارد. صرف‌نظر از دلیل ازکارافتادن گره رأی‌دهنده، حفظ حدنصاب گره‌های رأی‌دهنده دردسترس مهم است.

روش نگهداری

فقط پس‌از اطمینان از اینکه گروه ZooKeeper کار می‌کند باید هرگونه رویه نگهداری را انجام دهید. این فرض بر این است که گره‌های ناظر عملکردی هستند و گره‌های رأی‌دهنده کافی درطول نگهداری دردسترس هستند تا حدنصاب حفظ شود.

وقتی این شرایط برآورده شود، گروه ZooKeeper با اندازه دلخواه می‌تواند ازدست رفتن یک گره را در هر نقطه‌ای بدون ازدست دادن داده یا تأثیر معنادار بر عملکرد تحمل کند. این یعنی می‌توانید روی هر گره در گروه نگهداری انجام دهید، به‌شرطی که این کار را در هر زمان روی یک گره انجام دهید.

به‌عنوان بخشی از انجام تعمیر و نگهداری، از روش زیر برای تعیین نوع گره ZooKeeper (رهبر، رأی‌دهنده، یا ناظر) استفاده کنید:

  1. اگر روی گره ZooKeeper نصب نشده است، nc را نصب کنید:
    > sudo yum install nc
  2. فرمان nc زیر را در گره اجرا کنید:
    > echo stat | nc localhost 2181

    که در آن ۲۱۸۱ درگاه ZooKeeper است. باید برونداد را در این قالب ببینید:
    نسخه Zookeeper: ‏ 3.4.5-1392090، ساخته‌شده در ۰۹/۳۰/۲۰۱۲ ۱۷:۵۲ به وقت گرینویچ
    کاربران: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    کمینه/میانگین/بیشینه تأخیر: ۰/۰/۰
    دریافت‌شده: ۱
    ارسال‌شده: ۰
    اتصالات: ۱
    معوقه: ۰
    Zxid: ‏ 0xc00000044
    حالت: پیرو
    تعداد گره: ۶۵۳


    در خط حالت برونداد برای گره‌ها، باید ناظر، رهبر، یا پیرو (یعنی رأی‌دهنده‌ای که رهبر نیست) را بسته به پیکربندی گره ببینید.

    توجه: در نصب خوداتکای Edge با یک گره ZooKeeper، حالت روی خوداتکا تنظیم می‌شود.
  3. مراحل ۱ و ۲ را در هر گره ZooKeeper تکرار کنید.

خلاصه

بهترین روش برای انجام تعمیر و نگهداری روی گروه ZooKeeper این است که آن را در هر زمان روی یک گره انجام دهید. به‌یاد داشته باشید که:

  • باید درطول نگهداری، حدنصاب گره‌های رأی‌دهنده را حفظ کنید تا مطمئن شوید مجموعه ZooKeeper کار می‌کند
  • حذف گره ناظر تأثیری بر حد نصاب یا توانایی انتخاب رهبر ندارد
  • حد نصاب در همه گره‌های ZooKeeper در همه «مراکز داده» محاسبه می‌شود
  • پس‌از اینکه سرور قبلی عملیاتی شد، نگهداری سرور بعدی را شروع کنید
  • برای بازرسی گره ZooKeeper از فرمان nc استفاده کنید