يوضّح هذا المستند كيفية إضافة مركز بيانات (يُعرف أيضًا باسم منطقة) إلى مركز بيانات حالي.
اعتبارات قبل إضافة مركز بيانات
قبل تثبيت مركز بيانات، يجب معرفة كيفية ضبط إعدادات خوادم OpenLDAP وZooKeeper وCassandra وPostgres في جميع مراكز البيانات. يجب أيضًا التأكّد من أنّ المنافذ اللازمة مفتوحة بين العقد في مركزَي البيانات.
- OpenLDAP
يحتوي كل مركز بيانات على خادم OpenLDAP تم ضبطه مع تفعيل النسخ المتعدّد. عند تثبيت مركز البيانات الجديد، عليك ضبط OpenLDAP لاستخدام النسخ المتعدّد، ويجب إعادة ضبط خادم OpenLDAP في مركز البيانات الحالي لاستخدام النسخ المتعدّد.
- ZooKeeper
بالنسبة إلى السمة
ZK_HOSTS
لكلٍّ من مركزَي البيانات، حدِّد عناوين IP أو أسماء نظام أسماء النطاقات لجميع عقد ZooKeeper من كلا مركزَي البيانات بالترتيب نفسه، وصنِّف أي عقد باستخدام المُعدِّل :observer. تُعرف العقد التي لا تحتوي على المُعدِّل:observer
باسم "العناصر المُصوتة". يجب أن يكون لديك عدد فردي من "المصوتين" في الإعدادات.في هذه البنية، يكون مضيف ZooKeeper على المضيف 9 هو المُراقب:
في مثال ملف الإعدادات المعروض أدناه، تم وضع علامة على العقدة 9 باستخدام المُعدِّل
:observer
حتى يكون لديك خمسة مستخدمين مؤهّلين للتصويت: العقدة 1 و2 و3 و7 و8.بالنسبة إلى سمة
ZK_CLIENT_HOSTS
لكل مركز بيانات، حدِّد عناوين IP أو أسماء نظام أسماء النطاقات لعقد ZooKeeper فقط في مركز البيانات، بالترتيب نفسه، لجميع عقد ZooKeeper في مركز البيانات. - Cassandra
يجب أن تتضمّن جميع مراكز البيانات العدد نفسه من عقد Cassandra.
بالنسبة إلى
CASS_HOSTS
لكل مركز بيانات، تأكَّد من تحديد جميع عناوين IP لنظام Cassandra (وليس أسماء نظام أسماء النطاقات) لكلا مركزي البيانات. بالنسبة إلى مركز البيانات 1، يجب إدراج عقد Cassandra في مركز البيانات هذا أولاً. بالنسبة إلى مركز البيانات 2، يجب إدراج عقد Cassandra في مركز البيانات هذا أولاً. يجب إدراج عقد Cassandra بالترتيب نفسه لجميع عقد Cassandra في مركز البيانات.يجب أن تحتوي كلّ عقد Cassandra على اللاحقة ":d,r"، على سبيل المثال: ip:1,1 = مركز البيانات 1 والرفّ/منطقة التوفّر 1 وip:2,1 = مركز البيانات 2 والرفّ/منطقة التوفّر 1.
على سبيل المثال، "192.168.124.201:1,1 192.168.124.202:1,1 192.168.124.203:1,1 192.168.124.204:2,1 192.168.124.205:2,1 192.168.124.206:2,1"
سيتم استخدام العقدة الأولى في الرف/المنطقة 1 من مدى التوفّر في كل مركز بيانات كسجّان الخادم. في نموذج النشر هذا، سيظهر إعداد Cassandra على النحو التالي:
-
Postgres
يُثبِّت Edge تلقائيًا جميع عقد Postgres في الوضع الرئيسي. ومع ذلك، عندما يكون لديك عدة مراكز بيانات، يمكنك ضبط عقد Postgres لاستخدام النسخ الاحتياطي للعقدة الرئيسية حتى إذا تعطّلت العقدة الرئيسية، يمكن للعقدة الاحتياطية مواصلة توجيه الزيارات إلى الخادم. يتم عادةً ضبط خادم Postgres الرئيسي في مركز بيانات واحد، والخادم الاحتياطي في مركز البيانات الثاني.
إذا سبق ضبط مركز البيانات الحالي لتشغيل عقدتَي Postgres في وضع "الرئيسي/الاحتياطي"، عليك إلغاء تسجيل العقدة الاحتياطية الحالية في إطار هذا الإجراء واستبدالها بعقدة احتياطية في مركز البيانات الجديد.
يعرض الجدول التالي الإعدادات قبل وبعد Postgres لكلٍّ من السيناريوهَين:
قبل بعد عقدة Postgres رئيسية واحدة في dc-1
عقدة Postgres الرئيسية في dc-1
عقدة Postgres الاحتياطية في dc-2
عقدة Postgres الرئيسية في dc-1
عقدة Postgres الاحتياطية في dc-1
عقدة Postgres الرئيسية في dc-1
عقدة Postgres الاحتياطية في dc-2
إلغاء تسجيل عقدة Postgres الاحتياطية القديمة في dc-1
- متطلبات المنافذ
يجب التأكّد من أنّ المنافذ اللازمة مفتوحة بين العقد في مركزَي البيانات. للاطّلاع على مخطّط المنفذ، يُرجى الاطّلاع على متطلبات المنفذ.
تعديل مركز البيانات الحالي
تتطلّب إضافة مركز بيانات تنفيذ خطوات تثبيت عُقد مركز البيانات الجديد وضبطها، ولكنّها تتطلّب أيضًا تعديل العُقد في مركز البيانات الأصلي. هذه التعديلات ضرورية لأنّك تضيف عقدًا جديدة من Cassandra وZooKeeper في مركز البيانات الجديد الذي يجب أن يكون متاحًا لمركز البيانات الحالي، وعليك إعادة ضبط OpenLDAP لاستخدام النسخ.
إنشاء ملفات الإعداد
في ما يلي ملفات الضبط الصامتة لمركزَي البيانات، حيث يتضمّن كل مركز data 6 عقد كما هو موضّح في هياكل التركيب. يُرجى ملاحظة أنّ ملف الإعدادات لـ dc-1 يضيف إعدادات إضافية إلى:
- ضبط OpenLDAP مع النسخ على مستوى عقدتَي OpenLDAP
- أضِف عقد Cassandra وZooKeeper الجديدة من dc-2 إلى ملف الإعدادات الخاص بـ dc-1.
# Datacenter 1 IP1=IPorDNSnameOfNode1 IP2=IPorDNSnameOfNode2 IP3=IPorDNSnameOfNode3 IP7=IPorDNSnameOfNode7 IP8=IPorDNSnameOfNode8 IP9=IPorDNSnameOfNode9 HOSTIP=$(hostname -i) MSIP=$IP1 ADMIN_EMAIL=opdk@google.com APIGEE_ADMINPW=Secret123 LICENSE_FILE=/tmp/license.txt USE_LDAP_REMOTE_HOST=n LDAP_TYPE=2 LDAP_SID=1 LDAP_PEER=$IP7 APIGEE_LDAPPW=secret MP_POD=gateway-1 REGION=dc-1 ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3" # Must use IP addresses for CASS_HOSTS, not DNS names. CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1 $IP7:2,1 $IP8:2,1 $IP9:2,1" SKIP_SMTP=n SMTPHOST=smtp.example.com SMTPUSER=smtp@example.com SMTPPASSWORD=smtppwd SMTPSSL=n SMTPPORT=25 SMTPMAILFROM="My Company <myco@company.com>" |
# Datacenter 2 IP1=IPorDNSnameOfNode1 IP2=IPorDNSnameOfNode2 IP3=IPorDNSnameOfNode3 IP7=IPorDNSnameOfNode7 IP8=IPorDNSnameOfNode8 IP9=IPorDNSnameOfNode9 HOSTIP=$(hostname -i) MSIP=$IP7 ADMIN_EMAIL=opdk@google.com APIGEE_ADMINPW=Secret123 LICENSE_FILE=/tmp/license.txt USE_LDAP_REMOTE_HOST=n LDAP_TYPE=2 LDAP_SID=2 LDAP_PEER=$IP1 APIGEE_LDAPPW=secret MP_POD=gateway-2 REGION=dc-2 ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9" # Must use IP addresses for CASS_HOSTS, not DNS names. CASS_HOSTS="$IP7:2,1 $IP8:2,1 $IP9:2,1 $IP1:1,1 $IP2:1,1 $IP3:1,1" SKIP_SMTP=n SMTPHOST=smtp.example.com SMTPUSER=smtp@example.com SMTPPASSWORD=smtppwd SMTPSSL=n SMTPPORT=25 SMTPMAILFROM="My Company <myco@company.com>" |
إضافة مركز بيانات جديد
اتّبِع الإجراء أدناه لتثبيت مركز بيانات جديد.
في الإجراء، تحمل مراكز البيانات الأسماء التالية:
- dc-1: مركز البيانات الحالي
- dc-2: مركز البيانات الجديد
لإضافة مركز بيانات جديد:
- في dc-1، أعِد تشغيل setup.sh على عقد Cassandra الأصلية باستخدام ملف الإعدادات الجديد dc-1
الذي يتضمّن عقد Cassandra من dc-2:
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1
- على dc-1، أعِد تشغيل setup.sh على عقدة "خادم الإدارة":
/opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1
- على dc-2، ثبِّت
apigee-setup
على جميع العقد. راجِع مقالة تثبيت أداة إعداد apigee في Edge للحصول على مزيد من المعلومات. - على dc-2، ثبِّت Cassandra وZooKeeper على العقد المناسبة:
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
- على dc-2، نفِّذ الأمر rebuild على جميع عقد Cassandra، مع تحديد
اسم منطقة dc-1:
/opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassIP rebuild dc-1
ما عليك سوى إدخال اسم المستخدم وكلمة المرور إذا فعّلت مصادقة JMX لـ Cassandra.
- على dc-2، ثبِّت "خادم الإدارة" على العقدة المناسبة:
/opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
- في عقدة "خادم الإدارة" في dc-2، ثبِّت
apigee-provision
، الذي يُثبِّت الأداةapigee-adminapi.sh
:/opt/apigee/apigee-service/bin/apigee-service apigee-provision install
- على dc-2، ثبِّت "المسارات" و"معالجات الرسائل" على العقد المناسبة:
/opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2
- على dc-2، ثبِّت Qpid على العقد المناسبة:
/opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2
- على dc-2، ثبِّت Postgres على العقدة المناسبة:
/opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2
- إعداد خادم Postgres الرئيسي/الخادم الاحتياطي لعقد Postgres عقدة Postgres في dc-1 هي
العقدة الرئيسية، وعقدة Postgres في dc-2 هي الخادم الاحتياطي.
- على العقدة الرئيسية في dc-1، عدِّل ملف الضبط لضبط ما يلي:
PG_MASTER=IPorDNSofDC1Master PG_STANDBY=IPorDNSofDC2Standby
- فعِّل النسخ على النسخة الرئيسية الجديدة:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle
- في العقدة الاحتياطية في dc-2، عدِّل ملف الإعدادات لضبط ما يلي:
PG_MASTER=IPorDNSofDC1Master PG_STANDBY=IPorDNSofDC2Standby
- في العقدة الاحتياطية في dc-2، أوقِف الخادم ثم احذف أي
بيانات Postgres حالية:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
rm -rf /opt/apigee/data/apigee-postgresql/
يمكنك الاحتفاظ بنسخة احتياطية من هذه البيانات قبل حذفها إذا لزم الأمر.
- ضبط العقدة الاحتياطية في dc-2:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
- على العقدة الرئيسية في dc-1، عدِّل ملف الضبط لضبط ما يلي:
- في dc-1، عدِّل إعدادات الإحصاءات واضبط المؤسسات.
- في عقدة "خادم الإدارة" في dc-1، احصل على المعرّف الفريد العالمي لعقدة
Postgres:
apigee-adminapi.sh servers list -r dc-1 -p analytics -t postgres-server \ --admin adminEmail --pwd adminPword --host localhost
يظهر معرّف UUID في نهاية البيانات المعروضة. احفظ هذه القيمة.
- في عقدة "خادم الإدارة" في dc-2، احصل على معرّف UUID لعقدة Postgres كما هو موضّح في الخطوة السابقة. احفظ هذه القيمة.
- في عقدة "خادم الإدارة" في dc-1، حدِّد اسم
مجموعتَي "إحصاءات Google" و"المستهلكين". تتطلّب العديد من الأوامر أدناه هذه المعلومات.
يكون اسم مجموعة الإحصاءات تلقائيًا "axgroup-001"، ويكون اسم مجموعة المستهلكين هو "consumer-group-001". في ملف الإعدادات الصامتة لمنطقة معيّنة، يمكنك ضبط اسم مجموعة الإحصاءات باستخدام الموقع
AXGROUP
.إذا لم تكن متأكّدًا من أسماء مجموعات الإحصاءات والمستهلكين، استخدِم الأمر التالي لعرضها:
apigee-adminapi.sh analytics groups list \ --admin adminEmail --pwd adminPword --host localhost
يعرض هذا الأمر اسم مجموعة الإحصاءات في حقل الاسم، واسم مجموعة المستهلكين في حقل مجموعات المستهلكين.
- في عقدة "خادم الإدارة" في dc-1، أزِل خادم Postgres
الحالي من مجموعة الإحصاءات:
- أزِل عقدة Postgres من مجموعة المستهلكين:
apigee-adminapi.sh analytics groups consumer_groups datastores remove \ -g axgroup-001 -c consumer-group-001 -u UUID \ -Y --admin adminEmail --pwd adminPword --host localhost
إذا تم ضبط dc-1 لتضمّن عقدتَي Postgres تعملان في وضع "الوحدة الرئيسية/الوحدة الاحتياطية"، عليك إزالة كليهما:
apigee-adminapi.sh analytics groups consumer_groups datastores remove \ -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" \ -Y --admin adminEmail --pwd adminPword --host localhost
- أزِل عقدة Postgres من مجموعة الإحصاءات:
apigee-adminapi.sh analytics groups postgres_server remove \ -g axgroup-001 -u UUID -Y --admin adminEmail \ --pwd adminPword --host localhost
إذا تم ضبط dc-1 لتضمّن عقدتَي Postgres تعملان في وضع "الرئيسي/الاحتياطي"، أزِل كليهما:
apigee-adminapi.sh analytics groups postgres_server \ remove -g axgroup-001 -u UUID1,UUID2 -Y --admin adminEmail \ --pwd adminPword --host localhost
- أزِل عقدة Postgres من مجموعة المستهلكين:
- في عقدة "خادم الإدارة" في dc-1، أضِف خوادم Postgres الجديدة التي تعمل كمثبّت أساسي/احتياطي
إلى مجموعة الإحصاءات:
- أضِف كلا خادمَي Postgres إلى مجموعة الإحصاءات:
apigee-adminapi.sh analytics groups postgres_server \ add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail \ --pwd adminPword --host localhost
يشير الرمز UUID_1 إلى عقدة Postgres الرئيسية في dc-1، ويشير الرمز UUID_2 إلى عقدة Postgres الاحتياطية في dc-2.
- أضِف خوادم قاعدة بيانات الجلسة إلى مجموعة المستهلكين كخادم رئيسي/احتياطي:
apigee-adminapi.sh analytics groups consumer_groups datastores \ add -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" --admin adminEmail \ --pwd adminPword --host localhost
- أضِف كلا خادمَي Postgres إلى مجموعة الإحصاءات:
- أضِف خوادم Qpid من dc-2 إلى مجموعة الإحصاءات:
- في عقدة "خادم الإدارة" في dc-1، احصل على المعرّفات الفريدة العالمية لعقد Qpid
في dc-2:
apigee-adminapi.sh servers list -r dc-2 -p central -t qpid-server \ --admin adminEmail --pwd adminPword --host localhost
تظهر أرقام تعريف UUID في نهاية البيانات المعروضة. احفظ هذه القيم.
- في عقدة "خادم الإدارة" لـ dc-1، أضِف عقد Qpid إلى
مجموعة الإحصاءات (نفِّذ كلا الأمرَين):
apigee-adminapi.sh analytics groups qpid_server \ add -g axgroup-001 -u "UUID_1" --admin adminEmail \ --pwd adminPword --host localhost
apigee-adminapi.sh analytics groups qpid_server \ add -g axgroup-001 -u "UUID_2" --admin adminEmail \ --pwd adminPword --host localhost
- في عقدة "خادم الإدارة" في dc-1، أضِف عقد Qpid إلى
مجموعة المستهلكين (نفِّذ كلا الأمرَين):
apigee-adminapi.sh analytics groups consumer_groups consumers \ add -g axgroup-001 -c consumer-group-001 -u "UUID_1" \ --admin adminEmail --pwd adminPword --host localhost
apigee-adminapi.sh analytics groups consumer_groups consumers \ add -g axgroup-001 -c consumer-group-001 -u "UUID_2" \ --admin adminEmail --pwd adminPword --host localhost
- في عقدة "خادم الإدارة" في dc-1، احصل على المعرّفات الفريدة العالمية لعقد Qpid
في dc-2:
- ألغِ تسجيل خادم Postgres الاحتياطي القديم واحذِفه من dc-1:
- ألغِ تسجيل خادم Postgres الاحتياطي الحالي dc-1:
apigee-adminapi.sh servers deregister -u UUID -r dc-1 \ -p analytics -t postgres-server -Y --admin adminEmail \ --pwd adminPword --host localhost
حيث يكون UUID هو عقدة Postgres الاحتياطية القديمة في dc-1.
- حذف خادم Postgres الاحتياطي الحالي dc-1:
apigee-adminapi.sh servers delete -u UUID \ --admin adminEmail --pwd adminPword --host localhost
- ألغِ تسجيل خادم Postgres الاحتياطي الحالي dc-1:
- في عقدة "خادم الإدارة" في dc-1، احصل على المعرّف الفريد العالمي لعقدة
Postgres:
- عدِّل مساحات مفاتيح Cassandra باستخدام عامل التكرار الصحيح لكلّ من مركزَي البيانات. ما عليك سوى تنفيذ هذه الخطوة مرة واحدة على أي خادم Cassandra في أي مركز بيانات:
- ابدأ أداة
cqlsh
في Cassandra:/opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
- نفِّذ أوامر CQL التالية في موجه "cqlsh>" لضبط مستويات النسخ المتعدّد
لمساحات مفاتيح Cassandra:
ALTER KEYSPACE "identityzone" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- يمكنك عرض مساحات المفاتيح باستخدام الأمر:
select * from system.schema_keyspaces;
- الخروج من
cqlsh
:exit
- ابدأ أداة
- نفِّذ الأمر
nodetool
التالي على جميع عقد Cassandra في dc-1 لتحرير الذاكرة:/opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassandraIP cleanup
ما عليك سوى إدخال اسم المستخدم وكلمة المرور إذا فعّلت مصادقة JMX لـ Cassandra.
- لكل مؤسسة ولكل بيئة تريد توفيرها في جميع مراكز البيانات:
- في عقدة "خادم الإدارة" لوحدة dc-1، أضِف وحدة MP_POD الجديدة إلى
المؤسسة:
apigee-adminapi.sh orgs pods add -o orgName -r dc-2 -p gateway-2 \ --admin adminEmail --pwd adminPword --host localhost
حيث يكون gateway-2 هو اسم مجموعة وحدات البوابة كما هو محدّد في الخاصية MP_POD في ملف الإعداد dc-2.
- أضِف معالجات الرسائل الجديدة إلى المؤسسة والبيئة:
- في عقدة "خادم الإدارة" في dc-2، احصل على معرّفات UUID لشدَّد
عقد "معالج الرسائل" في dc-2:
apigee-adminapi.sh servers list -r dc-2 -p gateway-2 \ -t message-processor --admin adminEmail --pwd adminPword --host localhost
تظهر أرقام تعريف UUID في نهاية البيانات المعروضة. احفظ هذه القيم.
- في عقدة "خادم الإدارة" في dc-1، لكلّ "معالج رسائل"
في dc-2، أضِف "معالج الرسائل" إلى بيئة للمؤسسة:
apigee-adminapi.sh orgs envs servers add -o orgName -e envName \ -u UUID --admin adminEmail --pwd adminPword --host localhost
- في عقدة "خادم الإدارة" في dc-2، احصل على معرّفات UUID لشدَّد
عقد "معالج الرسائل" في dc-2:
- في عقدة "خادم الإدارة" لـ dc-1، تحقَّق من المؤسسة:
apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName \ --admin adminEmail --pwd adminPword --host localhost
حيث يكون apiProxyName هو اسم وكيل واجهة برمجة التطبيقات الذي تم نشره في المؤسسة.
- في عقدة "خادم الإدارة" لوحدة dc-1، أضِف وحدة MP_POD الجديدة إلى
المؤسسة: