درباره نگهداری 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 مشخص شده‌اند. در محیط چندمرکز داده، فایل پیکربندی Edge برای هر مرکز داده باید فقط گره‌های ZooKeeper را برای آن مرکز داده فهرست کند

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

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

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

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

و برای «مرکز داده»

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

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

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

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

اگر حد نصاب گره‌های رأی‌دهنده دردسترس نباشد، هیچ رهبری نمی‌تواند انتخاب شود. در این سناریو، Zookeeper نمی‌تواند به درخواست‌ها پاسخ دهد. این یعنی تا زمانی که حد نصاب بازیابی نشود، نمی‌توانید درخواستی به Edge Management Server ارسال کنید، درخواست‌های Management API را پردازش کنید، یا به Edge UI وارد شوید.

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

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

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

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

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

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

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

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

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

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

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

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

تعمیرونگهداری در چندین مرکز داده

When working with multiple Data Centers, remember that the ZooKeeper ensemble does not distinguish between Data Centers. مجموعه‌های 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

    که در آن 2181 درگاه ZooKeeper است. باید خروجی را در فرم ببینید:
    Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT
    Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Latency min/avg/max: 0/0/0
    Received: 1
    Sent: 0
    Connections: 1
    Outstanding: 0
    Zxid: 0xc00000044
    Mode: follower
    Node count: 653


    در خط Mode خروجی برای گره‌ها، باید observer،‏ leader، یا follower (به‌معنای رأی‌دهنده‌ای که رهبر نیست) را بسته به پیکربندی گره ببینید.

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

خلاصه

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

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