كيفية إجراء تكرار متعدد للماجستير في OpenLDAP؟

كيفية إجراء تكرار متعدد للماجستير في OpenLDAP؟

تكوين تكرار OPENLDAP متعدد الأسياد



قبل أن نبدأ مقالتنا، دعونا نتحدث قليلاً عن المتطلبات.
  • جهازان افتراضيان على الأقل مُثبّتان بـ openLDAP. سنستخدم Debian 10 في هذه المقالة. يُنصح بشدة باستخدام نفس التوزيعة.
  • تم تثبيت خادم NTP وتشغيله بشكل متزامن على جميع الأجهزة الافتراضية التي سنستخدمها.

ما هو LDAP؟


بروتوكول الوصول إلى الدليل الخفيف ، أو LDAP (بروتوكول الوصول إلى الفهرس البسيط)، هو بروتوكول طبقة التطبيق المستخدم للاستعلام عن خدمات الفهرس وتعديلها أثناء تشغيلها عبر TCP/IP.

يُستخدم هذا البروتوكول بواسطة خوادم الفهرس مثل OpenLDAP وSun Directory Server وMicrosoft Active Directory. بدايةً، يُمكن القول إنه ذو بنية مشابهة لقاعدة البيانات، ولكن الفرق الرئيسي بينها وبين قواعد البيانات هو أنها ليست هرمية.

بروتوكول LDAP هو بروتوكول موجه للرسائل. هذا يعني أن العميل يُنشئ رسالة LDAP تحتوي على الطلب، ويرسلها إلى الخادم، الذي يُعالج الطلب ويُرسل الاستجابة الناتجة إلى العميل كرسالة LDAP واحدة أو أكثر.

لأن LDAP بروتوكول قائم على الرسائل، يمكن للعميل إرسال طلبات متعددة في آنٍ واحد. على سبيل المثال، يمكن للعميل إجراء بحثين في آنٍ واحد. هذه القدرة على إجراء عمليات متعددة في آنٍ واحد تجعل LDAP بروتوكولًا أكثر مرونة وكفاءة من HTTP والبروتوكولات المشابهة، التي لا تسمح بذلك.


ما هو OpenLDAP؟


OpenLDAP هو تطبيق لـ LDAP، طوّره مشروع OpenLDAP. يستخدم ترخيصًا مشتقًا من BSD يُعرف باسم ترخيص OpenLDAP العام. وهو بروتوكول مستقل عن النظام الأساسي. تتضمن العديد من توزيعات Linux الحالية برنامج OpenLDAP لدعم LDAP.


ما هو NTP؟


بروتوكول NTP هو نظام توزيع زمني متسلسل مع ميزة التكرار. تقيس خوارزمياته التأخيرات على كلٍّ من الشبكة والجهاز المستهدف. باستخدام هذه التقنيات، يُمكنه مزامنة الساعات لأقرب ميلي ثانية. تُضبط إعدادات بروتوكول NTP إما في ملف /etc/ntp.conf أو /etc/xntp.conf، حسب التوزيع المُستخدم.

تحتوي معظم ملفات ntp.conf الأساسية على اسمين للخادم: أحدهما للخادم الذي ترغب في ضبط الوقت عليه، والآخر لعنوان IP وهمي.
يُستخدم عنوان IP المُزيّف في حالة وجود مشاكل في الشبكة أو في حالة تعطل خادم NTP. سيعيد تطبيق NTP الخاص بالنظام ضبط ساعة النظام إلى خادم NTP البعيد بعد إعادة تشغيله. يعمل الخادم الأول كخادم رئيسي، بينما يعمل الثاني كخادم احتياطي. يجب أيضًا تحديد موقع ملف الوجهة. بمرور الوقت، سيتعلم NTP معدل الخطأ في ساعة النظام ويضبط نفسه وفقًا لذلك.



الآن يمكننا بدء التهيئة. قبل البدء، لنبدأ بتثبيت openldap.

apt -y install slapd ldap-utils

١. سنبدأ بإعداد خادم NTP. إذا لم تُهيأ خوادم NTP وتُزامن بنفس الإعداد على جميع الأجهزة التي سنستخدمها، فلن يحدث التكرار.
apt -y install ntp
الآن، سنقوم بتكوين خوادم NTP التي ثبّتناها للمزامنة مع بعضها البعض. في هذه المقالة، سنستخدم خوادم NTP الآسيوية.
nano /etc/ntp.conf
الخادم 0.asia.pool.ntp.org iburst
الخادم 1.asia.pool.ntp.org iburst
server 2.asia.pool.ntp.org iburst
server 3.asia.pool.ntp.org iburst
بعد تحرير ملف conf، نقوم بحفظه وإعادة تشغيل خدمة NTP.
/etc/init.d/ntp إعادة التشغيل
2. يجب على جميع مقدمي العروض أن يعرفوا بعضهم البعض

يجب أن تتعرف جميع الخوادم التي نستخدمها على بعضها البعض وتتواصل بسلاسة. يمكنك استخدام نظام أسماء النطاقات المحلي (DNS) إن وُجد. في مثالنا، بما أننا لا نملك خادم DNS، سنقوم بتكوين ملف المضيفين.
nano /etc/hosts
10.0.0.1 ldap1.master.com ldap1
10.0.0.2 ldap2.master.com ldap2
لا تنس أن جميع التكوينات التي سنقوم بها يجب أن تتم بشكل كامل على كافة الخوادم.
يمكنك تجربة ping الآن.

3. نحتاج إلى تعديل تكوين slapd الافتراضي.

يجب أن يحتوي ملف /etc/default/slapd على إدخالات تطابق أسماء مضيفات الخوادم. إذا لم تفعل ذلك، فمن المرجح أن تتلقى خطأً في العثور على تطابق في معرف الخادم/عنوان URL لـ read_config.
nano /etc/default/slapd
خدمات SLAPD="ldapi:/// ldap://ldap1.master.com"
nano /etc/default/slapd
خدمات SLAPD="ldapi:/// ldap://ldap2.master.com"
4. تكوين تكرار cn=config

أنصح بشدة بفتح ملف ldif جديد لكل خطوة. سيكون هذا مفيدًا جدًا لسهولة الاستخدام ومعرفة ما يفعله وما لا يفعله. أولًا، سنبدأ بتثبيت وحدة syncprov.
*nano syncprov.ldif*
dn: cn=module{0},cn=config
changetype: تعديل
إضافة: olcModuleLoad
olcModuleLoad: syncprov
ldapmodify -Y خارجي -H ldapi:/// -f syncprov.ldif
نضيف إعداداتنا إلى خادمنا باستخدام ldapmodify. تذكر، يجب اتباع نفس الخطوات على جميع الخوادم.

الآن، نحتاج إلى تهيئة قاعدة البيانات على جميع الخوادم للتكرار. غيّر قيمة olcServerID لكل خادم على حدة. على سبيل المثال، 1 للخادم الأول و2 للخادم الثاني.
nano olcserverID.ldif
dn: cn=config
changeType: تعديل
إضافة: olcServerID
معرف خادم olc: 1
بعد هذه الخطوة، ستحتاج إلى تعيين كلمة مرور، إن لم تكن قد فعلت ذلك بالفعل. يمكنك القيام بذلك باستخدام الأمر slappasswd.
ldappasswd
كلمة المرور الجديدة:
أعد إدخال كلمة المرور الجديدة:
{SSHA}Sg545Nmjhedxfdd5895fMRD6d4RcLkslkeD8
من الضروري تنفيذ هذه الخطوة على جميع الخوادم. حتى لو استخدمتَ كلمة مرور واحدة ، لا تنسخ المفتاح أبدًا ؛ افعل ذلك لكل خادم على حدة. الآن، أضف كلمة مرورك إلى ملف التكوين.
dn: cn=config
changeType: تعديل
dn: olcDatabase={0}config,cn=config
إضافة: olcRootPW
olcRootPW: {SSHA}Sg545Nmjhedxfdd5895fMRD6d4RcLkslkeD8

إذا اتبعت جميع الخطوات بشكل صحيح، يمكنك الاتصال بقاعدة البيانات باستخدام ldapmodify. إذا أدخلت كلمة مرور خاطئة، فستظهر لك رسالة خطأ. إذا أدخلتها بشكل صحيح وكانت تعمل بشكل صحيح، فلن يحدث شيء.


سنضيف الآن إعدادات التكرار لجميع الخوادم. سنفعل ذلك باستخدام قيم olcServerID التي حددناها سابقًا.

nano measure.ldif
dn: cn=config
changetype: تعديل
استبدال: olcServerID
olcServerID: 1 ldap://ldap1.master.com
olcServerID: 2 ldap://ldap2.master.com
ldapmodify -Y خارجي -H ldapi:/// -f olc.ldif

الآن سوف نقوم بإضافة تكوين syncprov إلى كافة الخوادم.

nano syncprovconf.ldif
dn: olcOverlay=syncprov، olcDatabase={0}config، cn=config
نوع التغيير: إضافة
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
ldapmodify -Y خارجي -H ldapi:/// -f syncprovconf.ldif

الخطوة الأخيرة هي إضافة تكوين SyncRepl بين الخوادم.

nano syncrepl.ldif
dn: olcDatabase={0}config,cn=config
changetype: تعديل
إضافة: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://ldap1.master.com binddn="cn=admin,cn=config" bindmethod=simple credentials=*Your Password* searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1
olcSyncRepl: rid=002 provider=ldap://ldap2.master.com binddn="cn=admin,cn=config" bindmethod=simple credentials=*Your Password* searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1
-
إضافة: olcMirrorMode
وضع olcMirror: صحيح
ldapmodify -Y خارجي -H ldapi:/// -f syncrepl.ldif

إذا قمتَ بتكوين الخادم بشكل صحيح وكامل، يمكنكَ اختبار الاتصال بين الخوادم باستخدام أمر netstat. إذا لم يعمل، فعليكَ تثبيت خدمة net-tools.

apt -y install net-tools
بعد
netstat -a | egrep ":ldap"
tcp 0 0 0.0.0.0:ldap 0.0.0.0:* استماع
tcp 0 0 ldap.master.com:57116 ldap1.master.com:ldap تم التأسيس
tcp 0 0 ldap.master.com:ldap ldap1.master.com:35382 تم التأسيس
tcp 0 0 ldap.master.com:57120 ldap1.master.com:ldap تم التأسيس
tcp 0 0 ldap.master.com:ldap ldap1.master.com:35388 تم التأسيس
tcp6 0 0 [::]:ldap [::]:* استمع
يجب أن تحصل على إخراج مثل الموجود أعلاه إذا كان هناك اتصال.


ملاحظة: هذا لا يثبت أن التكرار يعمل؛ بل يظهر فقط أن الخوادم تتواصل مع بعضها البعض.

الآن حان وقت اختبار عمل التكرار. يمكننا القيام بذلك بإضافة مُعرِّف خادم olc مُزيَّف إلى ملف التكوين. سنتحقق من التكوين المُزيَّف الذي أضفناه من الجهاز الأول على الخادم الثاني. يُمكننا التحقق من ذلك بسهولة باستخدام أمر slapcat. نُنشئ ملف ldif التالي على ldap1 ونُحدِّث ملف التكوين.

نانو وهمية.ldif
dn: cn=config
changetype: تعديل
استبدال: olcServerID
olcServerID: 1 ldap://ldap1.master.com
olcServerID: 2 ldap://ldap2.master.com
olcServerID: 3 ldap://fake.ldap.com
ldapmofiy -Y EXTERNAL -H ldapi:/// -f fake.ldif

إذا كان التكرار يعمل، فسنرى العنوان المزيف على الخادم الثاني. نُشغّل الأمر التالي على خادم ldap2 ونفحص النتيجة.

slapcat -b "cn=config" > dump
تفريغ القطط | egrep "olcServerID"
olcServerID: 1 ldap://ldap1.master.com
olcServerID: 2 ldap://ldap2.master.com
olcServerID: 3 ldap://fake.ldap.com

إذا وجدنا العنوان المزيف، فهذا يعني اكتمال تهيئة cn=config. يمكننا الانتقال إلى الخطوة التالية، وهي تهيئة قاعدة البيانات الأخرى.


5. التكرار إلى قواعد بيانات أخرى

بما أننا نفّذنا تكرار الخادم في الخطوة السابقة، فإنّ تنفيذ الخطوات التالية على خادم واحد يكفي لتحديث الخوادم الأخرى. الآن، كما في السابق، سنضيف وحدة syncprov إلى قاعدة بيانات MDB.

نانو mdb.ldif
dn: olcOverlay=syncprov، olcDatabase={1}mdb، cn=config
نوع التغيير: إضافة
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
ldapmodify -Y خارجي -H ldapi:/// -f mdb.ldif

الآن نضيف تكوين syncrepl.

nano syncrepl.ldif
nano dn:olcDatabase={1}mdb,cn=config
changetype: تعديل
إضافة: olcSyncRepl
olcSyncRepl: rid=003 provider=ldap://ldap1.master.com binddn="cn=admin,dc=master,dc=com" bindmethod=simple credentials=*Your Password* searchbase="dc=master,dc=com" type=refreshAndPersist interval=00:00:00:10 retry="5 5 300 5" timeout=1
olcSyncRepl: rid=004 provider=ldap://ldap2.master.com binddn="cn=admin,dc=master,dc=com" bindmethod=simple credentials=*Your Password* searchbase="dc=master,dc=com" type=refreshAndPersist interval=00:00:00:10 retry="5 5 300 5" timeout=1
ldapmodify -Y خارجي -H ldapi:/// -f syncrepl.ldif

الآن نقوم بإعداد الفهرس لـMDB.

nano indexmdb.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: تعديل
إضافة: olcDbIndex
olcDbIndex: entryCSN eq
olcDbIndex: entryUUID eq
ldapmodify -Y خارجي -H ldapi:/// -f Indexmdb.ldif

إذا تم إكمال جميع الخطوات حتى هذه النقطة بشكل صحيح، فسيكون تكرار قاعدة بياناتك الرئيسية نشطًا على كلا الخادمين. للتحقق من تكرار قاعدة بيانات MDB بشكل صحيح، لنفتح ملف ldif، ونضيفه، ونتحقق منه على الخادم الآخر.

قاعدة نانو.ldif
dn:ou=الأشخاص، dc=الرئيسي، dc=com
objectClass:organizationUnit
أوو: الناس
dn: ou=Group,dc=master,dc=com
objectClass:organizationUnit
أوو:المجموعة
ldapadd -x -W -D "cn=admin,dc=master,dc=com" -f base.ldif

الآن، لننتقل إلى خادم ldap2 ونُشغّل أمر slapcat . إذا رأينا قيم المجموعة والأشخاص المُضافة حديثًا، فهذا يعني اكتمال عملية التكرار وبدء تشغيلها.

لا تملك حسابًا بعد؟ إذن دعنا نبدأ على الفور.

We care about your data. Read our privacy policy.