در مطلب قبلی، جلوگیری توقف سرویس دهی دیتابیس با maxscale پیرامون نحوه راه اندازی و انحام تنظیمات سرویس maxscale را بیان کردیم.

با توجه به مدل کارکرد و اهمیت این سرویس که آمده، تا سرویس دهی بدون وقفه را انجام دهد، کنترل و مدیریت روی این سرویس نیز از نظر نداشتن توقف بشدت دارای اهمیت می باشد

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

  • مدیریت سرورها
  • مدیریت سرویس ها
  • مدیریت مانتورها
  • مدیریت listenerها
  • مدیریت فیلترها
  • مدیریت maxscale
  • مدیریت لاگ ها

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

مدیریت سروها

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

فهرست یا نمایش سرورها

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

maxctrl: list servers
┌──────────┬───────────────┬──────┬─────────────┬─────────────────────────┬─────────────┐
 Server    Address        Port  Connections  State                    GTID        
├──────────┼───────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
 mariadb1  192.168.0.201  3306  0            Slave, Synced, Running   100-100-203 
├──────────┼───────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
 mariadb2  192.168.0.202  3306  0            Slave, Synced, Running   100-100-203 
├──────────┼───────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
 mariadb3  192.168.0.203  3306  0            Master, Synced, Running  100-100-203 
└──────────┴───────────────┴──────┴─────────────┴─────────────────────────┴─────────────┘

MaxScale از این وضعیت، برای الگوریتم مسیردهی استفاده می‌ کند:

  • Master (مستر) – در یک کلاستر با رپلیکیشن، این نقش به عنوان نود قابل نوشتن (Write-Master) در نظر گرفته می‌شود.
  • Slave (اسلیو) – نودهای با وضعیت خواندن، توسط maxscale برای عملبات (کوئری های)خواندن انتخاب می شوند. اگر تمام نودهای اسلیو از دسترس خارج شوند ولی مستر هنوز در دسترس باشد، روتر از مستر استفاده خواهد کرد.
  • Synced (همگام) – نشان دهنده وضعیت نودی از کلاستر/رپلیکیشن است که با سایر نودها در وضعیت همگام قرار دارد.
  • Running (در حال اجرا) – نشان دهنده وضعیت سروری که فعال و قابل دسترسی است. تمامی سرورهایی که MariaDB MaxScale قادر به اتصال به آن‌هاست، به عنوان "در حال اجرا" علامت‌گذاری می‌شوند.

و برای نمایش جزئیات بیشتر از وضعیت و مشخصات یک سرور دیتبایس با دستور زیرقابل انجام می باشد:

maxctrl show server mariadb1

تغییر وضعیت سرور به حالت تعمیرات

گاهی پش می آید که لازم است تا برای تغییرات/تعمیرات روی یک سرور بکند دیتبایس، هیچ کوئری ای به آن سرور نرود، پس باید موقتا از لودبالانسر خارج شود. اصطلاحا به این وضعیت maintenance mode گفته می شود. برای تنظیم این حالب برای یک سرور، دستور زیر قابل اجرا می باشد:

maxctrl set server mariadb1 maintenance
OK

پس اگر اکنون وضعیت سرورهای گرفته شود، به صورت زیر تغییر می کند:

maxctrl: show server mariadb1
...
 State             Maintenance, Running
...

در این وضعیت هیچ ارتباط و کوئری ای سمت این سرور ارسال نخواهد شد.

همچنین برای خروج از وضعیت تغییرات/تعمیرات می توان دستور زیر را اجرا نمود:

maxctrl clear server mariadb1 maintenace

ایجاد سرور جدید

یکی از مرسوم ترین عملیات در لودبالانسر، ایجاد و اضافه نمودن یک بکند (سرور دیتابیس جدید) می باشد. برای این مهم ابتدا باید سرور را در لودبالانسر ایجاد نمود:

maxctrl create server mariadb4 address=192.168.0.204 port=3306

و سپس آن نود به یک مانیتور اضافه شود:

maxctrl link monitor cluster-monitor mariadb4

حالا این سرور در مانتورینگ اضافه شده و قابلیت failover و autorejoin به آن افزوده شده است. اما قابلیت سرویس دهی و ارسال کوئری به سمت آن هنوز مهیا نیست. برای افزودن این سرور به سرویس دهی، باید این سرور به service در maxscale اضافه شود.

 maxctrl link service cluster-service mariadb4

حالا سرور قابلیت سرویس دهی در لودبالانسر را دارد.

حذف یک سرور

برای حذف یک سرور بکند از لودبالانسر چند مرجله باید طی شود. ابتدا باید سرور از سرویس های مرتبط جدا شود سپس از مانیتورینگ جدا شود و در نهایت می توان سرور را حذف نمود.

حذف از سرویس ها

ابتدا باید سرور را از سرویس هایی که به آنها متصل است جدا کنیم تا از چرخه بکند سرویس دهی خارج شده و کوئری ای سمت آن ارسال نشود:

maxctrl: list services
┌──────────────────┬────────────────┬─────────────┬───────────────────┬──────────────────────────────┐
 Service           Router          Connections  Total Connections  Servers                      
├──────────────────┼────────────────┼─────────────┼───────────────────┼──────────────────────────────┤
 cluster-Service   readwritesplit  1            1                  mariadb1, mariadb2, mariadb4 
└──────────────────┴────────────────┴─────────────┴───────────────────┴──────────────────────────────┘

لیستی از سرویس ها و سرروهایی که به آن سرویس متصل هستند نمایش داده می شود. حالا بر این مبنا می توان ادامه داد.

در گام بعدی باید سرور را از سرویس جدا کرد:

 maxctrl unlink service cluster-ervice mariadb4
 OK

حال سرور از سرویس جدا، و کوئری ای سمت آن ارسال نمی شود.

حذف از مانیتورینگ

سپس باید سرور را از مانتیورینگ maxscale نیز جدا نمود:

 maxctrl unlink monitor cluster-monitor mariadb4
 OK

اکنون در لیست مانتورینگ، این سرور نبوده و maxscale من بعد کاری به آن نداشته و در قابلیت های failover و autorejoin و switchover نمی باشد.

حذف سرور

در پایان و بعد از جدایی سرور از سرویس و مانتورینگ، می توان خود سرور را از چرخه لودبالانسر maxscael حذف نمود:

maxctrl destroy server mariadb4
OK

مدیریت مانیتورینگ maxscale

تعریف یک ماژول مانیتورینگ مناسب برای maxscale که به آن اجازه می دهد تا بهترین روتینگ کوئری ها براساس وضعیت حاری نودها را انجام دهد، ضروری می باشد. یکی از این ماژول ها mariadbmon و یکی هم galeramon می باشد که برای کلاستر Galera استفاده می شود

قبل از ایجاد مانتورینگ، لازم است تا یک حساب کاربری با دسترسی های مورد نیاز ماژول مانتورینگ، روی نودهای دیتابیس ایجاد شود. حداقل های این دسترسی ها به ترتیب زیر می باشند:

MariaDB> CREATE USER maxscale_monitor@'٪' IDENTIFIED BY 'MaXSc4LeP4ss';
MariaDB> GRANT SELECT ON mysql.* TO 'maxscale_monitor'@'٪';
MariaDB> GRANT SHOW DATABASES ON *.* TO 'maxscale_monitor'@'٪';

البته کامل ان دسترسی ها در مطلب قبلی توضیح داده شده است. جلوگیری توقف سرویس دهی دیتابیس با maxscale

برای ایجاد یک مانتور در حال اجرا سرویس maxscale از دستور زیر استفاده می شود:

maxctrl create monitor cluster-monitor mariadbmon servers=mariadb1,mariadb2,mariadb3 user=maxscale_monitor password=MaXSc4LeP4ss
OK

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

فهرست و نمایش مانیتور

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

maxctrl list monitors
┌─────────────────┬─────────┬──────────────────────────────┐
│ Monitor         │ State   │ Servers                      │
├─────────────────┼─────────┼──────────────────────────────┤
│ cluster-monitor │ Running │ mariadb1, mariadb2, mariadb3 │
└─────────────────┴─────────┴──────────────────────────────┘

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

maxctrl show monitor cluster-monitor

استارت و استاپ مانیتور

متوقف کردن یک مانیتور در maxscale موجب توقف مانیتورینگ وضعیت سرورهای بکند می گردد، این کار در ارتباط با دستور set server و برای کنترل دستی وضعیت سرورها انجام می شود.

maxctrl stop monitor cluster-monitor

و برای شروع مجددش به صورت زیر اجرا می شود:

maxctrl start monitor cluster-monitor

حذف یک مانیتور

به منظور حذف یک مانیتور در maxscale ابتدا لازم است تا تمامی سرورهایی که به آن متصل هستند را جدا نمود، به همین جهت مراحل زیر اجرا می شوند:

maxcltrl list monitors
┌─────────────────┬─────────┬──────────────────────────────┐
│ Monitor         │ State   │ Servers                      │
├─────────────────┼─────────┼──────────────────────────────┤
│ cluster-monitor │ Running │ mariadb1, mariadb2, mariadb3 │
└─────────────────┴─────────┴──────────────────────────────┘

پس برا جدا سازی بدین سان عمل می شود:

maxctrl unlink monitor cluster-monitor mariadb1 mariadb2 mariadb3

سپس، با اطمینان از جدا شدن سرورها از مانیتور می توان دستور حذف آن را اجرا نمود:

maxctrl destroy monitor cluster-nobitor
OK

مدیریت سرویس

به منظور مدیریت سرویس یا به عبارت دیگر تقسیم یا توزیع کننده،ابتدا باید یک حساب کاربری با دسترسی های موردنیاز روی نودهای دیتابیس ایجاد شود.

MariaDB> CREATE USER maxscale_monitor@'%' IDENTIFIED BY 'MaXSc4LeP4ss';
MariaDB> GRANT SELECT ON mysql.* TO 'maxscale_monitor'@'%';
MariaDB> GRANT SHOW DATABASES ON *.* TO 'maxscale_monitor'@'%';

البته کامل آن دسترسی ها در مطلب قبلی توضیح داده شده است. جلوگیری توقف سرویس دهی دیتابیس با maxscale

ایجاد سرویس جدید

برای ایجاد سرویس جدید در maxscale دستور زیر را اجرا می کنیم:

maxctrl create service زمعسفثق-Service readconnroute user=maxscale_monitor password=******
OK

لیست یا نمایش سرویس

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

maxctrl list services
┌──────────────────┬────────────────┬─────────────┬───────────────────┬──────────────────────────────┐
│ Service          │ Router         │ Connections │ Total Connections │ Servers                      │
├──────────────────┼────────────────┼─────────────┼───────────────────┼──────────────────────────────┤
│ cluster-service  │ readwritesplit │ 1           │ 1                 │ mariadb1, mariadb2, mariadb3 │
└──────────────────┴────────────────┴─────────────┴───────────────────┴──────────────────────────────┘

و برای مشاهده جزئیات یک سرویس کافی است دستور زیر اجرا شود:

maxctrl show service cluster-service

حذف یک سرویس

برای حذف یک سرویس ابتدا لازم است تا سرویس ها متصل به آن جدا شوند:

maxctrl unlik servcie cluster-service mariadb1 mariadb2 mariadb3

ممکن است که سرویسی با listener با هم درآمیخته شده باشند پس این نیز باید حذف شود:

maxctrl destroy listener cluste-service cluster-listener

و در پایان:

maxctrl destroy service cluster-service

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

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

maxctrl link service cluster-service mariadb1 mariadb2 mariadb3

هم چنین برای جدا کردن یک سرور از سرویس:

maxctrl unlik service cluster service mariadb4

مدیریت listener

در نهایت برای ایجاد یک سرویس لودبالانسر مناسب لازم است تا به روشی پورتی را برای سرویس دهی باز و سرویس دهنده آن را مشخص نمود که این مهم در maxscale با listener ها انجام می شود.

لیست/نمایش listener

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

maxctrl list listeners

و برای مشاهده جزئیات بیشتر از یک listener کافی است تا دستور زیر را اجرا نمود:

 maxctrl show listener cluster-listener

ایجاد listener

برای ایجاد یک listener از دستور زیر استفاده می شود:

maxctrl create listener cluster-service cluster-listener 3307

حذف یک listener

برای حذف یک listener کافی است تا دستور زیر را اجرا نمود:

maxctrl destroy listener cluster-service cluster-listener

در پایان، دستورات بکار برده شده در این مقاله با نسخه ای از maxscale می باشد و ممکن است که به مرور زمان این دستورات یا پارامترهای آنها تغییراتی داشته باشند پس، قبل از اقدام و اجرا روی حالت پروداکشن، مروری روی مستندات سایت اصلی خود maxscale داشته باشید.

منابع

برچسب ها: database mariadb mysql maxscale