مجموعههای 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
اضافه کنید تا نشان دهد که گره یک گره ناظر است و نه یک رای دهنده. گره ناظر در انتخاب رهبر شرکت نمی کند.
شما معمولاً هنگام ایجاد چندین مرکز داده لبه یا زمانی که یک مرکز داده دارای تعداد زیادی گره ZooKeeper است، اصلاح کننده :observer
را مشخص می کنید. به عنوان مثال، در یک نصب 12 میزبانی Edge با دو مرکز داده، ZooKeeper در گره 9 در مرکز داده 2 ناظر است:
سپس از تنظیمات زیر در فایل پیکربندی برای مرکز داده 1 استفاده کنید:
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
و برای مرکز داده 2:
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 را پردازش کنید، یا تا زمانی که حد نصاب بازیابی نشده است، وارد رابط کاربری Edge شوید.
به عنوان مثال، در یک نصب مرکز داده واحد:
- شما سه گره ZooKeeper را نصب کردید
- تمام گره های ZooKeeper رای دهنده هستند
- حد نصاب دو گره رای دهنده فعال است
- اگر فقط یک گره رای دهنده در دسترس باشد، مجموعه ZooKeeper نمی تواند کار کند
در یک نصب با دو مرکز داده:
- شما سه گره ZooKeeper را در هر مرکز داده نصب کردهاید که در مجموع شش گره است
- مرکز داده 1 دارای سه گره رأی دهنده است
- مرکز داده 2 دارای دو گره رأی دهنده و یک گره ناظر است
- حد نصاب بر اساس پنج رای دهنده در هر دو مرکز داده است و بنابراین سه گره رای دهنده فعال است
- اگر فقط دو یا کمتر گره رای دهنده در دسترس باشد، مجموعه ZooKeeper نمی تواند کار کند
ملاحظاتی برای اضافه کردن گره ها به عنوان رای دهنده یا ناظر
سیستم مورد نیاز شما ممکن است نیاز داشته باشد که گره های ZooKeeper اضافی را به نصب Edge خود اضافه کنید. مستندات افزودن گره های ZooKeeper نحوه افزودن گره های ZooKeeper اضافی به Edge را شرح می دهد. هنگام اضافه کردن گره های ZooKeeper، باید نوع گره هایی را که باید اضافه کنید در نظر بگیرید: رای دهنده یا ناظر.
شما میخواهید مطمئن شوید که گرههای رأیدهنده کافی وجود دارد تا اگر یک یا چند گره رأیدهنده پایین باشد، مجموعه ZooKeeper همچنان بتواند کار کند، به این معنی که هنوز حد نصاب گرههای رأیدهنده در دسترس است. با اضافه کردن گرههای رایدهنده، اندازه نصاب را افزایش میدهید، و بنابراین میتوانید پایین بودن گرههای رایدهنده بیشتری را تحمل کنید.
با این حال، افزودن گرههای رأیدهنده اضافی میتواند بر عملکرد نوشتن تأثیر منفی بگذارد، زیرا عملیات نوشتن به حد نصاب نیاز دارد تا روی رهبر توافق شود. زمان تعیین رهبر بر اساس تعداد گره های رأی دهنده است که با اضافه کردن گره های رأی دهنده بیشتر، افزایش می یابد. بنابراین، شما نمی خواهید همه گره ها را رای دهند.
به جای اضافه کردن گره های رأی دهنده، می توانید گره های ناظر را اضافه کنید. افزودن گرههای ناظر، عملکرد خواندن کلی سیستم را بدون افزودن به هزینه انتخاب رهبر افزایش میدهد، زیرا گرههای ناظر رأی نمیدهند و بر اندازه حد نصاب تأثیر نمیگذارند. بنابراین، اگر یک گره ناظر پایین بیاید، بر توانایی گروه برای انتخاب رهبر تأثیری نمی گذارد. با این حال، از دست دادن گرههای ناظر میتواند باعث کاهش عملکرد خواندن مجموعه ZooKeeper شود، زیرا گرههای کمتری برای سرویسدهی درخواستهای داده وجود دارد.
در یک مرکز داده، Apigee توصیه میکند که بدون توجه به تعداد گرههای ناظر، بیش از پنج رأیدهنده نداشته باشید. در دو مرکز داده، Apigee توصیه می کند که بیش از 9 رأی دهنده نداشته باشید (پنج نفر در یک مرکز داده و چهار نفر در مرکز دیگر). سپس می توانید به تعداد مورد نیاز برای سیستم خود گره های ناظر را اضافه کنید.
یک گره Zookeeper را حذف کنید
دلایل زیادی وجود دارد که ممکن است بخواهید گره Zookeeper را حذف کنید. به عنوان مثال، یک گره خراب شده یا به محیط اشتباه اضافه شده است.
این بخش نحوه حذف یک گره Zookeeper را در زمانی که گره پایین است و قابل دسترسی نیست، توضیح می دهد.
برای حذف یک گره Zookeeper:
- فایل پیکربندی بی صدا خود را ویرایش کنید و آدرس IP گره Zookeeper را که می خواهید حذف کنید حذف کنید.
- برای پیکربندی مجدد گره های باقیمانده ZooKeeper، دستور
setup
برای Zookeeper دوباره اجرا کنید:/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
- راه اندازی مجدد تمام گره های Zookeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
- گره مدیریت سرور را دوباره پیکربندی کنید:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- پیکربندی مجدد همه روترها:
/opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- پیکربندی مجدد تمام پردازشگرهای پیام:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- پیکربندی مجدد تمام گره های Qpid:
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
- پیکربندی مجدد تمام گره های Postgres:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
ملاحظات تعمیر و نگهداری
میتوانید تعمیر و نگهداری ZooKeeper را بر روی یک مجموعه کاملاً کارآمد و بدون توقف انجام دهید، اگر آن را در یک نود واحد انجام دهید. با اطمینان از اینکه فقط یک گره ZooKeeper در هر زمان از کار افتاده است، می توانید اطمینان حاصل کنید که همیشه نصابی از گره های رای دهنده برای انتخاب رهبر وجود دارد.
تعمیر و نگهداری در چندین مرکز داده
هنگام کار با چندین مرکز داده، به یاد داشته باشید که مجموعه ZooKeeper بین مراکز داده تمایز قائل نمی شود. مجموعه های ZooKeeper همه گره های ZooKeeper را در تمام مراکز داده به عنوان یک مجموعه مشاهده می کنند.
موقعی که ZooKeeper محاسبات حد نصاب را انجام می دهد، مکان گره های رأی دهنده در یک مرکز داده معین، عاملی نیست. گرههای منفرد میتوانند در مراکز داده پایین بیایند، اما تا زمانی که حد نصاب در کل مجموعه حفظ شود، ZooKeeper همچنان فعال است.
پیامدهای تعمیر و نگهداری
در زمانهای مختلف، باید یک گره ZooKeeper را برای نگهداری پایین بیاورید، یا گره رأیدهنده یا گره ناظر. برای مثال، ممکن است مجبور شوید نسخه Edge را در گره ارتقا دهید، ممکن است دستگاه میزبان ZooKeeper از کار بیفتد، یا ممکن است گره به دلایل دیگری مانند خطای شبکه در دسترس نباشد.
اگر گرهای که پایین میرود یک گره ناظر است، میتوانید انتظار کاهش جزئی در عملکرد مجموعه ZooKeeper تا زمان بازیابی گره داشته باشید. اگر گره یک گره رای دهنده باشد، به دلیل از دست دادن گره ای که در فرآیند انتخاب رهبر شرکت می کند، می تواند بر روی زنده ماندن گروه ZooKeeper تأثیر بگذارد. صرف نظر از دلیل کاهش گره رأی دهنده، حفظ نصاب گره های رأی دهنده در دسترس مهم است.
روش نگهداری
مراحل نگهداری را تنها پس از اطمینان از عملکرد مجموعه ZooKeeper انجام دهید. این فرض را بر این میگذارد که گرههای ناظر عملکردی هستند و گرههای رأیدهنده کافی در طول تعمیر و نگهداری وجود دارد تا حد نصاب را حفظ کنند.
هنگامی که این شرایط برآورده می شوند، یک مجموعه ZooKeeper با اندازه دلخواه می تواند از دست دادن یک گره واحد را در هر نقطه بدون از دست دادن داده یا تأثیر معنی داری بر عملکرد تحمل کند. این بدان معنی است که شما آزاد هستید تا زمانی که هر نود در یک نود در یک نود باشد، تعمیر و نگهداری را انجام دهید.
به عنوان بخشی از انجام تعمیر و نگهداری، از روش زیر برای تعیین نوع گره ZooKeeper (رهبر، رأی دهنده یا ناظر) استفاده کنید:
- اگر روی گره ZooKeeper نصب نشده است،
nc
را نصب کنید:sudo yum install nc
- دستور
nc
زیر را روی گره اجرا کنید، جایی که 2181 پورت ZooKeeper است:echo stat | nc localhost 2181
شما باید خروجی را در فرم مشاهده کنید:
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
(به معنای رأیدهندهای که رهبر نیست) را ببینید. - مراحل 1 و 2 را در هر گره ZooKeeper تکرار کنید.
خلاصه
بهترین راه برای انجام تعمیر و نگهداری در مجموعه ZooKeeper این است که آن را در یک نود انجام دهید. به یاد داشته باشید:
- برای اطمینان از کارایی مجموعه ZooKeeper، باید حد نصاب گره های رأی دهنده را در طول نگهداری حفظ کنید.
- حذف یک گره ناظر بر حد نصاب یا توانایی انتخاب رهبر تأثیر نمی گذارد.
- حد نصاب در تمام گره های ZooKeeper در تمام مراکز داده محاسبه می شود.
- پس از عملیاتی شدن سرور قبلی، تعمیر و نگهداری را به سرور بعدی ادامه دهید.
- از دستور
nc
برای بازرسی گره ZooKeeper استفاده کنید.