من النظرية إلى التطبيق
في الجزء الأول، استكشفنا القدرات المعمارية لـ MaxScale: البروتوكولات وأجهزة التوجيه والشاشات والمرشحات الخاصة بها. هذا الجزء الثاني عبارة عن دليل عملي: كيفية تثبيت وتكوين وإدارة MaxScale على أساس يومي.
التثبيت
MaxScale متاح عبر مستودع MariaDB الرسمي. على Debian/أوبونتو:
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup \
| sudo bash -s -- --mariadb-maxscale-version=24.02
sudo apt-get install maxscale
يقع ملف التكوين الرئيسي في /etc/maxscale.cnf. وهو ملف بتنسيق INI، منظم في أقسام محددة بوضوح.
تشريح ملف التكوين
يتم تنظيم الملف maxscale.cnf إلى ستة أنواع من الأقسام، يتم تحديد كل منها بواسطة رأس بين قوسين.
القسم [maxscale] — التكوين العام
[maxscale]
threads = auto
log_info = false
admin_host = 0.0.0.0
admin_port = 8989
admin_secure_gui = true
- threads=auto: MaxScale يكتشف تلقائيًا عدد مراكز وحدة المعالجة المركزية المتاحة.
- admin_host/admin_port: تمكين واجهة الويب MaxGUI وAPI REST.
- admin_secure_gui: تمكين HTTPS لواجهة الإدارة.
قسم [الخادم] — تعريف الخوادم
يتم الإعلان عن كل خادم خلفي MariaDB / MySQL بشكل فردي:
[db-master]
type = server
address = 10.0.1.10
port = 3306
protocol = MariaDBBackend
[db-slave1]
type = server
address = 10.0.1.11
port = 3306
protocol = MariaDBBackend
[db-slave2]
type = server
address = 10.0.1.12
port = 3306
protocol = MariaDBBackend
كل قسم [server] له اسم منطقي (هنا db-master، db-slave1، db-slave2) والذي سيتم الرجوع إليه بواسطة المراقبين والخدمات.
قسم [الشاشة] — مراقبة الطوبولوجيا
الشاشة هي المكون الذي يكتشف طوبولوجيا النسخ المتماثل وحالة كل عقدة تلقائيًا:
[replication-monitor]
type = monitor
module = mariadbmon
servers = db-master, db-slave1, db-slave2
user = maxscale_monitor
password = encrypted_password_here
monitor_interval = 2000
auto_failover = true
auto_rejoin = true
- mariadbmon: جهاز المراقبة القياسي لطوبولوجيات السيد والعبد MariaDB / MySQL.
- auto_failover: في حالة فقدان السيد، يقوم MaxScale تلقائيًا بترقية العبد.
- auto_rejoin: تتم إعادة تكوين المعلم القديم الذي يعود متصلاً بالإنترنت تلقائيًا كعبد.
بالنسبة إلى Galera، سنستخدم galeramon بدلاً من mariadbmon.
القسم [عامل التصفية] — تحويل الاستعلام
تقوم المرشحات باعتراض وتعديل تدفق SQL:
[query-log]
type = filter
module = qlafilter
filebase = /var/log/maxscale/queries
flush = true
[regex-rewrite]
type = filter
module = regexfilter
match = SELECT.*FROM\s+legacy_table
replace = SELECT * FROM new_table
يقوم qlafilter بتسجيل جميع الطلبات (مفيد للتدقيق). يسمح لك regexfilter بإعادة كتابة الاستعلامات بسرعة، دون تعديل التطبيق.
القسم [الخدمة] — تجميع المكونات
تربط الخدمة الخوادم والشاشات والمرشحات وجهاز التوجيه:
[rw-service]
type = service
router = readwritesplit
servers = db-master, db-slave1, db-slave2
user = maxscale_service
password = encrypted_password_here
filters = query-log | regex-rewrite
max_slave_connections = 100%
max_slave_replication_lag = 5s
- readwritesplit: تذهب الكتابة إلى السيد، وتوزع القراءات على العبيد.
- max_slave_replication_lag: يتم استبعاد العبد المتأخر بأكثر من 5 ثوانٍ مؤقتًا من التوجيه.
- المرشحات: يتم ربط المرشحات بالأنبوب
|.
القسم [المستمع] — نقطة دخول الشبكة
يعرض المستمع الخدمة على منفذ الشبكة:
[rw-listener]
type = listener
service = rw-service
protocol = MariaDBClient
port = 4006
address = 0.0.0.0
يتصل التطبيق بـ MaxScale على المنفذ 4006 كما لو كان خادمًا قياسيًا MariaDB / MySQL. MaxScale بروتوكول شفاف.
MaxGUI: واجهة الويب
منذ MaxScale 2.5، توفر واجهة الويب MaxGUI عرضًا رسوميًا كاملاً للبنية التحتية. يمكن الوصول إليه عبر https://maxscale-host:8989، فهو يسمح لك بما يلي:
- عرض الهيكل في الوقت الحقيقي (السيد، والعبيد، وحالة الاتصال)
- عرض مقاييس الأداء (الطلبات/الثانية، زمن الوصول، الاتصالات النشطة)
- إدارة الخوادم (صرف، صيانة، إضافة)
- عرض السجلات والتنبيهات
MaxGUI هي أداة مراقبة وليست تكوينًا. يتم إجراء تعديلات التكوين عبر الملف maxscale.cnf أو عبر API REST.
MaxCtrl: أداة سطر الأوامر
MaxCtrl هو واجهة سطر الأوامر الرسمية لـ MaxScale. يتواصل مع API REST ويقدم بناء جملة بديهيًا:
# Lister les serveurs et leur état
maxctrl list servers
# Mettre un serveur en maintenance
maxctrl set server db-slave1 maintenance
# Retirer le mode maintenance
maxctrl clear server db-slave1 maintenance
# Lister les services et leurs statistiques
maxctrl list services
# Voir la topologie de réplication
maxctrl show monitor replication-monitor
# Créer un filtre dynamiquement
maxctrl create filter my-filter regexfilter \
match="SELECT 1" replace="SELECT 2"
تتمثل ميزة MaxCtrl في التحرير المباشر للملفات في أنه يتم أخذ التغييرات في الاعتبار على الفور، دون إعادة التشغيل.
API REST: الأتمتة
API REST من MaxScale هو أساس التشغيل الآلي. يعرض جميع الوظائف عبر نقاط نهاية HTTP/JSON:
# Obtenir la liste des serveurs
curl -s -u admin:password https://maxscale:8989/v1/servers | jq
# Failover manuel
curl -X POST -u admin:password \
https://maxscale:8989/v1/monitors/replication-monitor/failover
# Obtenir les métriques du service
curl -s -u admin:password \
https://maxscale:8989/v1/services/rw-service | jq '.data.attributes.statistics'
يسمح API REST بدمج MaxScale في خطوط أنابيب CI/CD، وأنظمة المراقبة (Prometheus، Grafana)، وأدوات التنسيق (Ansible، Terraform).
أفضل ممارسات التكوين
وفيما يلي بعض التوصيات من الخبرة الميدانية:
-
استخدم دائمًا كلمات المرور المشفرة في ملف التكوين. يوفر MaxScale أداة
maxkeysلإنشاء مفاتيح التشفير. -
قم بتمكين تجاوز الفشل التلقائي باستخدام
auto_failover=true، ولكن اختبره بانتظام في بيئة ما قبل الإنتاج. -
حجم الخيوط وفقًا للحمل. يعد
threads=autoخيارًا افتراضيًا جيدًا، ولكن بالنسبة للكميات الكبيرة جدًا (> 50000 طلب/الثانية)، قد يكون الضبط اليدوي ضروريًا. -
مراقبة تأخر النسخ المتماثل عبر
max_slave_replication_lag. القيمة المسموح بها للغاية ترسل القراءات إلى العبيد المتأخرين. القيمة المقيدة للغاية تركز جميع القراءات على المعلم. -
استخدم المرشحات باعتدال. يضيف كل مرشح طبقة من المعالجة. يمكن أن يكون لـ
regexfilterعلى وجه الخصوص تأثير كبير على الأداء إذا كانت التعبيرات النمطية معقدة.
أكمل التكوين النموذجي
للتلخيص، إليك ملف تكوين نموذجي لطوبولوجيا رئيسية + 2 تابعة:
[maxscale]
threads = auto
admin_host = 0.0.0.0
admin_port = 8989
[db-master]
type = server
address = 10.0.1.10
port = 3306
protocol = MariaDBBackend
[db-slave1]
type = server
address = 10.0.1.11
port = 3306
protocol = MariaDBBackend
[db-slave2]
type = server
address = 10.0.1.12
port = 3306
protocol = MariaDBBackend
[replication-monitor]
type = monitor
module = mariadbmon
servers = db-master, db-slave1, db-slave2
user = maxscale_monitor
password = <encrypted>
monitor_interval = 2000
auto_failover = true
auto_rejoin = true
[rw-service]
type = service
router = readwritesplit
servers = db-master, db-slave1, db-slave2
user = maxscale_service
password = <encrypted>
max_slave_replication_lag = 5s
[rw-listener]
type = listener
service = rw-service
protocol = MariaDBClient
port = 4006
الخلاصة
تم تكوين MaxScale بملف INI واضح ومنظم. ستة أنواع من الأقسام تكفي لوصف البنية التحتية الكاملة: التكوين العام، والخوادم، والشاشة، والمرشحات، والخدمة، والمستمع.
تتضمن الإدارة اليومية ثلاث أدوات تكميلية: MaxGUI للإشراف البصري، وMaxCtrl لعمليات سطر الأوامر، وAPI REST للأتمتة. ويشكلون معًا نظامًا بيئيًا كاملاً لإدارة وكيل SQL على مستوى المؤسسة.
تم نشر هذه المقالة في الأصل على متوسط.
تعليقات (0)
لا توجد تعليقات حتى الآن.
اترك تعليقا