المشكلة: طبولوجيا غير مرئية
لديك 40 مثيلًا MariaDB / MySQL. بعضها في النسخ المتماثل السيد والعبد. آخرون في الماجستير الماجستير. مجموعة Galera مكونة من 5 عقد. اثنان ProxySQL في نظير إلى نظير. MaxScale لتوجيه القراءة. أنفاق SSH للوصول إلى DC. أسماء DNS المستعارة التي تخفي عناوين IP الحقيقية.
سؤال بسيط: هل يمكنك رسم البنية الكاملة في أقل من 5 دقائق؟
في معظم المنظمات، الجواب هو لا. تعيش الطوبولوجيا في موقع wiki قديم، أو موقع ملتقى لم يتم تحديثه مطلقًا، أو في رأس كبير مسؤولي إدارة الأعمال الذي هو في إجازة.
يعمل Dot3 على إصلاح هذه المشكلة.
ما هو دوت3؟
Dot3 هو محرك رسم الخرائط الهيكلي المدمج في PmaControl. يستخدم Graphviz (لغة DOT) لإنشاء تمثيلات مرئية لبنيات قاعدة البيانات.
يأتي اسم "Dot3" من الإصدار الثالث للمحرك. استخدم الإصداران الأولان أساليب مبسطة (قوائم الاتصال، والأشجار الثابتة). يقدم Dot3 دقة نقطة النهاية الديناميكية والعرض السياقي.
دقة نقطة النهاية
الخطوة الأولى في Dot3 هي فهم ما يوجد خلف كل نقطة نهاية تم تكوينها في PmaControl. يمكن أن تكون نقطة النهاية:
1. اتصال مباشر MariaDB / MySQL
أبسط حالة. يتصل Dot3 بالمنفذ 3306 (أو غيره)، وينفذ SHOW VARIABLES وSHOW SLAVE STATUS / SHOW REPLICA STATUS، ويحدد دور الخادم (الرئيسي، والتابع، والمستقل).
2. ProxySQL
يكتشف Dot3 ProxySQL من خلال وجود منفذ المشرف (6032 افتراضيًا). من خلال الاتصال بمنفذ الإدارة، فإنه يسترد:
runtime_mysql_servers: قائمة الواجهات الخلفية مع المجموعة المضيفة الخاصة بهاruntime_mysql_replication_hostgroups: رسم خريطة الكاتب/القارئproxysql_servers: الأقران ProxySQL (للتجميع)
وهذا يجعل من الممكن تتبع الروابط بين ProxySQL وواجهاته الخلفية، وبين أقرانه ProxySQL.
3. MaxScale
تم اكتشاف MaxScale عبر API REST (المنفذ 8989). استعلامات Dot3 /v1/servers و/v1/services لإعادة بناء طوبولوجيا الواجهات الخلفية وخدمات التوجيه.
4. عناوين VIP والعائمة
عندما تكون نقطة النهاية هي VIP (عنوان IP الظاهري تتم إدارته بواسطة Keepalived أو Pacemaker)، تقوم Dot3 بتحليل العنوان إلى الخادم الفعلي النشط. يتم تمثيل VIP كعقدة وسيطة ذات نمط مرئي مميز (الماس بدلاً من المستطيل).
5. أنفاق SSH
بالنسبة إلى بنيات DC المتعددة التي تحتوي على أنفاق SSH، يتتبع Dot3 المسار الكامل: العميل -> نفق SSH -> نقطة النهاية الحقيقية. يظهر النفق كاتصال منقط في الرسم البياني.
6. الأسماء المستعارة لنظام أسماء النطاقات (DNS).
يقوم Dot3 بحل أسماء DNS المستعارة (CNAME) ويعرض كلاً من الاسم المستعار واسم المضيف الفعلي، مما يتجنب الارتباك عند الإشارة إلى نفس الخادم بأسماء متعددة.
التقديم
بمجرد حل جميع نقاط النهاية، يقوم Dot3 بإنشاء رسم بياني DOT يتم تجميعه بواسطة Graphviz إلى SVG (أو PNG). إليك كيفية تمثيل الطبولوجيا المختلفة.
النسخ المتماثل للسيد والعبد
dot
Master [shape=box, color=blue, label="db-master\n10.0.1.10:3306"]
Slave1 [shape=box, color=green, label="db-slave1\n10.0.1.11:3306"]
Slave2 [shape=box, color=green, label="db-slave2\n10.0.1.12:3306"]
Master -> Slave1 [label="repl"]
Master -> Slave2 [label="repl"]
تنتقل أسهم النسخ المتماثل من السيد إلى العبيد (اتجاه البيانات). يتم عرض تأخر النسخ المتماثل على الحافة عندما يكون مهمًا.
النسخ المتماثل للماجستير والماجستير
تظهر النسخ المتماثلة ثنائية الاتجاه بـ سهام مزدوجة. يكتشف Dot3 هذه الحالة عندما يتعرف الخادمان على بعضهما البعض على أنهما رئيسي عبر SHOW SLAVE STATUS.
dot
Master1 -> Master2 [dir=both, label="M-M"]
المجموعة Galera
يتم تجميع العقد Galera في رسم بياني فرعي بإطار منقط. يتم تلوين كل عقدة وفقًا لحالتها wsrep:
- متزامنة: أخضر
- المتبرع/غير المتزامن: برتقالي
- الانضمام: أصفر
- منقطع: أحمر
dot
subgraph cluster_galera_prod {
label="Galera Prod (3 nodes)"
style=dashed
galera1 [color=green]
galera2 [color=green]
galera3 [color=green]
}
ProxySQL نظير إلى نظير
يتم رسم الروابط بين نظيرات ProxySQL باستخدام أسهم منقطة ثنائية الاتجاه، ويتم تمييزها بصريًا عن روابط النسخ المتماثل MariaDB / MySQL.
خطأ أيقونة PNG في SVG
عند تطوير Dot3، أردنا دمج الرموز لتحديد أنواع العقد بشكل مرئي: أيقونة MariaDB، أيقونة ProxySQL، أيقونة MaxScale.
استخدم التطبيق الأول أيقونات PNG المضمنة في SVG عبر علامات <image> مع base64 href. نجح هذا في المتصفحات ولكن واجه العديد من المشكلات:
- لا يدعم Graphviz ملفات PNG المضمنة بشكل صحيح في مخرجات SVG الخاصة به - فقد تمت إزاحة المواضع
- العرض كان ضبابيًا على شاشات Retina/HiDPI
- تزايدت أحجام ملفات SVG بسبب Base64
الحل: استبدل جميع أيقونات PNG بـ أيقونات SVG الأصلية. لقد قمنا بإعادة إنشاء proxysql.svg وmaxscale.svg والآخرين بتنسيق SVG المتجه النقي. النتيجة:
- تقديم حاد في أي قرار
- تحديد المواقع الصحيح في Graphviz
- حجم الملف مقسوم على 5
مثال ملموس
فيما يلي هيكل حقيقي (مجهول المصدر) تم إنشاؤه بواسطة Dot3 لعميل التجارة الإلكترونية:
ProxySQL-1 ←→ ProxySQL-2 (peer-to-peer)
↓ ↓
[HG10: Writer] [HG20: Readers]
↓ ↓
Master ──→ Slave-1 (réplication)
↓ Slave-2
↓ Slave-3
↓
┌─────────────────────┐
│ Galera Cluster │
│ Node-1 Node-2 │ (cluster)
│ Node-3 │
└─────────────────────┘
يتم إنشاء هذا المخطط تلقائيًا بواسطة Dot3. لا يوجد تكوين يدوي للتخطيط. يكتشف Dot3 الهيكل، ويحل نقاط النهاية، ويعتني Graphviz بالموضع.
التكامل في PmaControl
في واجهة PmaControl، يمكن الوصول إلى الخريطة الطوبولوجية عبر علامة التبويب الطوبولوجيا. يتم تحديثه تلقائيًا ويعكس الحالة في الوقت الفعلي:
- يظهر العبد المتخلف في الاستنساخ بحافة حمراء
- العقدة Galera في الحالة
Donorيتغير لونها - ProxySQL الذي يفقد الواجهة الخلفية يظهر باللون الرمادي
يعتبر ملف SVG الذي تم إنشاؤه تفاعليًا: يؤدي النقر فوق العقدة إلى فتح ملف الخادم التفصيلي في PmaControl.
الحدود والتطورات المخطط لها
يعمل Dot3 بشكل جيد مع الطبولوجيا من 1 إلى 100 عقدة. أبعد من ذلك، يمكن أن يصبح تخطيط Graphviz مربكًا. التطورات المخطط لها:
- التصفية حسب العلامة: عرض مجموعة فرعية فقط من الهيكل (حسب البيئة، حسب العميل، حسب DC)
- وضع الاختلاف: قارن بين لقطتين طوبولوجيتين لتصور التغييرات
- تصدير Terraform: قم بإنشاء وصف للبنية التحتية كرمز للهيكل المكتشف
الخلاصة
لا يجب أن تكون طوبولوجيا البنية التحتية MariaDB / MySQL لغزًا موثقًا في موقع ويكي قديم. يكتشفها Dot3 ويحلها ويرسمها تلقائيًا.
إنه الفرق بين "أعتقد أن النسخ المتماثل يذهب إلى هذا الخادم" و"أرى أن النسخ المتماثل يذهب إلى هذا الخادم، مع 3 ثوانٍ من التأخير، لمدة 14 يومًا".
تعليقات (0)
لا توجد تعليقات حتى الآن.
اترك تعليقا