درباره تعمیر و نگهداری ZooKeeper,درباره نگهداری ZooKeeper

Edge for Private Cloud نسخه 4.18.05

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

درباره ZooKeeper و Edge

در Edge، گره‌های ZooKeeper حاوی داده‌های پیکربندی در مورد مکان و پیکربندی اجزای مختلف 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 اضافه کنید تا نشان دهد که یادداشت یک گره ناظر است و نه یک رای دهنده. گره ناظر در انتخاب رهبر شرکت نمی کند.

شما معمولاً هنگام ایجاد چندین مرکز داده لبه یا زمانی که یک مرکز داده دارای تعداد زیادی گره ZooKeeper است، اصلاح کننده :observer را مشخص می کنید. به عنوان مثال، در یک نصب 12 میزبانی Edge با دو مرکز داده، ZooKeeper در گره 9 در مرکز داده 2 ناظر است:

سپس از تنظیمات زیر در فایل پیکربندی برای مرکز داده 1 استفاده کنید:

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 ارسال کنید، درخواست های مدیریت API را پردازش کنید، یا تا زمانی که حد نصاب بازیابی نشود، به UI Edge وارد شوید.

به عنوان مثال، در یک نصب مرکز داده واحد:

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

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

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

اضافه کردن گره ها به عنوان رای دهنده یا ناظر

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

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

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

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

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

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

تعمیر و نگهداری 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

    جایی که 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 (به معنای رأی‌دهنده‌ای که رهبر نیست) را ببینید.

  3. مراحل 1 و 2 را در هر گره ZooKeeper تکرار کنید.

خلاصه

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

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