Looker PSC Southbound NEG داخل الشركة

1. مقدمة

في هذا الدرس التطبيقي حول الترميز، ستجري عملية ربط جنوبي بقاعدة بيانات postgres محلية عبر شبكة H-VPN باستخدام جهاز موازنة حمل داخلي لخادم TCP الوكيل ومجموعة نقاط نهاية شبكة مختلطة يتم استدعاؤها من Looker PSC كمستهلك خدمة.

‫Private Service Connect هي إحدى إمكانات شبكة Google Cloud التي تتيح للمستهلكين الوصول إلى الخدمات المُدارة بشكل خاص من داخل شبكة السحابة الإلكترونية الخاصة الافتراضية (VPC). وبالمثل، يتيح لمقدّمي الخدمات المُدارة استضافة هذه الخدمات في شبكات VPC منفصلة وتقديم اتصال خاص للمستهلكين. على سبيل المثال، عند استخدام Private Service Connect للوصول إلى Looker، تكون أنت مستهلك الخدمة، وتكون Google هي منتِج الخدمة، كما هو موضّح في الشكل 1.

الشكل 1.

145ea4672c3a3b14.png

تتيح إمكانية الوصول الصادرة، المعروفة أيضًا باسم PSC العكسي، للمستهلك إنشاء خدمة منشورة كمنتِج للسماح لـ Looker بالوصول إلى نقاط النهاية المحلية وفي شبكة VPC وإلى الخدمات المُدارة والشبكة المختلطة. يمكن نشر عمليات الربط المتجهة جنوبًا في أي منطقة، بغض النظر عن مكان نشر Looker PSC، كما هو موضّح في الشكل 2.

الشكل 2.

259493afd914f68b.png

ما ستتعلمه

  • متطلبات الشبكة
  • إنشاء خدمة مقدّم في Private Service Connect
  • إنشاء نقطة نهاية Private Service Connect في Looker
  • إنشاء اتصال بقاعدة بيانات postgres المحلية من Looker باستخدام "اختبار الاتصال"

المتطلبات

def88091b42bfe4d.png

2. ما ستنشئه

ستنشئ شبكة Producer باسم looker-psc-demo لنشر موازن الحمل الداخلي الذي يستخدم بروتوكول TCP ومجموعة نقاط نهاية الشبكة المختلطة المنشورة كخدمة عبر Private Service Connect (PSC). لعرض قاعدة بيانات محلية، عليك نشر شبكة VPC محلية تجريبية مرتبطة بشبكة VPC التجريبية looker-psc-demo باستخدام HA-VPN.

ستنفّذ الإجراءات التالية للتحقّق من إمكانية الوصول إلى خدمة Producer:

  • إنشاء نقطة نهاية Private Service Connect في Looker مرتبطة بمرفق خدمة المنتج
  • استخدِم Looker Console لإجراء عملية التحقّق من صحة الاتصال بقاعدة بيانات postgres المحلية

3- متطلبات الشبكة

في ما يلي تفصيل لمتطلبات الشبكة لشبكة Producer، والمستهلك في هذا الدرس العملي هو مثيل Looker PSC.

المكونات

الوصف

VPC (looker-psc-demo)

شبكة VPC في الوضع المخصّص

VPC (عرض توضيحي محلي)

شبكة VPC في الوضع المخصّص

الشبكة الفرعية لترجمة عنوان الشبكة (NAT) في PSC

تتم ترجمة الحِزم من شبكة VPC الخاصة بالمستهلك باستخدام SNAT، وذلك كي يتم تحويل عناوين IP المصدر الأصلية إلى عناوين IP المصدر من الشبكة الفرعية NAT في شبكة VPC الخاصة بالمنتج.

الشبكة الفرعية لقاعدة إعادة التوجيه في PSC

يُستخدم لتخصيص عنوان IP لجهاز موازنة الحمل الخاص بخادم وكيل TCP الداخلي الإقليمي

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

تُستخدَم لتخصيص عنوان IP لمجموعة نقاط نهاية الشبكة

الشبكة الفرعية للوكيل فقط

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

مجموعة نقاط نهاية الشبكة المختلطة

يتم التعامل مع الخدمات المحلية والخدمات السحابية الأخرى مثل أيّ خلفية أخرى في Cloud Load Balancing. الفرق الرئيسي هو أنّك تستخدم مجموعة NEG للاتصال المختلط لضبط نقاط نهاية الخلفيات هذه. يجب أن تكون نقاط النهاية عبارة عن مجموعات صالحة من عنوان IP ورقم المنفذ يمكن لموازن التحميل الوصول إليها باستخدام منتجات الربط المختلط، مثل Cloud VPN أو Cloud Interconnect.

خدمة الخلفية

تعمل خدمة الخلفية كجسر بين برنامج موازنة الحمل وموارد الخلفية. في البرنامج التعليمي، ترتبط خدمة الخلفية بمجموعة نقاط نهاية الشبكة المختلطة.

Cloud Router

  • تعتمد خدمة Cloud NAT على Cloud Routers في ما يتعلق بإمكانات مستوى التحكّم، ولكن ليس في ما يتعلق بإدارة جلسات BGP.
  • يتم استخدام Cloud Router لبروتوكول BGP الذي تم إعداده لإنشاء HA-VPN بين شبكتَي VPC‏ psc-looker-demo وon-prem-demo.

HA-VPN

شبكة HA VPN بين شبكات VPC في Google Cloud في هذا التصميم، يمكنك ربط شبكتَي سحابة إلكترونية خاصة افتراضية (VPC) على Google Cloud باستخدام بوابة HA VPN في كل شبكة. يمكن أن تكون شبكات السحابة الخاصة الافتراضية في المنطقة نفسها أو في مناطق متعددة.

Cloud NAT

يتم استخدامها من قِبل شبكة VPC التجريبية المحلية للخروج من الإنترنت

4. بنية الدرس التطبيقي حول الترميز

79aeb28b38f237da.png

5- الإعداد والمتطلبات

إعداد البيئة بالسرعة التي تناسبك

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

بدء Cloud Shell

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

6. قبل البدء

تفعيل واجهات برمجة التطبيقات

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region

فعِّل جميع الخدمات اللازمة:

gcloud services enable compute.googleapis.com

7. إنشاء شبكة VPC خاصة بالمنتج

شبكة VPC

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute networks create looker-psc-demo --subnet-mode custom

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

سيتم ربط الشبكة الفرعية لخدمة PSC بمرفق خدمة PSC بغرض ترجمة عناوين الشبكة.

في Cloud Shell، أنشئ الشبكة الفرعية لترجمة عناوين الشبكة (NAT) في Private Service Connect:

gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT

داخل Cloud Shell، أنشئ الشبكة الفرعية لقاعدة إعادة التوجيه الخاصة بالمنتج:

gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

داخل Cloud Shell، أنشئ الشبكة الفرعية الخاصة بخادم وكيل المنطقة الخاص بالمنتج فقط:

gcloud compute networks subnets create $region-proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=looker-psc-demo \
  --range=10.10.10.0/24

حجز عنوان IP الخاص بجهاز موازنة الحمل

داخل Cloud Shell، احجز عنوان IP داخليًا لجهاز موازنة الحمل:

gcloud compute addresses create hybrid-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

في Cloud Shell، اطّلِع على عنوان IP المحجوز.

gcloud compute addresses describe hybrid-neg-lb-ip \
  --region=$region | grep -i address:

مثال على الناتج:

gcloud compute addresses describe hybrid-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

إعداد مجموعة نقاط نهاية الشبكة المختلطة

أنشئ مجموعة NEG مختلطة، واضبط –network-endpoint-type على NON_GCP_PRIVATE_IP_PORT.

داخل Cloud Shell، أنشئ مجموعة نقاط نهاية شبكة مختلطة (Hybrid NEG) تُستخدَم للوصول إلى قاعدة البيانات المحلية:

gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
    --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
    --network=looker-psc-demo \
    --zone=$zone

داخل Cloud Shell، عدِّل مجموعة نقاط نهاية الشبكة المختلطة (Hybrid NEG) باستخدام عنوان IP والمنفذ لقاعدة البيانات المحلية، أي 192.168.10.4 والمنفذ 5432، اللذين تم إنشاؤهما في خطوة لاحقة من البرنامج التعليمي:

gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
    --add-endpoint=ip=192.168.10.4,port=5432 \
    --zone=$zone

إنشاء عملية تحقّق من الصحة على مستوى المنطقة

داخل Cloud Shell، أنشئ عملية تحقّق من الصحة تتحقّق من منفذ قاعدة البيانات المحلية، 5432:

gcloud compute health-checks create tcp on-prem-5432-healthcheck \
    --region=$region \
    --port=5432

إنشاء سياسة جدار حماية بين الشبكات وقواعد جدار الحماية

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute network-firewall-policies create looker-psc-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy

تسمح قاعدة جدار الحماية التالية بتدفّق الزيارات من نطاق الشبكة الفرعية لترجمة عناوين الشبكة (NAT) في PSC إلى جميع المثيلات في الشبكة.

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp

8. إنشاء خدمة منتِجة

إنشاء مكوّنات جهاز موازنة الحمل

داخل Cloud Shell، أنشئ خدمة خلفية:

gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=on-prem-5432-healthcheck --health-checks-region=$region

داخل Cloud Shell، أضِف الخلفية الخاصة بمجموعة نقاط نهاية الشبكة المختلطة إلى خدمة الخلفية:

gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=on-prem-hybrid-neg --network-endpoint-group-zone=$zone --balancing-mode=CONNECTION --max-connections=100 --region=$region

في Cloud Shell، أنشئ خادمًا وكيلاً مستهدفًا لبروتوكول TCP لتوجيه الطلبات إلى خدمة الخلفية:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

في البنية التالية، أنشئ قاعدة إعادة توجيه (جهاز موازنة حمل وكيل TCP داخلي).

في Cloud Shell، نفِّذ ما يلي:

gcloud compute forwarding-rules create producer-hybrid-neg-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=hybrid-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=5432

إنشاء مرفق الخدمة

داخل Cloud Shell، أنشئ مرفق الخدمة، onpremdatabase1-svc-attachment:

gcloud compute service-attachments create onpremdatabase1-svc-attachment --region=$region --producer-forwarding-rule=producer-hybrid-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

بعد ذلك، احصل على "ملحق الخدمة" المُدرَج في selfLink URI الذي يبدأ بالمشاريع، ودوِّن هذا الملحق لإعداد نقطة نهاية PSC في Looker.

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region

مثال على الناتج المتوقّع:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-09-01T16:07:51.600-07:00'
description: ''
enableProxyProtocol: false
fingerprint: cFt9rERR1iE=
id: '2549689544315850024'
kind: compute#serviceAttachment
name: onpremdatabase1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '2549689544315850024'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-hybrid-neg-fr

في Cloud Console، انتقِل إلى:

خدمات الشبكة → Private Service Connect → الخدمات المنشورة

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9- إنشاء اتصال بنقطة نهاية Private Service Connect في Looker

في القسم التالي، ستربط مرفق خدمة المنتِج بـ Looker Core PSC باستخدام العلامات ‎–psc-service-attachment في Cloud Shell لنطاق واحد.

داخل Cloud Shell، أنشئ عملية ربط بين الخدمات الخاصة في السحابة الإلكترونية من خلال تعديل المَعلمات التالية لتتطابق مع بيئتك:

  • INSTANCE_NAME: اسم مثيل Looker (المنتج الأساسي من Google Cloud).
  • DOMAIN_1: onprem.database1.com
  • ‫SERVICE_ATTACHMENT_1: عنوان URI الذي تم تسجيله عند إنشاء مرفق الخدمة، onpremdatabase1-svc-attachment
  • المنطقة: المنطقة التي تتم فيها استضافة مثيل Looker (المنتج الأساسي من Google Cloud).

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

مثال:

gcloud looker instances update looker-psc-instance --psc-service-attachment domain=onprem.database1.com,attachment=projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment --region=$region

داخل Cloud Shell، تأكَّد من أنّ قيمة serviceAttachments.connectionStatus هي ACCEPTED، ثمّ عدِّلها لتصبح اسم مثيل Looker PSC:

gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json

مثال:

gcloud looker instances describe looker-psc-instance --region=$region --format=json

مثال:

{
  "adminSettings": {},
  "createTime": "2024-08-23T00:00:45.339063195Z",
  "customDomain": {
    "domain": "looker.cosmopup.com",
    "state": "AVAILABLE"
  },
  "encryptionConfig": {},
  "lookerVersion": "24.14.18",
  "name": "projects/$project/locations/$region/instances/looker-psc-instance",
  "platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
  "pscConfig": {
    "allowedVpcs": [
      "projects/$project/global/networks/looker-psc-demo",
      "projects/$project/global/networks/looker-shared-vpc"
    ],
    "lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "onprem.database1.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-09-01T23:15:07.426372901Z"
}

التحقّق من صحة نقطة نهاية PSC في Cloud Console

يمكنك التحقّق من صحة اتصال PSC من Cloud Console

في Cloud Console، انتقِل إلى:

Looker → نسخة Looker → التفاصيل

2d4684d722d31e4b.png

993cdaf748f4c030.png

إنشاء شبكة VPC محلية

شبكة السحابة الخاصة الافتراضية (VPC)

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom

إنشاء شبكة فرعية لقاعدة بيانات Postgresql

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region

داخل Cloud Shell، احجز عنوان IPv4 داخليًا، يُستخدَم في onprem.database1.com، 192.168.10.4:

gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4

إنشاء Cloud Router لشبكة VPC التجريبية المحلية

يتم استخدام Cloud NAT في البرنامج التعليمي لتثبيت حزمة البرامج لأنّ مثيل الجهاز الافتراضي لا يتضمّن عنوان IP خارجيًا.

في Cloud Shell، أنشئ جهاز توجيه Cloud Router المستخدَم مع Cloud NAT وHA-VPN:

gcloud compute routers create on-prem-cr \
   --region=$region \
   --network=on-prem-demo \
   --asn=65002

داخل Cloud Shell، أنشئ بوابة NAT:

gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region

إنشاء مثيل اختبار قاعدة البيانات

أنشئ مثيلاً لقاعدة بيانات Postgres سيتم استخدامه لاختبار إمكانية الاتصال بـ Looker والتحقّق منها.

داخل Cloud Shell، أنشئ المثيل:

gcloud compute instances create postgres-database \
    --project=$project \
    --zone=$zone \
    --machine-type=e2-medium \
    --subnet=database-subnet \
    --no-address \
    --private-network-ip 192.168.10.4 \
    --image-family debian-12 \
    --image-project debian-cloud  \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt -y install postgresql postgresql-client postgresql-contrib -y"

إنشاء سياسة جدار حماية بين الشبكات وقواعد جدار الحماية

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute network-firewall-policies create on-prem-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy on-prem-demo-policy --network on-prem-demo --name on-prem-demo --global-firewall-policy

للسماح لميزة "الوصول إلى الأجهزة الافتراضية عبر الإنترنت" بالاتصال بأجهزة VM الافتراضية، أنشئ قاعدة جدار حماية تتضمّن ما يلي:

  • ينطبق على جميع مثيلات الأجهزة الافتراضية التي تريد إتاحتها باستخدام IAP.
  • يسمح بحركة البيانات الواردة من نطاق عناوين IP ‏35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي تستخدمها خدمة IAP لإعادة توجيه بروتوكول TCP.

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy on-prem-demo-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22  --global-firewall-policy

تسمح قاعدة جدار الحماية التالية بنقل البيانات من نطاق الشبكة الفرعية للخادم الوكيل فقط إلى جميع المثيلات في الشبكة.

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy on-prem-demo-policy --description "allow traffic from proxy only subnet" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp

10. الاتصال المختلط

في القسم التالي، ستنشئ Cloud Router يتيح لك تبادل المسارات بشكل ديناميكي بين شبكتك الخاصة الافتراضية (VPC) وشبكة النظراء باستخدام بروتوكول Border Gateway Protocol (BGP).

يمكن لخدمة Cloud Router إعداد جلسة BGP عبر نفق Cloud VPN لربط شبكاتك. يتعرّف تلقائيًا على نطاقات عناوين IP الجديدة للشبكة الفرعية ويُعلن عنها لشبكة النظراء.

في الخطوات التالية، ستنشئ شبكة HA VPN بين شبكة VPC‏ looker-psc-demo وشبكة VPC‏ on-prem-demo لتوضيح إمكانية اتصال Hybrid NEG بـ onprem.database1.com.

أنشئ HA VPN GW لـ looker-psc-demo

عند إنشاء كلّ بوابة، يتمّ تخصيص عنوانَي IPv4 خارجيَّين تلقائيًا، عنوان واحد لكلّ واجهة بوابة.

في Cloud Shell، أنشئ بوابة HA VPN:

gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
   --network=looker-psc-demo \
   --region=$region

إنشاء بوابة HA VPN للعرض التوضيحي المحلي

عند إنشاء كلّ بوابة، يتمّ تخصيص عنوانَي IPv4 خارجيَّين تلقائيًا، عنوان واحد لكلّ واجهة بوابة.

في Cloud Shell، أنشئ بوابة HA VPN:

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-demo\
   --region=$region

التحقّق من صحة إنشاء بوابة HA VPN

باستخدام وحدة التحكّم، انتقِل إلى "الاتصال المختلط" (HYBRID CONNECTIVITY) → "الشبكة الافتراضية الخاصة" (VPN) → "بوابات الشبكة الافتراضية الخاصة على Cloud" (CLOUD VPN GATEWAYS).

7f1b504616504866.png

إنشاء Cloud Router لـ looker-psc-demo

داخل Cloud Shell، أنشئ Cloud Router:

gcloud compute routers create looker-psc-demo-cr \
   --region=$region \
   --network=looker-psc-demo\
   --asn=65001

إنشاء أنفاق VPN لـ looker-psc-demo

ستنشئ نفقَي VPN على كل بوابة HA VPN.

إنشاء نفق VPN0

داخل Cloud Shell، أنشئ tunnel0:

gcloud compute vpn-tunnels create looker-psc-demo-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 0

إنشاء نفق VPN1

داخل Cloud Shell، أنشئ النفق 1:

gcloud compute vpn-tunnels create looker-psc-demo-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 1

إنشاء أنفاق VPN للعرض التوضيحي المحلي

ستنشئ نفقَي VPN على كل بوابة HA VPN.

إنشاء نفق VPN0

داخل Cloud Shell، أنشئ tunnel0:

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
   --interface 0

إنشاء نفق VPN1

داخل Cloud Shell، أنشئ النفق 1:

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

التحقّق من صحة إنشاء اتصال نفقي بشبكة VPN

باستخدام وحدة التحكّم، انتقِل إلى HYBRID CONNECTIVITY (الاتصال المختلط) → VPN → CLOUD VPN TUNNELS (أنفاق شبكة VPN على السحابة الإلكترونية).

c2fcb340a7614070.png

11. إنشاء أجهزة BGP مجاورة

إنشاء واجهة BGP وإعداد تبادل معلومات بين الشبكات لها في looker-psc-demo

داخل Cloud Shell، أنشئ واجهة BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel0 \
    --region $region

داخل Cloud Shell، أنشئ نظير BGP:

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region $region

داخل Cloud Shell، أنشئ واجهة BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel1 \
    --region $region

داخل Cloud Shell، أنشئ نظير BGP:

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region $region

إنشاء واجهة BGP وإعداد تبادل معلومات بين الشبكات لها في on-prem-demo

داخل Cloud Shell، أنشئ واجهة BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel0-to-looker-psc-demo \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region $region

داخل Cloud Shell، أنشئ نظير BGP:

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel0 \
    --interface if-tunnel1-to-looker-psc-demo \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region $region

داخل Cloud Shell، أنشئ واجهة BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel1-to-looker-psc-demo \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region $region

داخل Cloud Shell، أنشئ نظير BGP:

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel1\
    --interface if-tunnel2-to-looker-psc-demo \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region $region

انتقِل إلى الاتصال المختلط (Hybrid CONNECTIVITY) → شبكة VPN لعرض تفاصيل الاتصال النفقي بشبكة VPN.

78ab590317919bf5.png

التحقّق من صحة المسارات التي تم التعرّف عليها في looker-psc-demo عبر شبكة HA VPN

بعد إنشاء اتصالات HA VPN النفقية وجلسات BGP، يكون السلوك التلقائي لخدمة Cloud Router هو الإعلان عن مسارات الشبكة الفرعية. عرض المسارات التي تعلّمها looker-psc-demo

باستخدام وحدة التحكّم، انتقِل إلى شبكة السحابة الافتراضية الخاصة (VPC) → شبكات السحابة الافتراضية الخاصة (VPC) → looker-psc-demo → مسارات → المنطقة → عرض

لاحظ أنّ observe looker-psc-demo قد تعلّم شبكة فرعية لقاعدة البيانات 192.168.10.0/28 من شبكة VPC المحلية on-prem-demo.

c11a11ed8b0491c8.png

التحقّق من أنّ شبكة VPC التجريبية المحلية تعلّمت المسارات عبر HA VPN

بما أنّ السلوك التلقائي لجهاز توجيه السحابة الإلكترونية هو الإعلان عن جميع الشبكات الفرعية، يتم الإعلان عن الشبكة الفرعية للوكيل فقط عبر بروتوكول BGP. ستستخدم مجموعة نقاط نهاية الشبكة المختلطة (NEG) الشبكة الفرعية للوكيل فقط كعنوان مصدر عند التواصل مع الخادم onprem.database1.com.

تعرّف Observe on-prem-demo على الشبكة الفرعية 10.10.10.0/24 المخصّصة للخادم الوكيل فقط من looker-psc-demo.

باستخدام وحدة التحكّم، انتقِل إلى شبكة السحابة الافتراضية الخاصة (VPC) → شبكات السحابة الافتراضية الخاصة (VPC) → on-prem-demo → مسارات → المنطقة → عرض

b0073faed026931f.png

12. إنشاء قاعدة بيانات postgres في Looker

في القسم التالي، ستنفّذ عملية SSH في الجهاز الظاهري لقاعدة بيانات postgres باستخدام Cloud Shell.

داخل Cloud Shell، نفِّذ عملية ssh إلى مثيل قاعدة بيانات postgres**:**

 gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

داخل نظام التشغيل، حدِّد عنوان IP (ens4) لمثيل قاعدة بيانات postgres ودوِّنه:

ip a

مثال:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
    link/ether 42:01:c0:a8:0a:04 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 192.168.10.4/32 metric 100 scope global dynamic ens4
       valid_lft 66779sec preferred_lft 66779sec
    inet6 fe80::4001:c0ff:fea8:a04/64 scope link 
       valid_lft forever preferred_lft forever

داخل نظام التشغيل، سجِّل الدخول إلى postgresql:

sudo -u postgres psql postgres

داخل نظام التشغيل، أدخِل كلمة المرور في المربع:

\password postgres

داخل نظام التشغيل، اضبط كلمة المرور على postgres (أدخِل كلمة المرور نفسها مرتين):

postgres

مثال:

user@postgres-database:~$ sudo -u postgres psql postgres
\password postgres
psql (13.11 (Debian 13.11-0+deb11u1))
Type "help" for help.
postgres=# \password postgres
Enter new password for user "postgres": 
Enter it again: 

داخل نظام التشغيل، اخرج من postgres:

\q

مثال:

postgres=# \q
user@postgres-database:~$ 

في القسم التالي، ستُدرج عنوان IP الخاص بمثيل قاعدة بيانات postgres ‏ (192.168.10.4) والشبكة الفرعية المخصّصة للوكيل (10.10.10.0/24) في ملف pg_hba.conf ضمن الاتصالات المحلية IPv4.

sudo nano /etc/postgresql/15/main/pg_hba.conf

لقطة الشاشة أدناه هي التحديث المكتمل: eaff2ed6d27fa7cc.png

في القسم التالي، أزِل التعليق من postgresql.conf للاستماع إلى جميع عناوين IP "*" وفقًا للقطة الشاشة أدناه:

sudo nano /etc/postgresql/15/main/postgresql.conf

قبل:

65e0b1074dc48644.png

بعد:

14a0d1fa5455e23e.png

داخل نظام التشغيل، أعِد تشغيل خدمة postgresql:

sudo service postgresql restart

داخل نظام التشغيل، تحقَّق من أنّ حالة postgresql نشطة:

sudo service postgresql status

مثال:

داخل نظام التشغيل، تحقَّق من أنّ حالة postgresql نشطة:

user@postgres-database:/$ sudo service postgresql status
 postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
     Active: active (exited) since Mon 2024-09-02 12:10:10 UTC; 1min 46s ago
    Process: 20486 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 20486 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Sep 02 12:10:10 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 02 12:10:10 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

13. إنشاء قاعدة بيانات postgres

في القسم التالي، ستنشئ قاعدة بيانات postgres باسم postgres_looker ومخطط looker_schema المستخدَم للتحقّق من صحة اتصال Looker بالخادم المحلي.

داخل نظام التشغيل، سجِّل الدخول إلى postgres:

sudo -u postgres psql postgres

داخل نظام التشغيل، أنشئ قاعدة البيانات:

create database postgres_looker;

داخل نظام التشغيل، أدرِج قاعدة البيانات:

\l

داخل نظام التشغيل، أنشئ المستخدم postgres_looker باستخدام كلمة المرور postgreslooker:

create user postgres_looker with password 'postgreslooker';

داخل نظام التشغيل، اتّصِل بقاعدة البيانات:

\c postgres_looker;

داخل نظام التشغيل، أنشئ مخطط looker-schema واخرج إلى موجه Cloud Shell.

create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit

Exit from the OS, returning you to cloud shell:

\q

مثال:

user@postgres-database:/$ sudo -u postgres psql postgres
psql (15.8 (Debian 15.8-0+deb12u1))
Type "help" for help.

postgres=# create database postgres_looker;
CREATE DATABASE
postgres=# \l
                                                List of databases
      Name       |  Owner   | Encoding | Collate |  Ctype  | ICU Locale | Locale Provider |   Access privileges   
-----------------+----------+----------+---------+---------+------------+-----------------+-----------------------
 postgres        | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | 
 postgres_looker | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | 
 template0       | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | =c/postgres          +
                 |          |          |         |         |            |                 | postgres=CTc/postgres
 template1       | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | =c/postgres          +
                 |          |          |         |         |            |                 | postgres=CTc/postgres
(4 rows)

postgres=# create user postgres_looker with password 'postgreslooker';
CREATE ROLE
postgres=# \c postgres_looker;
You are now connected to database "postgres_looker" as user "postgres".
postgres_looker=# create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
CREATE SCHEMA
CREATE TABLE
postgres_looker-# \q

14. دمج Looker مع قاعدة بيانات Postgres

في القسم التالي، ستستخدم Looker Console لإنشاء ربط بقاعدة بيانات بمثيل قاعدة بيانات postgres المحلية.

انتقِل إلى ADMIN (المشرف) → DATABASE (قاعدة البيانات) → CONNECTIONS (عمليات الربط) → اختَر ADD CONNECTION (إضافة عملية ربط).

املأ تفاصيل الربط وفقًا للقطة الشاشة أدناه، ثم انقر على ربط.

5900fdf0b698cbfc.png

اكتمل إعداد عملية الربط

4817157fd3b1277e.png

15. التحقّق من إمكانية الاتصال بمنصة Looker

في القسم التالي، ستتعرّف على كيفية التحقّق من صحة اتصال Looker بقاعدة بيانات postgres في on-prem-vpc باستخدام إجراء "الاختبار" في Looker وTCPDUMP.

من Cloud Shell، سجِّل الدخول إلى قاعدة بيانات postgres إذا انتهت مهلة الجلسة.

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

من نظام التشغيل، أنشئ فلتر TCPDUMP باستخدام الشبكة الفرعية 10.10.10.0/24 التي تستخدم الخادم الوكيل فقط.

sudo tcpdump -i any net 10.10.10.0/24 -nn

انتقِل إلى "ربط البيانات" المشرف → قاعدة البيانات → عمليات الربط → قاعدة بيانات postgres → اختبار

بعد اختيار "اختبار"، سيربط Looker بقاعدة بيانات postgres كما هو موضّح أدناه:

774f9313ece41034.png

تَنظيم

حذف مكوّنات المختبر من نافذة Cloud Shell واحدة

gcloud compute service-attachments delete onpremdatabase1-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-hybrid-neg-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete producer-backend-svc --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy  --name=looker-psc-demo --global-firewall-policy -q

gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q

gcloud compute routers nats delete on-prem-nat --router=on-prem-cr --router-region=$region -q

gcloud compute network-endpoint-groups delete on-prem-hybrid-neg --zone=$zone -q

gcloud compute addresses delete hybrid-neg-lb-ip --region=$region -q

gcloud compute vpn-tunnels delete looker-psc-demo-tunnel0 looker-psc-demo-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=$region -q

gcloud compute vpn-gateways delete looker-psc-demo-vpn-gw on-prem-vpn-gw --region=$region -q

gcloud compute routers delete looker-psc-demo-cr on-prem-cr --region=$region -q

gcloud compute instances delete postgres-database --zone=$zone -q

gcloud compute addresses delete on-prem-database1-ip --region=$region -q

gcloud compute networks subnets delete database-subnet --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=on-prem-demo-policy  --name=on-prem-demo --global-firewall-policy -q

gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q

gcloud compute networks delete on-prem-demo -q

gcloud compute networks delete looker-psc-demo -q

16. تهانينا

تهانينا، لقد نجحت في إعداد الاتصال بقاعدة البيانات المحلية والتحقّق منه عبر شبكة HA-VPN باستخدام Looker Console المستندة إلى Private Service Connect.

لقد أنشأت البنية الأساسية للمنتِج، وتعرّفت على كيفية إنشاء مجموعة نقاط نهاية شبكة مختلطة (NEG) وخدمة منتِج ونقطة نهاية Looker PSC التي تتيح الاتصال بخدمة المنتج.

تعتقد Cosmopup أنّ الدروس التطبيقية حول الترميز رائعة!!

c911c127bffdee57.jpeg

ما هي الخطوات التالية؟

اطّلِع على بعض دروس الترميز التطبيقية هذه...

مزيد من المعلومات والفيديوهات

المستندات المرجعية