1. مقدمة
في هذا الدليل التعليمي حول الرموز البرمجية، ستُجري اتصالاً من جهة العميل إلى قاعدة بيانات postgres على الموقع باستخدام شبكة VPN عالية السرعة باستخدام موازن تحميل داخلي للطلبات يعمل كوكيل وبروتوكول tcp ومجموعة نقاط نهاية لشبكة مختلطة يتمّ استدعاؤها من Looker PSC بصفتها مستهلك خدمة.
Private Service Connect هي إحدى ميزات شبكة Google Cloud التي تتيح للمستهلكين الوصول إلى الخدمات المُدارة بشكل خاص من داخل شبكة VPC. وبالمثل، تسمح هذه الميزة لمطوّري الخدمات المُدارة باستضافة هذه الخدمات في شبكات VPC منفصلة خاصة بهم وتوفير اتصال خاص للمستهلكين. على سبيل المثال، عند استخدام Private Service Connect للوصول إلى Looker، تكون أنت مستخدِم الخدمة وتكون Google مقدّم الخدمة، كما هو موضّح في الشكل 1.
الشكل 1.
يتيح الوصول من جهة الجنوب، المعروف أيضًا باسم PSC العكسي، للمستهلك إنشاء خدمة منشورة بصفته منتجًا للسماح لخدمة Looker بالوصول إلى نقاط النهاية على الموقع، في VPC، إلى الخدمات المُدارة والهجينة. يمكن نشر اتصالات الاتجاه الجنوبي في أي منطقة، بغض النظر عن مكان نشر Looker PSC، كما هو موضّح في الشكل 2.
الشكل 2.
ما ستتعرّف عليه
- متطلبات الشبكة
- إنشاء خدمة منتج في Private Service Connect
- إنشاء نقطة نهاية Private Service Connect في Looker
- إنشاء اتصال بقاعدة بيانات postgres على الموقع من Looker باستخدام ميزة "اختبار الاتصال"
المتطلبات
- مشروع Google Cloud الذي يتضمّن أذونات المالك
- مثيل Looker PSC الحالي
2. ما ستُنشئه
ستُنشئ شبكة مُنتج، وهي looker-psc-demo، لنشر موازن الحمولة الوكيل الداخلي لبروتوكول النقل المتعدّد (TCP) وNEG المختلط المنشور كخدمة من خلال Private Service Connect (PSC). لعرض قاعدة بيانات على الموقع، عليك نشر شبكة VPC على الموقع demo متصلة بشبكة VPC looker-psc-demo باستخدام شبكة VPN ذات التوفّر التلقائي.
عليك تنفيذ الإجراءات التالية للتحقّق من إمكانية الوصول إلى خدمة "المنتِج":
- إنشاء نقطة نهاية PSC في Looker مرتبطة بمرفقات خدمة الإنتاج
- استخدام Looker Console لإجراء عملية التحقّق من الاتصال بقاعدة بيانات postgres على الموقع
3- متطلبات الشبكة
في ما يلي تفاصيل متطلبات الشبكة لشبكة "المنتج"، والمستهلك في هذا الدليل التعليمي هو مثيل Looker PSC.
المكونات | الوصف |
VPC (looker-psc-demo) | شبكة VPC في الوضع المخصّص |
VPC (on-prem-demo) | شبكة VPC في الوضع المخصّص |
الشبكة الفرعية لـ PSC NAT | تتم ترجمة الحِزم الواردة من شبكة VPC للمستهلك باستخدام ترجمة عنوان الشبكة المصدر (SNAT) لكي يتم تحويل عناوين IP المصدر الأصلية إلى عناوين IP مصدر من الشبكة الفرعية لترجمة عنوان الشبكة في شبكة VPC الخاصة بالمنتج. |
الشبكة الفرعية لقاعدة إعادة توجيه PSC | يُستخدَم لتخصيص عنوان IP لجهاز موازنة حمل الخادم الوكيل الداخلي الإقليمي لبروتوكول TCP. |
الشبكة الفرعية لمجموعة نقاط نهاية شبكة اتصال الخدمة الخاصة | تُستخدَم لتخصيص عنوان IP لمجموعة نقاط نهاية الشبكة. |
الشبكة الفرعية للوكيل فقط | يتم تعيين عنوان IP داخلي لكل من الخوادم الوكيلة لجهاز موازنة الحمل. الحِزم المُرسَلة من خادم وكيل إلى جهاز افتراضي في الخلفية أو نقطة نهاية لها عنوان IP مصدر من الشبكة الفرعية للخادم الوكيل فقط. |
مجموعة نقاط نهاية الشبكة المختلطة | يتم التعامل مع الخدمات على الموقع وخدمات السحابة الإلكترونية الأخرى مثل أي خلفية أخرى لميزة "توازن تحميل السحابة". يكمن الاختلاف الرئيسي في أنّك تستخدم NEG للاتصال المختلط لضبط نقاط نهاية الخلفيات هذه. يجب أن تكون نقاط النهاية مجموعات صالحة من عنوان IP وعنوان المنفذ يمكن لموازن الحمولة الوصول إليها باستخدام منتجات الاتصال المختلط، مثل Cloud VPN أو Cloud Interconnect. |
خدمة الخلفية | تعمل خدمة الخلفية كجسر بين جهاز موازنة الحمل وموارد الخلفية. في البرنامج التعليمي، يتم ربط خدمة الخلفية بمجموعة نقاط نهاية الشبكة المختلطة. |
Cloud Router |
|
شبكة HA-VPN | شبكة VPN لتوفير إمكانية التوفّر الدائم بين شبكات Google Cloud VPC في هذه البنية، يمكنك ربط شبكتَي VPC في Google Cloud باستخدام بوابة شبكة VPN ذات التوفّر التلقائي في كل شبكة. يمكن أن تكون شبكات VPC في المنطقة نفسها أو في مناطق متعدّدة. |
Cloud NAT | تُستخدَم من قِبل "شبكة VPC التجريبية على الموقع" للخروج إلى الإنترنت. |
4. طوبولوجيا الدرس التطبيقي حول الترميز
5- الإعداد والمتطلبات
إعداد البيئة حسب السرعة التي تناسبك
- سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها واجهات برمجة تطبيقات Google. ويمكنك تعديلها في أي وقت.
- يكون معرّف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد ضبطه). تنشئ وحدة تحكّم Cloud Console سلسلة فريدة تلقائيًا، ولا يهمّك عادةً معرفة محتواها. في معظم مختبرات رموز البرامج، ستحتاج إلى الإشارة إلى معرّف المشروع (يُعرَف عادةً باسم
PROJECT_ID
). إذا لم يعجبك المعرّف الذي تم إنشاؤه، يمكنك إنشاء معرّف آخر عشوائي. يمكنك بدلاً من ذلك تجربة عنوانك الخاص لمعرفة ما إذا كان متاحًا. ولا يمكن تغييره بعد هذه الخطوة ويبقى ساريًا طوال مدة المشروع. - يُرجى العِلم أنّ هناك قيمة ثالثة، وهي رقم المشروع، تستخدمها بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات عن كلّ من هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تتطلّب المشاركة في هذا الدليل التعليمي البرمجي أي تكلفة، أو قد تتطلّب تكلفة بسيطة. لإيقاف الموارد لتجنُّب تحصيل رسوم بعد انتهاء هذا الدليل التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. المستخدمون الجدد في Google Cloud مؤهّلون للاستفادة من برنامج الفترة التجريبية المجانية التي تبلغ قيمتها 300 دولار أمريكي.
بدء Cloud Shell
على الرغم من أنّه يمكن تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدليل التعليمي Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.
من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة:
من المفترض ألا تستغرق عملية توفير البيئة والاتصال بها سوى بضع لحظات. عند الانتهاء، من المفترض أن يظهر لك ما يلي:
يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. ويقدّم هذا الدليل دليلاً منزليًا دائمًا بسعة 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، أنشئ شبكة فرعية لعنوان IP الخاص بخدمة Private Service Connect (NAT):
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، أنشئ 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، أضِف الخلفية لـ Hybrid 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 الخاص برابط الخدمة، واحرص على تدوينه، بدءًا من المشاريع لضبط نقطة نهاية 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 → الخدمات المنشورة
9. إنشاء اتصال بنقطة نهاية PSC في Looker
في القسم التالي، ستربط "مرفق خدمة المنتجين" بخدمة Private Service Connect في Looker Core من خلال استخدام علامات –psc-service-attachment في Cloud Shell لنطاق واحد.
داخل Cloud Shell، أنشئ عملية ربط psc من خلال تعديل المَعلمات التالية لتتطابق مع بيئتك:
- INSTANCE_NAME: اسم مثيل Looker (Google Cloud core)
- 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 → التفاصيل
إنشاء شبكة 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
إنشاء "راوتر السحابة الإلكترونية" لشبكة 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 ليتم استخدامه لاختبار إمكانية الاتصال بخدمة 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 لإعادة توجيه بروتوكول 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. الاتصال المختلط
في القسم التالي، ستنشئ "راوتر في السحابة الإلكترونية" يتيح لك تبادل المسارات ديناميكيًا بين "السحابة الإلكترونية الخاصة الافتراضية" (VPC) والشبكة المشابهة باستخدام بروتوكول Border Gateway Protocol (BGP).
يمكن لتطبيق Cloud Router إعداد جلسة BGP عبر نفق Cloud VPN لربط شبكاتك. ويتعرّف تلقائيًا على نطاقات عناوين IP الجديدة للشبكة الفرعية ويعلن عنها لشبكة النظير.
في الخطوات التالية، سيتم نشر شبكة VPN ذات التوفّر المرتفع بين فضاءَي البريد الإلكتروني looker-psc-demo وon-prem-demo لإثبات إمكانية اتصال 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 ذات التوفّر المرتفع
باستخدام وحدة التحكّم، انتقِل إلى "الاتصال الهجين" ← شبكة VPN ← بوابات شبكة VPN في السحابة الإلكترونية.
أنشئ "جهاز توجيه السحابة الإلكترونية" لـ looker-psc-demo.
داخل Cloud Shell، أنشئ "راوتر السحابة":
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، أنشئ النفق tunnel1:
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 لتوفير إمكانية التوفّر العالية.
إنشاء نفق شبكة 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، أنشئ النفق tunnel1:
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 في السحابة الإلكترونية".
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.
التحقّق من صحة المسارات التي تم تعلّمها في looker-psc-demo عبر شبكة VPN ذات التوفّر المزدوج
بعد إنشاء نفقَي شبكة VPN للاحتفاظ بالعملية في حالات الطوارئ وجلسات BGP، يكون السلوك التلقائي لـ "Cloud Router" هو عرض مسارات الشبكة الفرعية. اطّلِع على المسارات التي تم تعلّمها في looker-psc-demo.
باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC → شبكات VPC → looker-psc-demo → ROUTES → REGION → VIEW.
لاحظ أنّ looker-psc-demo قد تعلّم شبكة فرعية لقاعدة البيانات 192.168.10.0/28 من VPC على-الموقع-التجريبي.
التحقّق من أنّ شبكة VPC التجريبية على الموقع تعلمت المسارات عبر شبكة VPN ذات التوفّر التلقائي
بما أنّ السلوك التلقائي لـ "راوتر السحابة الإلكترونية" هو عرض جميع الشبكات الفرعية، يتم عرض الشبكة الفرعية للوكيل فقط عبر BGP. ستستخدم NEG المختلطة الشبكة الفرعية للوكيل فقط كعنوان المصدر عند التواصل مع الخادم onprem.database1.com.
لاحظ أنّ on-prem-demo قد تعلّم شبكة فرعية للوكيل فقط 10.10.10.0/24 من looker-psc-demo.
باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC → شبكات VPC → on-prem-demo → ROUTES → REGION → VIEW.
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
في ما يلي لقطة شاشة للتعديل المكتمل:
في القسم التالي، أزِل التعليقات من ملف postgresql.conf للاستماع إلى جميع عناوين IP التي تبدأ بـ "*" وفقًا للّقطة الشاشة أدناه:
sudo nano /etc/postgresql/15/main/postgresql.conf
قبل:
بعد:
داخل نظام التشغيل، أعِد تشغيل خدمة 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 على الموقع.
انتقِل إلى المشرف → قاعدة البيانات → عمليات الربط → اختَر إضافة عملية ربط.
املأ تفاصيل الاتصال وفقًا لقطة الشاشة أدناه، ثم انقر على ربط.
اكتمل إعداد عملية الربط.
15. التحقّق من إمكانية الاتصال بمنصة Looker
في القسم التالي، ستتعرّف على كيفية التحقّق من اتصال Looker بقاعدة بيانات postgres في شبكة 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
انتقِل إلى "اتصال البيانات" ADMIN (الإدارة) → DATABASE (قاعدة البيانات) → CONNECTIONS (عمليات الربط) → postgres-database → Test (اختبار).
بعد اختيار "الاختبار"، سيتصل Looker بقاعدة بيانات postgres كما هو موضّح أدناه:
تَنظيم
حذف مكوّنات المختبر من محطة طرفية واحدة في 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. تهانينا
مبروك، لقد نجحت في ضبط إمكانية الاتصال بقاعدة البيانات على الموقع باستخدام شبكة VPN ذات التوفّر العالي (HA-VPN) والتحقق منها باستخدام Looker Console المستندة إلى Private Service Connect.
لقد أنشأت البنية الأساسية للمنتج، وتعرّفت على كيفية إنشاء نقطة نهاية NEG مختلطة ونقطة نهاية PSC لخدمة Producer وLooker التي تتيح الاتصال بخدمة Producer.
يعتقد Cosmopup أنّ الدروس التطبيقية حول الترميز رائعة.
الخطوة التالية
اطّلِع على بعض هذه الدروس التطبيقية حول الترميز...
- استخدام Private Service Connect لنشر الخدمات واستخدامها
- الاتصال بالخدمات المستضافة على الموقع باستخدام "الشبكات المختلطة" باستخدام Private Service Connect وجهاز موازنة تحميل وكيل TCP داخلي
- الوصول إلى جميع مجموعات رموز Private Service Connect المنشورة