آموزش نصب و پیکربندی کلاستر Percona XtraDB Cluster در CentOS 7

PerconaXtraDBCluster_Centos_1

آموزش نصب و پیکربندی کلاستر Percona XtraDB Cluster در CentOS 7

How to setup and Configuring Percona XtraDB Cluster on CentOS

معرفی

برنامه Percona XtraDB Cluster یک راه حل رایگان و به صورت متن باز برای قابلیت حداکثر کارایی high-availability برای استفاده از پایگاه داده MySQL است. این برنامه ، Percona Server و Percona XtraBackup را همراه با کتابخانه Galera ، برای همگام سازی و عملیات تکرار  Replication بین چندین سرور Master ، به صورت یکجا فراهم کرده است.

یک کلاستر از چندین سرور که هر یک نقش یک گره Node را ایجاد می کنند تشکیل شده است و هر گره شامل اطلاعاتی است که در تمامی گره ها به صورت یکسان ، همگام سازی Synchronized شده اند. در بهترین حالت پیشنهاد می شود که حداقل از سه سرور استفاده کنید ولی استفاده از دو سرور نیز مناسب است. بر روی هر سرور نیز یک نمونه ای از پایگاه داده MySQL Server نیز نصب شده است ( مانند Percona Server ). همچنین هر نمونه ای از MySQL Server را می توان به یک گره اصلی برای استفاده در کلاسترینگ تبدیل کرد. همینطور می توان هر کدام از گره ها را از کلاسترینگ جدا کرده و به عنوان یک نمونه از MySQL Server استفاده کرد.

پیش نیاز ها

در این مطلب روش نصب و پیکربندی سرورهای کلاستر Percona XtraDB را بر روی سیستم عامل Centos 6.8 را با استفاده از پکیج های مخازن Percona را آموزش می دهیم.

برای این آموزش به سه سرور با سیستم عامل CentOS 6.8 و مشخصات شبکه و نام هاست که به صورت زیر آورده شده است نیاز داریم :

  • Node 1
    • Host name: percona1
    • IP address: 192.168.70.71
  • Node 2
    • Host name: percona2
    • IP address: 192.168.70.72
  • Node 3
    • Host name: percona3
    • IP address: 192.168.70.73

همچنین در تنظیمات دیواره آتش Firewall بر روی هر سه سرور لازم است که هر سه سرور به یکدیگر توسط پورت های ۳۳۰۶, ۴۴۴۴, ۴۵۶۷ و ۴۵۶۸ متصل باشند و SELinux نیز در سرورها باید غیر فعال باشد.

مرحله اول – نصب Percona XtraDB Cluster (PXC)

Percona ، پکیج های rpm را برای نسخه های ۶۴ بیتی سیستم عاملی های Red Hat base را فراهم کرده است. دقت کنید که Percona XtraDB Cluster بر روی سیستم هایی که از RPM پشتیبانی می کنند ، کار می کنند و فقط بر روی سیستم عامل های RHEL و CentOS نسخه های ۶ و ۷ تست و بررسی شده است.

پکیج های مورد نیاز برای نصب برنامه در مخازن رسمی نرم افزار Percona موجود هستند و در صفحه دانلود در دسترسی می باشند. پیشنهاد می شود که همه چیز را از طریق مخازن PXC و با دستور yum نصب کنید.

همچنین برای نصب برنامه بر روی سرور نیاز به دسترسی کاربر ریشه root یا کاربری که sudoer باشد و اجازه دسترسی فرامین را با sudo داشته باشد.

نکته مهم دیگر اینکه به دو روش می توان گره ها نصب و پیکربندی کرد ، اول اینکه به صورت یکجا هر سه سرور پیکربندی کنیم و روش دیگر اینکه اولین گره را راه اندازی می کنیم سپس گره های بعدی را به کلاسترینگ اضافه می کنیم. در ادامه به نصب و تنظیم هر سه سرور به صورت همزمان می پردازیم و در ادامه روش اضافه کردن گره دوم و سوم را نیز در مراحل بعدی آموزش توضیح می دهیم.

ماژول امنیتی SELinux دسترسی Percona XtraDB Cluster را محدود می کند به همین خاطر باید آن را غیر فعال کنیم. بهترین راه حل برای این کار تبدیل حالت enforcing به permissive است که با دستور زیر انجام می شود :

این دستور تغییرات را فقط برای حالت اجرای فعلی سیستم غیر فعال می کند و برای این که بعد از راه اندازی مجدد سرور این گزینه غیر فعال باشد باید مقدار SELINUX را در فایل etc/selinux/config/ را در حالت permissive قرار دهید.

فایل etc/selinux/config/ را با یک ویرایشگر متنی باز کنید :

سپس خط مربوط به SELINUX را پیدا کرده و آن را به صورت زیر تغییر دهید :

سپس فایل را ذخیره کرده و خارج شوید.

در انتها برای اعمال تغییرات سرور را مجددا راه اندازی کنید :

بعد از راه اندازی مجدد سیستم برای نصب Percona XtraDB Cluster باید مخازن مورد نیاز را به لیست مخازن yum اضافه کنیم. برای این کار دستور زیر را وارد کنید :

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

با جایگزین کردن دستورات زیر در دستور نصب Percona می توانید پکیج های اضافه را نصب کنید :

  • Percona-XtraDB-Cluster-devel-57
  • Percona-XtraDB-Cluster-test-57
  • Percona-XtraDB-Cluster-debuginfo-57
  • Percona-XtraDB-Cluster-galera-3-debuginfo
  • Percona-XtraDB-Cluster-shared-57

با دستور زیر سرویس Percona راه اندازی می شود :

هنگام نصب برنامه یک رمز تصادفی برای کاربر ریشه root برای سرویس mysql تولید می شود که با دستور زیر می توانید این رمز عبور را مشاهده کنید :

از این رمز عبور برای ورود به پایگاه داده MySQL در دستور زیر استفاده کنید :

رمز عبور کاربر ریشه root را تغییر داده و خارج شوید :

سپس سرویس MySQL را برای انجام تنظیمات عملیات تکرار Replication ، غیر فعال می کنیم :

تا اینجا برنامه Percona XtraDB Cluster را بر روی سرور ها نصب کردیم و در ادامه به تنظیمات کلاسترینگ می پردازیم.

مرحله دوم – تنظیمات Percona XtraDB Cluster

با توجه به تنظیمات شبکه و نام هاست که قبلا معرفی کردیم ، تنظیمات زیر را به فایل etc/mysql/my.cnf/ اضافه کنید :

این تنظیمات رو بر روی هر سه سرور انجام دهید به غیر از قسمت های زیر در سرور دوم و سوم :

در سرور دوم همین تنظیمات را با تغییرات زیر انجام دهید :

در سرور سوم نیز تغییرات را به صورت زیر انجام دهید :

در ادامه این تنظیمات را شرح می دهیم :

wresp_provider : مشخص کردن مسیر کتابخانه Galera

wresp_cluster_name : مشخص کردن یک نام برای کلاستر. این نام باید در تمامی تنظیمات کلاسترها یکسان باشد.

wresp_cluster_address : مشخص کردن آدرس IP سرورها موجود در کلاستر. حداقل باید یک آدرس وجود داشته باشد و اگر سرور های جدید در سرور اضافه شوند آدرس آنها باید در این قسمت اضافه شود. البته آدرس IP سرور فعلی که به آن متصل هستید نیاز نیست وارد شود ولی پیشنهاد می شود که آدرس سرور فعلی را نیز اضافه کنید.

wresp_node_name : یک نام برای هر گره Node انتخاب کنید. اگر این مقدار را تعیین نکنید ، به صورت پیش فرض نام هاست سرور در نظر گرفته می شود.

wresp_node_address : آدرس IP سروری که به آن متصل هستید و در حال تنظیم آن هستید را وارد کنید.

wresp_sst_method : به صورت پیش فرض Percona XtraDB Cluster از Percona XtraBackup برای State Snapshot Transfer – SST استفاده می کند. شدیدا توصیه می شود که این مقدار را wsrep_sst_method=xtrabackup-v2 قرار دهید. این روش برای اتصال و تنظیمات اولیه نیاز به یک کاربر و رمز عبور برای اتصال به SST دارد که در مقدار wsrep_sst_auth باید آن را تعیین کنید.

wsrep_sst_auth : تعیین مشخصات احراز هویت SST به صورت <sst_user>:<sst_pass> . این کاربر را باید در راه اندازی اولیه اولین گره ایجاد کنید و دسترسی های لازم را برای این کاربر تعیین کنید :

pxc_strict_mode : ویژگی ENFORCING را در حالت پیش فرض فعال می کند که ویژگی های تجربی و غیر قابل پشتیبانی را مسدود می کند.

Bindlog_format : برنامه Galera فقط از حالت تکرار خطی-مرحله ای row-level پشتیبانی می کند ، پس این مقدار را binlog_format=ROW قرار دهید.

default_strong_engine : برنامه Galera به صورت کامل از موتور ذخیره ساز InnoDB پشتیبانی می کند و با MyISAM یا هر موتور ذخیره ساز رابطه ای دیگر کار نمی کند. این مقدار را default_strong_engine=InnoDB قرار دهید.

innodb_autoinc_lock_mod : برنامه Galera فقط از حالت قفل (۲)interleaved  برای InnoDB استفاده می کند. تنظیم حالت های traditional (0) یا consecutive (1) ممکن است باعث خطا در تکرار Replication در زمان وقفه های ناگهانی شود.

بعد از تنظیم تمام گره ها Nodes باید اولین گره را راه اندازی کرده و تنظیمات و مقدار دهی های اولیه را انجام دهیم.

مرحله سوم – راه اندازی (Bootstrapping) اولین گره Node

بعد از نصب و تنظیمات PXC در تمامی گره ها باید اولین سرور را تنظیم و مقدار دهی اولیه کنیم. اولین سرور باید سروری باشد که تمام اطلاعات بر روی آن قرار دارد و این اطلاعات باید بر روی گره های دیگر تکثیر شوند.

پروسه Bootstrapping به گره ای اشاره می کند که هیچ آدرس شناخته شده ای در کلاستر ندارد. اگر مقدار wsrep_cluster_address خالی باشد ، Percona XtraDB Cluster آن را به عنوان اولین گره مقدار دهی می کند و کلاستر را تنظیم می کند.

به جای انجام تغییرات در فایل پیکر بندی، در اولین سرور از دستور زیر استفاده کنید :

وقتی دستور بالا را در یک گره اجرا می کنید ، حالت bootstrap با مقدار //:wsrep_cluster_address=gcomm فعال می شود. این دستور به سرور می گوید که کلاستر را با مقدار ۱ برای wsrep_cluster_conf_id تنظیم کند. بعد از اضافه کردن گره جدید به کلاستر با ریستارت عادی سرور می توانید تنظیمات استاندارد را مجددا روی آن انجام دهید.

برای اطمینان از راه اندازی کلاستر ، دستور زیر را وارد کنید :

این خروجی نشان می دهد که اندازه کلاستر ۱ گره است و سرور اصلی Primary است و وضعیت سرور در حالت همگام شده synced قرار دارد و به صورت کامل متصل شده و آماده انجام تکرار Replication می باشد.

مرحله چهارم – اضافه کردن گره جدید

برای اضافه کردن سرور جدید به کلاستر ، اگر سرور را همانطور که در مرحله دوم گفتیم تنظیم شده باشد ، گره جدید به صورت خودکار به کلاستر اضافه می شود. برای اضافه شدن سرور جدید باید آدرس سرور جدید در لیست آدرس گره ها wsrep_cluster_address تنظیم شده باشد ، پس از این به صورت خودکار به کلاستر اضافه شده و همگام سازی آغاز می شود.

دقت کنید که همه داده و تنظیمات موجود برای همگام سازی با گره جدید بازنویسی می شوند. همچنین چندین گره را به صورت همزمان اضافه نکنید چون باعث مشکل ترافیک بیش اندازه می شود.

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

اضافه کردن سرور دوم

با استفاده از دستور زیر سرور دوم راه اندازی می شود :

بعد از راه اندازی سرور ، به صورت خودکار SST را دریافت می کند.

برای بررسی وضعیت سرور دوم اضافه شده دستور زیر را در mysql وارد کنید :

این خروجی نشان می دهد که گره دوم با موفقیت به کلاستر اضافه شده است. اندازه کلاستر ۲ گره است و این گره اصلی Primary است و به صورت کامل متصل شده و آماده نوشتن اطلاعات تکرار Replication است.

اگر وضعیت گره در حال Synced باشد ، به این معنی است که SST را به طور کامل دریافت کرده است و با کلاستر همگام سازی شده است و می توانید گره بعدی را اضافه کنید. ولی اگر وضعیت سرور در حالت Joiner باشد به این معنی است که SST هنوز کامل نشده است و گره بعدی را تا زمانی که وضعیت این گره به Synced برسد ، نباید اضافه کنید.  

اضافه کردن سرور سوم

مانند قبل برای اضافه کردن سرور سوم دستور زیر را وارد کنید :

مجددا برای بررسی وضعیت سرور سوم دستور زیر را در mysql وارد کنید :

این خروجی نشان می دهد که سرور سوم نیز به درستی اضافه شده است. اندازه کلاستر ۳ گره است و سرور اصلی است و به صورت کامل متصل شده و آماده دریافت و نوشتن اطلاعات تکرار Replication می باشد.

بعد از اتصال گره ها به کلاستر نوبت به بررسی و آزمایش کلاستر می رسد. برای این کار داده های موجود در گره ها را با اجرای پرسش و دستکاری داده ها تغییر می دهیم و مشاهده می کنیم که این تغییرات در تمامی گره ها اعمال می شوند.

مرحله پنجم – آزمایش کلاستر و عملیات تکرار Replication

در ادامه برای تست و بررسی صحت عملکرد کلاستر ، یک دیتابیس در گره دوم ایجاد می کنیم سپس به همان دیتابیس در گره سوم یک جدول اضافه می کنیم و در گره سوم در این جدول مقداری داده اضافه می کنیم.

۱- ایجاد یک دیتابیس در گره دوم :

۲- یک جدول در گره سوم اضافه می کنیم :

۳- چند سطر در گره اول اضافه می کنیم :

۴- سطر های اضافه شده را در گره دوم مشاهده می کنیم :

 

پایان

در این آموزش به نصب و پیکربندی Percona XtraDB Cluster پرداختیم و اگر تمام خروجی هایی که مشاهده کردید مانند آموزش داده شده در این مطلب بوده است یعنی این که کلاستر شما به درستی راه اندازی شده و کار می کند.

برای مدیریت و تقسیم وظایف کارآمد در گره ها ، بهترین راه حل ، استفاده از شبکه اختصاصی بین گره ها می باشد ، که پیشنهاد می شود از ProxySQL استفاده کنید  و با استفاده از راه حل تقسیم بار با استفاده از ProxySQL می توانید دسترسی بالا high-availability را در ارتباط شبکه ای داشته باشید.

بهترین ابزار برای مانیتورینگ و مدیریت Percona XtraDB Cluster نیز برنامه Percona Monitoring and Management  می باشد. این برنامه قابلیت مانیتورینگ و مدیریت کلاستر را فعال می کند و برای رفع مشکلات نیز بسیار موثر است.

Leave a Reply