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

1. مقدمة

في هذا الدليل التعليمي حول الرموز البرمجية، ستُجري اتصالاً من جهة العميل بقاعدة بيانات postgres على الموقع باستخدام شبكة 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
  • إنشاء اتصال بقاعدة بيانات النشرات داخل الشركة من Looker باستخدام اتصال اختبار

المتطلبات

def88091b42bfe4d.png

2. ما الذي ستقوم ببنائه

ستنشئ شبكة أداة نشر، وهي Looker-psc-demo، لكي تتمكن من نشر جهاز موازنة حمل خادم وكيل tcp الداخلي ونظام NEG المختلط الذي يتم نشره كخدمة عبر Private Service Connect (PSC). لتوضيح قاعدة بيانات داخل المؤسسة، عليك نشر شبكة VPC داخل إصدار تجريبي ومتصلة بـ looker-psc-demo VPC باستخدام HA-VPN.

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

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

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

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

المكونات

الوصف

VPC (looker-psc-demo)

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

VPC (on-prem-demo)

سحابة VPC للوضع المخصّص

الشبكة الفرعية لـ PSC NAT

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

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

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

شبكة PSC NEG الفرعية

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

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

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

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

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

خدمة الخلفية

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

Cloud Router

  • تعتمد آلية NAT في السحابة الإلكترونية على أجهزة التوجيه المستنِدة إلى السحابة الإلكترونية لتقديم إمكانات مستوى التحكّم، ولكن ليس في إدارة جلسة BGP.
  • يُستخدم جهاز توجيه السحابة الإلكترونية لـ BGP والذي تم إنشاؤه لإنشاء بروتوكول HA-VPN بين psc-looker-demo وأجهزة VPC التابعة للشركة في مقر الشركة.

شبكة HA-VPN

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

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) في PSC:

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

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

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

داخل Cloud Shell، أنشئ مجموعة 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، عليك تحديث "مجموعة الشبكة الإعلانية المختلطة" (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) في وحدة التحكّم في حدود الجلسة إلى جميع المثيلات في الشبكة.

داخل 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، أضِف الواجهة الخلفية لمجموعة نقاط الوصول (NEG) إلى الخدمة الخلفية:

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

بعد ذلك، احصل على مرفق الخدمة المدرَج في عنوان URL الخاص برابط الخدمة selfLink، واحرص على تدوينه، بدءًا بالمشاريع لضبط نقطة نهاية 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. إنشاء اتصال نقطة نهاية PSC في Looker

في القسم التالي، ستربط "مرفق خدمة المنتجين" بخدمة Private Service Connect في Looker Core من خلال استخدام علامات –psc-service-attachment في Cloud Shell لنطاق واحد.

داخل Cloud Shell، أنشئ عملية ربط psc من خلال تعديل المَعلمات التالية لتتطابق مع بيئتك:

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

داخل 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، تحقّق من أنّ حالة اتصال مرفقات الخدمة هي "مقبول"، وعدِّلها باسم مثيل 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

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

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

Looker ← Looker مثيل ← التفاصيل

2d4684d722d31e4b.png

993cdaf748f4c030.png

إنشاء شبكة VPC داخل الشركة

شبكة VC

داخل 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" المستخدَم مع 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-database سيتم استخدامه لاختبار الاتصال بمنصة 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

للسماح لعمليات الشراء داخل التطبيق بالاتصال بمثيلات الأجهزة الافتراضية، أنشِئ قاعدة جدار حماية تعمل على:

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

داخل 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. الاتصال المختلَط

في القسم التالي، ستنشئ "جهاز توجيه السحابة الإلكترونية" الذي يمكّنك من تبادل المسارات ديناميكيًا بين السحابة الإلكترونية الخاصة الافتراضية (VPC) وشبكة التطبيقات المشابهة باستخدام بروتوكول بوابة الحدود (BGP).

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

في الخطوات التالية، ستعمل على نشر شبكة VPN الخاصة بجودة عالية بين شبكة VPC في Looker-psc-demo وسحابة VPC في الإصدار التجريبي لإثبات اتصال مجموعة الشبكة الافتراضية الخاصة (NEG) على موقع onprem.database1.com.

إنشاء بوابة VPN ذات التوفّر المزدوج لـ looker-psc-demo

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

في Cloud Shell، أنشئ بوابة VPN ذات التوفّر المرتفع:

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

يمكنك إنشاء شبكة VPN المخصصة للاستخدام من قلبك لاستخدامها في العرض التوضيحي الحالي.

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

في Cloud Shell، أنشئ بوابة VPN ذات التوفّر المرتفع:

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

التحقّق من إنشاء بوابة شبكة VPN ذات التوفّر المرتفع

باستخدام وحدة التحكّم، انتقِل إلى HYBRID CONNECTIVITY ← شبكة VPN ← 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 على كل بوابة شبكة 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 على كل مدخل شبكة VPN الخاص بشبكة HA.

إنشاء نفق شبكة 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

باستخدام وحدة التحكّم، انتقِل إلى "الاتصال المختلط" ← "شبكة VPN" ← "القنوات النفقية لشبكة 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 وتبادل المعلومات بين الشبكات لاستخدامها في الإصدار التجريبي

في 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

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

78ab590317919bf5.png

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

والآن بعد أن تم إنشاء أنفاق الشبكة الخاصة الافتراضية الخاصة (HA) وجلسات BGP، أصبح السلوك التلقائي لجهاز توجيه السحابة الإلكترونية هو الإعلان عن مسارات الشبكة الفرعية. الاطّلاع على المسارات التي تم تعلُّمها لـ looker-psc-demo

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

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

c11a11ed8b0491c8.png

التحقّق من أنّ المسارات التي تم تعلُّمها بواسطة سحابة VPC في مرحلة تجريبية داخل الشركة من خلال شبكة VPN عالية التوفّر

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

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

باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC ← شبكات VPC ← الإصدار التجريبي ← المسارات ← منطقة ← عرض

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-database:

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_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 على الموقع.

انتقِل إلى المشرف ← قاعدة البيانات ← "الروابط" ← إضافة اتصال.

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

5900fdf0b698cbfc.png

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

4817157fd3b1277e.png

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

في القسم التالي، ستتعرّف على كيفية التحقّق من صحة اتصال Looker بقاعدة بيانات postgres-data في إصدار VPC الخاص بالعمل باستخدام "test" من Looker. وTCPDUMP.

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

في 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

انتقِل إلى "اتصال البيانات" ADMIN (الإدارة) → DATABASE (قاعدة البيانات) → CONNECTIONS (عمليات الربط) → postgres-database → Test (اختبار).

بعد اختيار "الاختبار"، سيتم ربط 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

الخطوات التالية

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

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

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