استخدام جهاز موازنة الحمل المختلَط باستخدام بروتوكولات HTTP الخارجية للوصول إلى مجموعة نقاط نهاية في الشبكة

1. مقدمة

تعتبر الاستراتيجية المختلطة حلاً عمليًا يتيح لك التكيّف مع متطلبات السوق المتغيّرة وتحديث تطبيقاتك بشكل تدريجي. يعمل التوافق المختلط مع أجهزة موازنة حمل HTTP(s) الخارجية والداخلية في Google Cloud على توسيع نطاق موازنة حمل السحابة الإلكترونية ليشمل الخلفيات الموجودة داخل مقر الشركة وفي السُحب الأخرى، وهو عامل تفعيل رئيسي لاستراتيجيتك المختلطة. وقد يكون هذا الإجراء مؤقتًا لتفعيل النقل إلى حل حديث مستنِد إلى السحابة الإلكترونية أو مكوّن دائم للبنية الأساسية لتكنولوجيا المعلومات في مؤسستك.

3312e69c63b02f73.png

سوف تتعلم في هذا التمرين المعملي كيفية إنشاء مجموعة نقاط نهاية للشبكة (NEG) باستخدام جهازين افتراضيين يمكن الوصول إليهما من خلال جهاز موازنة الحمل العالمي لبروتوكول HTTP(s) الخارجي. على الرغم من أن مجموعة نقاط نهاية الشبكة (NEG) في التمرين المعملي تتوفر في برنامج GCP، يتم استخدام نفس الإجراء للتواصل مع الموارد العامة أو داخل المؤسسة من خلال إمكانية الوصول عن طريق عنوان IP.

المعلومات التي ستطّلع عليها

  • إنشاء شبكة VPC مخصَّصة
  • إنشاء جهازَين افتراضيَين (VM) يتم استخدامهما كمجموعة نقاط نهاية للشبكة (NEG)
  • إنشاء جهاز موازنة الحمل المختلط وخدمة الخلفية وعمليات التحقّق من الصحة ذات الصلة
  • إنشاء قاعدة جدار حماية تسمح بالوصول إلى جهاز موازنة الحمل
  • سيتم إنشاء Cloud Router وNAT للسماح بتحديثات الطرود من الإنترنت
  • التحقُّق من إمكانية الوصول إلى مجموعة نقاط النهاية للشبكة

المتطلبات

  • الإلمام بأجهزة موازنة الحمل

إعداد بيئة ذاتية

  1. سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • اسم المشروع هو معرّفك الشخصي لهذا المشروع. طالما أنك تتبع اصطلاحات التسمية الخاصة به، يمكنك استخدام أي شيء تريده ويمكنك تحديثه في أي وقت.
  • يجب أن يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد ضبطه). تُنشئ وحدة التحكّم في Cloud Console سلسلة فريدة تلقائيًا. فعادةً لا تهتم بما هو. في معظم الدروس التطبيقية حول الترميز، يجب الرجوع إلى رقم تعريف المشروع (والذي يتم تحديده عادةً على أنّه PROJECT_ID). لذلك، إذا لم يعجبك، يمكنك إنشاء رقم تعريف عشوائي آخر، أو يمكنك تجربة رقم تعريف المشروع الخاص بك ومعرفة ما إذا كان متاحًا. بعد أن يصبح "مجمّد" بمجرد إنشاء المشروع.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد Google Cloud.

إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. احرص على اتّباع أي تعليمات في قسم "الحذف سريعًا". الذي يقدم لك نصائح حول كيفية إيقاف تشغيل الموارد حتى لا تتكبّد أي فواتير خارج نطاق هذا البرنامج التعليمي. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.

بدء Cloud Shell

مع أنّه يمكن إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي Google Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في السحابة الإلكترونية.

من وحدة تحكّم Google Cloud Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت وتعمل على Google Cloud، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. يمكنك تنفيذ كل أعمالك في هذا التمرين من خلال متصفح.

2. قبل البدء

داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك.

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID
echo $projectid

3- إنشاء شبكة VPC جديدة للوضع المخصّص

في هذه المهمة، ستقوم بإنشاء سحابة إلكترونية خاصة افتراضية (VPC)، وهي أساس الشبكة.

شبكة سحابة VPC

من Cloud Shell

gcloud compute networks create hybrid-network-lb --subnet-mode custom

إنشاء شبكة فرعية

من Cloud Shell

gcloud compute networks subnets create network-endpoint-group-subnet --network hybrid-network-lb --range 192.168.10.0/24 --region us-west1

إنشاء مثيل Cloud NAT

على الرغم من أنّ مثيل الحوسبة ليس شرطًا للشبكات المختلطة، إلا أنّه يتطلّب الاتصال بالإنترنت لتنزيل التطبيقات والتحديثات.

في هذه المَهمّة، ستنشئ نسخة افتراضية من Cloud Router وNAT والتي تتيح الاتصال بالإنترنت بمثيلات الأجهزة الافتراضية.

إنشاء Cloud Router

من Cloud Shell

gcloud compute routers create crnat --network hybrid-network-lb --region us-west1

إنشاء Cloud NAT

من Cloud Shell

gcloud compute routers nats create cloudnat --router=crnat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west1

4. إنشاء حالتَي VM

في هذه المهمة، ستنشئ مثيلين افتراضيين للأجهزة الافتراضية تشغيل Apache، ولاحقًا في التمرين المعملي، وستصبح هذه المثيلات الافتراضية مجموعة نقاط نهاية للشبكة (NEG).

من خلال Cloud Shell، يمكنك إنشاء أول مثيل داخل الشركة: on-prem-neg-1.

gcloud compute instances create on-prem-neg-1 \
    --zone=us-west1-a \
    --tags=allow-health-check \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=network-endpoint-group-subnet --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

من خلال Cloud Shell، يمكنك إنشاء أول مثيل داخل الشركة: on-prem-neg-2.

gcloud compute instances create on-prem-neg-2 \
    --zone=us-west1-a \
    --tags=allow-health-check \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=network-endpoint-group-subnet --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

5- إنشاء مجموعة نقاط نهاية (NEG) تتضمّن نقطة النهاية داخل المؤسسة

أولاً، قم بإنشاء مجموعة نقاط نهاية (NEG) باسم on-prem-neg-1 وon-prem-neg-2. وعليك أيضًا تحديد أنّ نقاط النهاية هذه تقع في منطقة us-west1-a ضمن GCP، وذلك لأغراض التوجيه وموازنة التحميل. ننصح بأن تتوافق المنطقة التي تم ضبطها مع أي منطقة مرتبطة بمنطقة بوابة الاتصال بشبكة VPN/بوابة الشبكة الافتراضية الخاصة (VPN) من أجل قياسات موازنة التحميل التي تعتمد على المساحة القريبة، والتي يتم استخدامها في موازنة التحميل.

من Cloud Shell، يمكنك إنشاء on-prem-neg-1.

gcloud compute network-endpoint-groups create on-prem-neg-1 \
    --network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
    --zone "us-west1-a" \
    --network hybrid-network-lb

من Cloud Shell، يمكنك إنشاء on-prem-neg-2.

gcloud compute network-endpoint-groups create on-prem-neg-2 \
    --network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
    --zone "us-west1-a" \
    --network hybrid-network-lb

في الدرس التطبيقي حول الترميز، تكون مجموعة نقاط نهاية الشبكة هي مثيل GCE يعمل Apache في Google Cloud Platform. بدلاً من ذلك، يمكنك تحديد نقطة نهاية على الإنترنت أو في مؤسستك كنقطة نهاية للشبكة.

من Cloud Shell، حدِّد عناوين IP لخدمة GCE.

gcloud compute instances list | grep -i on-prem

ربط مجموعة نقاط نهاية الشبكة بعنوان IP لمثيل GCE المحدّد سابقًا في الخطوة السابقة لكل سلبية، on-prem-neg-1 & on-prem-neg-2.

من Cloud Shell المساعد on-prem-neg-1، يمكنك تحديث x.x.x.x باستخدام عنوان IP الذي تم تحديده.

gcloud compute network-endpoint-groups update on-prem-neg-1 \
    --zone="us-west1-a" \
    --add-endpoint="ip=x.x.x.x,port=80"

من Cloud Shell المساعد on-prem-neg-2، يمكنك تحديث x.x.x.x باستخدام عنوان IP الذي تم تحديده.

gcloud compute network-endpoint-groups update on-prem-neg-2 \
    --zone="us-west1-a" \
    --add-endpoint="ip=x.x.x.x,port=80"

6- إنشاء فحص سلامة http وخدمة الخلفية جدار حماية

في هذه الخطوة، يمكنك إنشاء خدمة خلفية عامة باسم on-prem-backend-service. تحدد خدمة الخلفية هذه كيفية إرسال مستوى البيانات لحركة البيانات إلى مجموعة نقاط النهاية (NEG).

أولاً، عليك إنشاء فحص صحي يُسمى فحص الحالة الصحية داخل الشركة لمراقبة سلامة أي نقاط نهاية تنتمي إلى مجموعة نقاط النهاية هذه (أي نقطة النهاية داخل مقر المؤسسة).

من Cloud Shell

gcloud compute health-checks create http on-prem-health-check

إنشاء خدمة خلفية تُسمى "خدمة الواجهة الخلفية" وربطها بفحص الصحة

من Cloud Shell

gcloud compute backend-services create on-prem-backend-service \
    --global \
    --load-balancing-scheme=EXTERNAL \
    --health-checks on-prem-health-check

ينفِّذ جهاز موازنة الحمل الخارجي والخلفية لبروتوكول HTTP(S) عمليات فحص للصحة تنشأ من الشبكات الفرعية 35.191.0.0/16 و130.211.0.0/22. ولذا، فإن قاعدة جدار الحماية مطلوبة للسماح لموازن التحميل بتوجيه الواجهة الخلفية.

من Cloud Shell

gcloud compute firewall-rules create fw-allow-health-check \
    --network=hybrid-network-lb \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp:80

7. ربط مجموعة نقاط نهاية الشبكة وخدمة الخلفية

إضافة on-prem-neg-1 NEG إلى هذه الخدمة الخلفية

من Cloud Shell

gcloud compute backend-services add-backend on-prem-backend-service \
    --global \
    --network-endpoint-group on-prem-neg-1 \
    --network-endpoint-group-zone us-west1-a \
    --balancing-mode RATE \
    --max-rate-per-endpoint 5

إضافة on-prem-neg-2 NEG إلى هذه الخدمة الخلفية

من Cloud Shell

gcloud compute backend-services add-backend on-prem-backend-service \
    --global \
    --network-endpoint-group on-prem-neg-2 \
    --network-endpoint-group-zone us-west1-a \
    --balancing-mode RATE \
    --max-rate-per-endpoint 5

حجز عنوان IP ثابت لبروتوكول IPv4 المستخدَم للوصول إلى نقطة النهاية في الشبكة

من Cloud Shell

gcloud compute addresses create hybrid-lb-ip --project=$projectid --global

انتهينا من إعداد واجهة سطر الأوامر. لنكمل عملية الضبط من Cloud Console.

8. إنشاء جهاز موازنة حمل HTTP الخارجي ربط خدمة الخلفية

من Cloud Console، انتقِل إلى "موازنة التحميل" واختَر "إنشاء جهاز موازنة الحمل".

حدِّد موازنة حمل HTTP(S) وانقر على "بدء الإعداد"

70ccd168957e89d9.png

اختَر "من الإنترنت إلى الأجهزة الافتراضية". وفقًا للقطة الشاشة أدناه التي تسمح للجميع بالوصول إلى جهازك الافتراضي

a55cd31dbeadfecc.png

إدخال "xlb" كاسم لجهاز موازنة الحمل واختَر خدمة الخلفية التي تم إنشاؤها سابقًا "on-prem-backend-service" ثم "حسنًا" حسب لقطة الشاشة المقدّمة

f1589df43bf9e3e8.png

اختَر إعدادات الواجهة الأمامية، وعدِّل الاسم "xlb-fe". واختَر عنوان IPv4 الثابت الذي تم إنشاؤه سابقًا، تأكَّد من أنّ لقطة الشاشة المقدَّمة b47cd48c7c1ccfc3.png مطابقة.

حدد "مراجعة وإنهاء" لمطابقة لقطة الشاشة المقدمة واختيار إنشاء

bfa39f7dc3ad91e1.png

التحقّق من الصحة في الخلفية

من Cloud Console، تأكَّد من أنّ الواجهة الخلفية "xlb" سليمة، وباللون الأخضر حسب لقطة الشاشة المقدّمة

131bbfc955d6166c.png

9. التحقق من إمكانية الوصول إلى مجموعة نقاط الشبكة (NEG) من الإنترنت

يمكنك تذكُّر عنوان IP الخارجي الثابت المستخدَم أثناء إنشاء جهاز موازنة الحمل وأصبح الآن عنوان IP للواجهة الأمامية لنقاط النهاية في الشبكة. لنتحقّق من عنوان IP قبل تنفيذ اختبارنا النهائي.

من Cloud Shell

gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:

الناتج (سيختلف عنوان IP الخاص بك)

الناتج من Cloudshell

$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
IPAddress: 34.96.103.132

باستخدام عنوان IP للواجهة الأمامية لجهاز موازنة الحمل، يمكنك الوصول إلى الواجهة الخلفية لنقطة نهاية الشبكة. ملاحظة: في الدرس التطبيقي حول الترميز، تكون نقطة النهاية هي مثيل GCE، ولكن يمكنك استخدامها مع نقاط النهاية داخل المؤسسة على سبيل المثال.

من محطة العمل المحلية، شغِّل محطة ونفِّذ عملية ربط لعنوان IP لجهاز موازنة الحمل.

من محطة العمل، يمكنك إجراء ربط على عنوان IP للواجهة الأمامية. لاحظ 200 OK، وتفاصيل الصفحة التي تتكون من اسم مثيل سلبي والمنطقة.

myworkstation$ curl -v 34.96.103.132

* Trying 34.96.103.132...

* TCP_NODELAY set

* Connected to 34.96.103.132 (34.96.103.132) port 80 (#0)

> GET / HTTP/1.1

> Host: 34.96.103.132

> User-Agent: curl/7.64.1

> Accept: */*

>

< HTTP/1.1 200 OK

< Date: Tue, 10 Aug 2021 01:21:54 GMT

< Server: Apache/2.4.25 (Debian)

< Last-Modified: Tue, 10 Aug 2021 00:35:41 GMT

< ETag: "24-5c929ae7384f4"

< Accept-Ranges: bytes

< Content-Length: 36

< Content-Type: text/html

< Via: 1.1 google

<

Page on on-prem-neg-2 in us-west1-a

* Connection #0 to host 34.96.103.132 left intact

* Closing connection 0

تهانينا، تم نشر جهاز موازنة الحمل المختلط L7 بنجاح مع مجموعة توصيل الأكسجين (NEG)

تهانينا على إكمال الدرس التطبيقي حول الترميز.

المواضيع التي تناولناها

  • إنشاء شبكة VPC مخصَّصة
  • إنشاء جهازَين افتراضيَين (VM) يتم استخدامهما كمجموعة نقاط نهاية للشبكة (NEG)
  • إنشاء جهاز موازنة الحمل المختلط وخدمة الخلفية وعمليات التحقّق من الصحة ذات الصلة
  • إنشاء قاعدة جدار حماية تسمح بالوصول إلى جهاز موازنة الحمل
  • التحقُّق من إمكانية الوصول إلى مجموعة نقاط النهاية للشبكة

10. خطوات التنظيف

من واجهة مستخدم Cloud Console، حدِّد خيار "xlb" وأضِف علامة إليه. جهاز موازنة الحمل واختيار "الحذف" عبر "خدمات الشبكة" ← "موازنة التحميل" بعد الاختيار، ضَع علامة في المربّع "خدمة الخلفية في المؤسسة". &amp; ‘on-premise-health-check&#39; ثم اختَر "حذف".

53d7463fe354fe66.png

من واجهة المستخدم في Cloud Console، انتقِل إلى Compute Engine ← "مجموعات نقاط النهاية على الشبكة". بعد التحديد، ضع علامة في "on-prem-neg-1". &amp; ‘on-prem-neg-2&#39; ثم اختَر "حذف".

4d8f04264b44d03c.png

حذف مكونات التمرين المعملي من Cloud Shell

gcloud compute routers nats delete cloudnat --router=crnat --region us-west1 --quiet

gcloud compute routers delete crnat  --region us-west1 --quiet

gcloud compute instances delete on-prem-neg-1 --zone=us-west1-a --quiet

gcloud compute instances delete on-prem-neg-2 --zone=us-west1-a --quiet

gcloud compute firewall-rules delete fw-allow-health-check --quiet

gcloud compute networks subnets delete network-endpoint-group-subnet --region=us-west1 --quiet

gcloud compute networks delete hybrid-network-lb --quiet

gcloud compute addresses delete hybrid-lb-ip --global --quiet