نظرة عامة
تُبسّط ميزة اكتشاف العنقود في ClickHouse تهيئة العنقود، إذ تتيح للعُقد اكتشاف نفسها وتسجيلها تلقائيًا من دون الحاجة إلى تعريفها صراحةً في ملفات التهيئة. ويكون ذلك مفيدًا بشكل خاص عندما يصبح التعريف اليدوي لكل عقدة أمرًا مرهقًا.يتطلب اكتشاف العنقود تهيئة ClickHouse Keeper أو ZooKeeper.
في الإصدارات الأقدم، كانت هذه الميزة تجريبية ويلزم تمكينها عبر الإعداد
allow_experimental_cluster_discovery في ملف التهيئة.
أصبح هذا الإعداد الآن متقادمًا ولم يعد له أي تأثير.تهيئة الخوادم البعيدة
التهيئة اليدوية التقليدية
تقليديًا، في ClickHouse، كان لا بد من تحديد كل جزء وكل نسخة متماثلة في العنقود يدويًا ضمن التهيئة:استخدام اكتشاف العنقود
مع اكتشاف العنقود، بدلًا من تعريف كل عقدة صراحةً، يكفي تحديد مسار في ZooKeeper. وستُكتشف تلقائيًا جميع العقد التي تُسجَّل تحت هذا المسار في ZooKeeper وتُضاف إلى العنقود.<shard> ضمن القسم <discovery>:
بالنسبة إلى node1 وnode2:
node3 وnode4:
وضع المراقبة
لن تسجّل العُقد المُعدّة في وضع المراقبة نفسها كنسخ متماثلة. بل ستقتصر على مراقبة النسخ المتماثلة النشطة الأخرى في العنقود واكتشافها من دون المشاركة الفعلية. لتمكين وضع المراقبة، أدرِج الوسم<observer/> ضمن قسم <discovery>:
اكتشاف العناقيد
قد تحتاج أحيانًا إلى إضافة المضيفين داخل العناقيد وإزالتهم، بل وإضافة العناقيد نفسها وإزالتها أيضًا. يمكنك استخدام العقدة<multicluster_root_path> مع مسار جذر لعدة عناقيد:
/clickhouse/discovery/some_new_cluster، سيُضاف عنقود باسم some_new_cluster.
يمكنك استخدام الآليتين معًا في الوقت نفسه، إذ يمكن للمضيف أن يسجّل نفسه في العنقود my_cluster وأن يكتشف أي عناقيد أخرى:
- لا يمكنك استخدام كلٍّ من
<path>و<multicluster_root_path>ضمن الشجرة الفرعية نفسها فيremote_servers. - لا يمكن استخدام
<multicluster_root_path>إلا مع<observer/>. - يُستخدم الجزء الأخير من المسار في Keeper كاسم للعنقود، بينما عند التسجيل يُؤخذ الاسم من وسم XML.
حالات الاستخدام والقيود
عند إضافة عُقد إلى مسار ZooKeeper المحدد أو إزالتها منه، تُكتشف أو تُستبعد تلقائيًا من العنقود من دون الحاجة إلى تغيير الإعدادات أو إعادة تشغيل الخادم. ومع ذلك، تؤثر هذه التغييرات في إعدادات العنقود فقط، ولا تمس البيانات أو قواعد البيانات والجداول الحالية. انظر إلى المثال التالي لعنقود يتكوّن من 3 عُقد:remote_servers ضمن ملف التهيئة:
event_table لا يزال موجودًا فقط على العقد الثلاث الأولى: