1. مقدمة
توفّر Looker (المنتج الأساسي من Google Cloud) عملية مبسطة وسلسة لإدارة مثيل Looker وإعداده وتوفيره من Google Cloud Console. يمكن أيضًا تنفيذ بعض مهام إدارة المثيلات من وحدة التحكّم.
تتوفّر ثلاثة إعدادات للشبكة في مثيلات Looker (المنتج الأساسي من Google Cloud):
- عام: يستخدم اتصال الشبكة عنوان IP خارجيًا يمكن الوصول إليه من الإنترنت.
- خاص: يستخدم اتصال الشبكة عنوان IP داخليًا مستضافًا على Google لسحابة إلكترونية خاصة افتراضية (VPC).
- العامة والخاصة: يستخدم اتصال الشبكة عنوان IP عامًا وعنوان IP خاصًا، حيث سيتم توجيه الزيارات الواردة من خلال عنوان IP العام، وسيتم توجيه الزيارات الصادرة من خلال عنوان IP الخاص.
في هذا البرنامج التعليمي، ستنشئ شبكة خاصة شاملة ومتكاملة لدعم اتصال Looker بشبكة VPC محلية عبر شبكة HA VPN يمكن تكرارها لتلبية متطلباتك بشأن الاتصال المتعدد السحابات والاتصال المحلي.
يتيح Looker (المنتج الأساسي من Google Cloud) استخدام عناوين IP الخاصة للمثيلات التي تستوفي المعايير التالية:
- يجب أن تكون إصدارات المثيل Enterprise أو Embed.
ما ستنشئه
في هذا البرنامج التعليمي، ستنشئ عملية نشر شاملة لشبكة Looker خاصة في شبكة VPC مستقلة تتضمّن اتصالاً مختلطًا بالسحابة الإلكترونية المتعددة والبيئة المحلية.
ستُعدّ شبكة سحابة VPC باسم on-prem-vpc لتمثيل بيئة محلية. في عملية النشر، لن تكون شبكة VPC المحلية متاحة، بل سيتم استخدام الشبكات المختلطة للوصول إلى مركز البيانات المحلي أو مقدّم خدمات السحابة الإلكترونية.
في ما يلي الخطوات الرئيسية للبرنامج التعليمي
- إنشاء شبكة VPC مستقلة في us-central1
- تخصيص شبكة IP فرعية لخدمة Private Service Access
- نشر نسخة Looker في شبكة VPC المستقلة
- إنشاء شبكة VPC محلية وشبكة مختلطة
- الإعلان عن نطاق عناوين IP الخاص بـ Looker والتحقّق منه عبر بروتوكول BGP
- دمج عملية تبادل البيانات بين Looker وPostgresql والتحقّق من صحتها
Figure1

أهداف الدورة التعليمية
- كيفية إنشاء شبكة VPC والشبكات المختلطة المرتبطة بها
- كيفية نشر Looker في شبكة VPC مستقلة
- كيفية إنشاء شبكة VPC محلية وشبكة مختلطة مرتبطة بها
- ربط شبكة VPC المحلية بشبكة VPS الخاصة بخدمة "إحصاءات Google" من خلال HA VPN
- كيفية الإعلان عن الشبكات الفرعية في Looker عبر الشبكات المختلطة
- كيفية مراقبة البنية الأساسية للشبكات المختلطة
- كيفية دمج قاعدة بيانات Postgresql مع Looker Cloud Core
المتطلبات
- مشروع Google Cloud
أذونات "إدارة الهوية وإمكانية الوصول"
2. قبل البدء
تعديل المشروع ليتوافق مع البرنامج التعليمي
يستفيد هذا البرنامج التعليمي من $variables للمساعدة في تنفيذ عملية إعداد gcloud في Cloud Shell.
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3- إعداد سحابة VPC
إنشاء analytics-vpc
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom
إنشاء on-prem-vpc
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom
إنشاء الشبكة الفرعية لقاعدة بيانات Postgresql
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks subnets create database-subnet-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-vpc --region=us-central1
إعداد Cloud Router وNAT
يتم استخدام Cloud NAT في البرنامج التعليمي لتثبيت حزمة البرامج لأنّ مثيل الجهاز الافتراضي لقاعدة البيانات لا يتضمّن عنوان IP خارجيًا.
داخل Cloud Shell، أنشئ Cloud Router.
gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1
داخل Cloud Shell، أنشئ بوابة NAT.
gcloud compute routers nats create on-prem-nat-us-central1 --router=on-prem-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
إنشاء مثيل اختبار قاعدة البيانات
أنشئ مثيلاً لقاعدة بيانات Postgres سيتم استخدامه لاختبار إمكانية الاتصال بـ Looker والتحقّق منها.
أنشئ المثيل داخل Cloud Shell.
gcloud compute instances create postgres-database \
--project=$projectid \
--zone=us-central1-a \
--machine-type=e2-medium \
--subnet=database-subnet-us-central1 \
--no-address \
--image=projects/ubuntu-os-cloud/global/images/ubuntu-2304-lunar-amd64-v20230621 \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt -y install postgresql postgresql-client postgresql-contrib -y"
إنشاء قواعد جدار الحماية
للسماح لميزة "الوصول إلى الأجهزة الافتراضية عبر الإنترنت" بالاتصال بأجهزة VM الافتراضية، أنشئ قاعدة جدار حماية تتضمّن ما يلي:
- ينطبق على جميع مثيلات الأجهزة الافتراضية التي تريد إتاحتها باستخدام IAP.
- تسمح هذه القاعدة بحركة البيانات الواردة من نطاق عناوين IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي تستخدمها خدمة IAP لإعادة توجيه بروتوكول TCP.
من Cloud Shell
gcloud compute firewall-rules create on-prem-ssh \
--network on-prem-vpc --allow tcp:22 --source-ranges=35.235.240.0/20
4. Private Service Access
الوصول الخاص إلى الخدمات هو اتصال خاص بين شبكة السحابة الإلكترونية الافتراضية (VPC) وشبكة تملكها Google أو جهة خارجية. يُطلق على Google أو الجهة الخارجية أو الجهات التي تقدّم الخدمات أيضًا اسم "مقدّمو الخدمات". Looker Cloud Core هي خدمة منتِجة.
يتيح الاتصال الخاص لآلات VPC الافتراضية والخدمات التي تصل إليها التواصل حصريًا باستخدام عناوين IP داخلية.
بشكل عام، لاستخدام ميزة "الوصول إلى الخدمات الخاصة"، عليك تخصيص نطاق عناوين IP (كتلة CIDR) في شبكة السحابة الإلكترونية الخاصة الافتراضية (VPC)، ثم إنشاء اتصال خاص بمقدّم الخدمة.
تخصيص نطاق عناوين IP للخدمات
قبل إنشاء اتصال خاص، يجب تخصيص نطاق عناوين IPv4 لاستخدامه من قِبل شبكة السحابة الإلكترونية الخاصة الافتراضية لمقدّم الخدمة. يضمن ذلك عدم حدوث تعارض في عناوين IP بين شبكة VPC وشبكة مقدّم الخدمة.
عند تخصيص نطاق في شبكة VPC، يكون هذا النطاق غير مؤهَّل للشبكات الفرعية (النطاقات الأساسية والثانوية) ووجهات المسارات الثابتة المخصّصة.
لا تتوفّر إمكانية استخدام نطاقات عناوين IPv6 مع ميزة "الوصول الخاص إلى الخدمات".
فعِّل Service Networking API لمشروعك في Google Cloud Console. عند تفعيل واجهة برمجة التطبيقات، قد تحتاج إلى إعادة تحميل صفحة وحدة التحكّم للتأكّد من أنّ واجهة برمجة التطبيقات قد تم تفعيلها.
إنشاء عملية تخصيص عنوان IP
لتحديد نطاق عناوين وطول بادئة (قناع شبكة فرعية)، استخدِم علامتَي العناوين وطول البادئة. على سبيل المثال، لتخصيص حظر CIDR 192.168.0.0/22، حدِّد 192.168.0.0 للعنوان و22 لطول البادئة.
داخل Cloud Shell، أنشئ عملية تخصيص عنوان IP لـ Looker.
gcloud compute addresses create psa-range-looker \
--global \
--purpose=VPC_PEERING \
--addresses=192.168.0.0 \
--prefix-length=22 \
--description="psa range for looker" \
--network=analytics-vpc
في Cloud Shell، تحقَّق من عملية تخصيص عنوان IP.
gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
مثال:
userl@cloudshell$ gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
NAME: psa-range-looker
ADDRESS/RANGE: 192.168.0.0/22
TYPE: INTERNAL
PURPOSE: VPC_PEERING
NETWORK: analytics-vpc
REGION:
SUBNET:
STATUS: RESERVED
إنشاء اتصال خاص
بعد إنشاء نطاق مخصّص، يمكنك إنشاء اتصال خاص بمقدّم خدمة، وهو Looker Cloud Core. يُنشئ الاتصال الخاص اتصال نظير شبكة VPC بين شبكة VPC وشبكة مقدّم الخدمة بعد إنشاء مثيل Looker.
الاتصالات الخاصة هي علاقة فردية بين شبكة VPC ومقدّم خدمة. إذا كان مقدّم خدمة واحد يقدّم خدمات متعددة، لن تحتاج إلا إلى اتصال خاص واحد لجميع خدمات مقدّم الخدمة.
في حال الربط بالعديد من منتجي الخدمات، استخدِم عملية تخصيص فريدة لكل منتج خدمة. تساعدك هذه الممارسة في إدارة إعدادات الشبكة، مثل المسارات وقواعد جدار الحماية، لكل منتج خدمة.
داخل Cloud Shell، أنشئ اتصالاً خاصًا، واحتفِظ باسم العملية.
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
مثال:
user@cloudshell$ gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.
داخل Cloud Shell، تحقَّق ممّا إذا كانت العملية ناجحة، واستبدِل OPERATION_NAME بالاسم الذي تم إنشاؤه في الخطوة السابقة.
gcloud services vpc-peerings operations describe \
--name=OPERATION_NAME
مثال:
user@cloudshell$ gcloud services vpc-peerings operations describe \
--name=operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.
5- إنشاء مثيل Looker (المنتج الأساسي من Google Cloud)
قبل البدء
فعِّل Looker API لمشروعك في Google Cloud Console. عند تفعيل واجهة برمجة التطبيقات، قد تحتاج إلى إعادة تحميل صفحة وحدة التحكّم للتأكّد من أنّ واجهة برمجة التطبيقات قد تم تفعيلها.
إعداد عميل OAuth للمصادقة والوصول إلى المثيل
في القسم التالي، عليك استخدام معرّف عميل OAuth والرمز السري لإنشاء مثيل Looker.
لا يُشترط توفير مصادر JavaScript معتمَدة ومعرّفات موارد منتظمة (URI) لإعادة التوجيه.

داخل Cloud Console، أنشئ مثيلاً استنادًا إلى لقطات الشاشة المقدَّمة.
انتقِل إلى LOOKER → إنشاء مثيل
املأ معرّف عميل OAuth وسرّه اللذين تم إنشاؤهما سابقًا.



انقر على إنشاء.
أثناء إنشاء الجهاز الافتراضي، ستتم إعادة توجيهك إلى صفحة الأجهزة الافتراضية في وحدة التحكّم. قد تحتاج إلى إعادة تحميل الصفحة للاطّلاع على حالة مثيلك الجديد. يمكنك أيضًا الاطّلاع على نشاط إنشاء الجهاز الظاهري من خلال النقر على رمز الإشعارات في قائمة "وحدة تحكّم Google Cloud". أثناء إنشاء مثيلك، سيتم وضع رمز تحميل حول رمز الإشعارات في قائمة Google Cloud Console.
بعد إنشاء مثيل Looker، يتم إنشاء عنوان URL للمثيل. دوِّن عنوان URL.

6. تعديل معرّف عميل OAuth 2.0
في القسم التالي، عليك تعديل معرّف عميل OAuth الذي تم إنشاؤه سابقًا معرّف الموارد المنتظم (URI) المُعتمَد لإعادة التوجيه من خلال إضافة /oauth2callback إلى عنوان URL الخاص بالمثيل.
بعد اكتمال العملية، يمكنك استخدام عنوان URL الخاص بالنسخة لتسجيل الدخول إلى واجهة مستخدم Looker.
في Cloud Console، انتقِل إلى واجهات برمجة التطبيقات والخدمات (APIs & SERVICES) → بيانات الاعتماد (CREDENTIALS).
اختَر معرّف عميل OAuth 2.0 وعدِّل عنوان URL للنسخة، كما هو موضّح في المثال أدناه:

7. التحقّق من إذن الوصول إلى Looker
في Cloud Console، انتقِل إلى Looker واختَر عنوان URL لنسختك الذي سيفتح واجهة مستخدم Looker.

بعد إطلاق Looker Cloud Core، ستظهر لك الصفحة المقصودة كما هو موضّح في لقطة الشاشة أدناه لتأكيد إمكانية الوصول إلى الخدمة.

8. الاتصال المختلط
في القسم التالي، ستنشئ Cloud Router يتيح لك تبادل المسارات بشكل ديناميكي بين شبكتك الخاصة الافتراضية (VPC) وشبكة النظراء باستخدام بروتوكول Border Gateway Protocol (BGP).
يمكن لخدمة Cloud Router إعداد جلسة BGP عبر نفق Cloud VPN لربط شبكاتك. يتعرّف تلقائيًا على نطاقات عناوين IP الجديدة للشبكة الفرعية ويُعلن عنها لشبكة النظراء.
في هذا البرنامج التعليمي، ستنشئ شبكة HA VPN بين analytics-vpc وon-prem-vpc لتوضيح الاتصال الخاص بخدمة Looker.
أنشئ HA VPN GW لشبكة analytics-vpc
عند إنشاء كلّ بوابة، يتمّ تخصيص عنوانَي IPv4 خارجيَّين تلقائيًا، عنوان واحد لكلّ واجهة بوابة. دوِّن عناوين IP هذه لاستخدامها لاحقًا في خطوات الإعداد.
في Cloud Shell، أنشئ HA VPN GW
gcloud compute vpn-gateways create analytics-vpn-gw \
--network=analytics-vpc\
--region=us-central1
أنشئ HA VPN GW لـ on-prem-vpc
عند إنشاء كلّ بوابة، يتمّ تخصيص عنوانَي IPv4 خارجيَّين تلقائيًا، عنوان واحد لكلّ واجهة بوابة. دوِّن عناوين IP هذه لاستخدامها لاحقًا في خطوات الإعداد.
في Cloud Shell، أنشئ HA VPN GW.
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
التحقّق من صحة إنشاء بوابة HA VPN
باستخدام وحدة التحكّم، انتقِل إلى "الاتصال المختلط" (HYBRID CONNECTIVITY) → "الشبكة الافتراضية الخاصة" (VPN) → "بوابات الشبكة الافتراضية الخاصة على Cloud" (CLOUD VPN GATEWAYS).

إنشاء Cloud Router لشبكة analytics-vpc
داخل Cloud Shell، أنشئ جهاز توجيه Cloud Router يقع في us-central1
gcloud compute routers create analytics-cr-us-central1 \
--region=us-central1 \
--network=analytics-vpc\
--asn=65001
إنشاء Cloud Router لشبكة VPC المحلية
داخل Cloud Shell، أنشئ جهاز توجيه Cloud Router يقع في us-central1
gcloud compute routers create on-prem-cr-us-central1 \
--region=us-central1 \
--network=on-prem-vpc \
--asn=65002
إنشاء أنفاق VPN لشبكة analytics-vpc
ستنشئ نفقَي VPN على كل بوابة HA VPN.
إنشاء اتصال نفقي بشبكة VPN0
داخل Cloud Shell، أنشئ tunnel0:
gcloud compute vpn-tunnels create analytics-vpc-tunnel0 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router analytics-cr-us-central1 \
--vpn-gateway analytics-vpn-gw \
--interface 0
إنشاء اتصال نفقي بشبكة VPN1
داخل Cloud Shell، أنشئ النفق 1:
gcloud compute vpn-tunnels create analytics-vpc-tunnel1 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router analytics-cr-us-central1 \
--vpn-gateway analytics-vpn-gw \
--interface 1
إنشاء أنفاق VPN لشبكة VPC المحلية
ستنشئ نفقَي VPN على كل بوابة HA VPN.
إنشاء اتصال نفقي بشبكة VPN0
داخل Cloud Shell، أنشئ tunnel0:
gcloud compute vpn-tunnels create on-prem-tunnel0 \
--peer-gcp-gateway analytics-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-prem-cr-us-central1 \
--vpn-gateway on-prem-vpn-gw \
--interface 0
إنشاء اتصال نفقي بشبكة VPN1
داخل Cloud Shell، أنشئ النفق 1:
gcloud compute vpn-tunnels create on-prem-tunnel1 \
--peer-gcp-gateway analytics-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-prem-cr-us-central1 \
--vpn-gateway on-prem-vpn-gw \
--interface 1
التحقّق من صحة إنشاء اتصال نفقي بشبكة VPN
باستخدام وحدة التحكّم، انتقِل إلى HYBRID CONNECTIVITY (الاتصال المختلط) → VPN → CLOUD VPN TUNNELS (أنفاق شبكة VPN على السحابة الإلكترونية).

9- إنشاء أجهزة BGP مجاورة
إنشاء جلسات BGP
في هذا القسم، يمكنك ضبط إعدادات واجهات Cloud Router ونظراء BGP.
إنشاء واجهة BGP وتبادل معلومات بين الشبكات لشبكة analytics-vpc
داخل Cloud Shell، أنشئ واجهة BGP:
gcloud compute routers add-interface analytics-cr-us-central1 \
--interface-name if-tunnel0-to-onprem \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel analytics-vpc-tunnel0 \
--region us-central1
داخل Cloud Shell، أنشئ جهاز BGP نظيرًا:
gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onprem \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region us-central1
داخل Cloud Shell، أنشئ واجهة BGP:
gcloud compute routers add-interface analytics-cr-us-central1 \
--interface-name if-tunnel1-to-onprem \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel analytics-vpc-tunnel1 \
--region us-central1
داخل Cloud Shell، أنشئ جهاز BGP نظيرًا:
gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
--peer-name bgp-on-premises-tunnel1 \
--interface if-tunnel2-to-onprem \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region us-central1
إنشاء واجهة BGP وتبادل معلومات بين الشبكات لشبكة VPC المحلية
داخل Cloud Shell، أنشئ واجهة BGP:
gcloud compute routers add-interface on-prem-cr-us-central1 \
--interface-name if-tunnel0-to-analytics-vpc \
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel0 \
--region us-central1
داخل Cloud Shell، أنشئ جهاز BGP نظيرًا:
gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
--peer-name bgp-analytics-vpc-tunnel0 \
--interface if-tunnel1-to-analytics-vpc \
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region us-central1
داخل Cloud Shell، أنشئ واجهة BGP:
gcloud compute routers add-interface on-prem-cr-us-central1 \
--interface-name if-tunnel1-to-analytics-vpc \
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel1 \
--region us-central1
داخل Cloud Shell، أنشئ جهاز BGP نظيرًا:
gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
--peer-name bgp-analytics-vpc-tunnel1\
--interface if-tunnel2-to-analytics-vpc \
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region us-central1
انتقِل إلى الاتصال المختلط (Hybrid CONNECTIVITY) → شبكة VPN لعرض تفاصيل الاتصال النفقي بشبكة VPN.

التحقّق من صحة المسارات التي تم التعرّف عليها في VPC للإحصاءات عبر شبكة HA VPN
بعد إنشاء أنفاق HA VPN وجلسات BGP، يتم استخلاص المسارات من on-prem-vpc من analytics-vpc. باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC → شبكات VPC → analytics-vpc → مسارات → المنطقة → us-central1 → عرض
لاحظ أنّ analytics-vpc قد تعلّم مسارات من on-prem-vpc database-subnet-us-central1 172.16.10.0/27

تأكَّد من أنّ شبكة VPC المحلية لم تتعرّف على مسارات عبر HA VPN.
لا تحتوي analytics-vpc على شبكة فرعية، وبالتالي لن يعلن Cloud Router عن أي شبكات فرعية إلى on-prem-vpc . باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC → شبكات VPC → on-prem-vpc → طرق التوجيه → المنطقة → us-central1 → عرض

10. الإعلان عن الشبكة الفرعية Looker على الشبكة المحلية
لا يتم الإعلان تلقائيًا عن الشبكة الفرعية لخدمة الوصول الخاص (PSA) في Looker من خلال موجّه السحابة analytics-cr-us-central1 لأنّ الشبكة الفرعية مخصّصة لخدمة الوصول الخاص (PSA)، وليس لسحابة VPC.
عليك إنشاء إعلان مسار مخصّص من analytics-cr-central1 لشبكة PSA الفرعية 192.168.0.0/22 (psa-range-looker) سيتم الإعلان عنه للبيئة المحلية وستستخدمه أحمال العمل للوصول إلى Looker.
من وحدة التحكّم، انتقِل إلى الربط المختلط → أجهزة توجيه السحابة الإلكترونية → analytics-cr-us-central1، ثمّ اختَر تعديل.
في قسم "المسارات المُعلَن عنها"، اختَر الخيار إنشاء مسارات مخصّصة، وعدِّل الحقول استنادًا إلى المثال أدناه، ثم اختَر تم، وانقر على حفظ.

11. تأكَّد من أنّ شبكة VPC المحلية قد تعرّفت على الشبكة الفرعية في Looker
ستتمكّن شبكة on-prem-vpc الآن من الوصول إلى الشبكة الفرعية PSA في Looker لأنّه تم الإعلان عنها من analytics-cr-us-central1 كإعلان عن مسار مخصّص.
باستخدام وحدة التحكّم، انتقِل إلى شبكة السحابة الافتراضية الخاصة (VPC) → شبكات السحابة الافتراضية الخاصة (VPC) → on-prem-vpc → طرق التوجيه → المنطقة → us-central1 → عرض
لاحظ مسارات Looker المُعلن عنها من analytics-vpc:

12. التحقّق من صحة عملية تبادل المعلومات الحالية بين شبكات VPC
يتم الاتصال بين Looker Cloud Core وanalytics-vpc من خلال تبادل المعلومات بين شبكات VPC، ما يتيح تبادل المسارات المخصّصة التي يتم التعرّف عليها من خلال بروتوكول BGP. في البرنامج التعليمي، ستحتاج analytics-vpc إلى نشر المسارات التي تعلّمها on-prem-vpc إلى Looker. لتفعيل هذه الوظيفة، يتطلّب ربط شبكة VPC تعديلًا لتصدير المسارات المخصّصة.
التحقّق من صحة المسارات الحالية التي تم استيرادها وتصديرها
انتقِل إلى شبكة VPC (VPC NETWORK) → تبادل المعلومات بين شبكات VPC (VPC NETWORK PEERING) → servicenetworking-googleapis-com

توضّح لقطة الشاشة أدناه تفاصيل عملية استيراد analytics-vpc لـ psa-range-looker من شبكة VPC المتناظرة التي تديرها Google، أي servicesnetworking.

اختَر EXPORTED ROUTES، ولم يتم تصدير أي مسارات إلى شبكة VPC المتصلة لأنّ 1) لم يتم إعداد الشبكات الفرعية في analytics-vpc 2) لم يتم اختيار "تصدير المسارات المخصّصة"

13. تعديل ميزة "تبادل المعلومات بين شبكات VPC"
انتقِل إلى شبكة السحابة الافتراضية الخاصة (VPC) → ربط شبكة السحابة الافتراضية الخاصة (VPC) → servicenetworking-googleapis-com → تعديل
انقر على تصدير المسارات المخصّصة → حفظ

14. التحقّق من عملية تبادل المعلومات بين شبكات VPC المعدَّلة
التحقّق من صحة المسارات التي تم تصديرها
انتقِل إلى شبكة VPC (VPC NETWORK) → تبادل المعلومات بين شبكات VPC (VPC NETWORK PEERING) → servicenetworking-googleapis-com
يؤدي اختيار "المسارات التي تم تصديرها" إلى الكشف عن أنّه تم تصدير مسارات شبكة VPC المحلية (شبكة قاعدة البيانات الفرعية 172.16.10.0/27) إلى شبكة VPC المتصلة التي تستضيف Looker من خلال analytics-vpc.

15. إنشاء قاعدة بيانات postgres في Looker
في القسم التالي، ستنفّذ عملية SSH في الجهاز الظاهري لقاعدة بيانات postgres باستخدام Cloud Shell.
داخل Cloud Shell، نفِّذ عملية ssh إلى مثيل قاعدة بيانات postgres**.**
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
داخل نظام التشغيل، حدِّد عنوان IP (ens4) لمثيل قاعدة بيانات postgres ودوِّنه.
ip a
مثال:
user@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
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:ac:10:0a:02 brd ff:ff:ff:ff:ff:ff
altname enp0s4
inet 172.16.10.2/32 metric 100 scope global dynamic ens4
valid_lft 84592sec preferred_lft 84592sec
inet6 fe80::4001:acff:fe10:a02/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 وشبكة فرعية من خلال ميزة "الوصول الخاص إلى Google" في Looker (192.168.0.0/22) في ملف 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 Sat 2023-07-01 23:40:59 UTC; 7s ago
Process: 4073 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 4073 (code=exited, status=0/SUCCESS)
CPU: 2ms
Jul 01 23:40:59 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Jul 01 23:40:59 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
16. إنشاء قاعدة بيانات postgres
في القسم التالي، ستنشئ قاعدة بيانات postgres باسم postgres_looker ومخطط looker_schema المستخدَم للتحقّق من صحة اتصال Looker بالخادم المحلي.
داخل نظام التشغيل، سجِّل الدخول إلى postgres.
sudo -u postgres psql postgres
داخل نظام التشغيل، أنشئ قاعدة البيانات.
create database postgres_looker;
داخل نظام التشغيل، أدرِج قاعدة البيانات.
\l
داخل نظام التشغيل، أنشئ مستخدم Looker باستخدام كلمة مرور Looker
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
مثال:
user@postgres-database$ sudo -u postgres psql postgres
psql (15.3 (Ubuntu 15.3-0ubuntu0.23.04.1))
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 SCHEMA
postgres_looker=# create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
CREATE TABLE
postgres_looker=# exit
الخروج من نظام التشغيل والعودة إلى Cloud Shell
\q
exit
17. إنشاء جدار حماية في on-prem-vpc
في القسم التالي، أنشئ جدار حماية Ingress مع تفعيل التسجيل، ما يسمح باتصال الشبكة الفرعية في Looker بمثيل قاعدة بيانات postgres.
من Cloud Shell، أنشئ جدار الحماية on-prem-vpc.
gcloud compute --project=$projectid firewall-rules create looker-access-to-postgres --direction=INGRESS --priority=1000 --network=on-prem-vpc --action=ALLOW --rules=all --source-ranges=192.168.0.0/22 --enable-logging
18 إنشاء نظام أسماء نطاقات خاص في analytics-vpc
على الرغم من أنّ Looker يتم نشره في شبكة VPC تديرها Google، يمكن الوصول إلى نظام أسماء النطاقات الخاص (Private DNS) في analytics-vpc من خلال تبادل المعلومات مع شبكة الخدمات.
في القسم التالي، ستنشئ منطقة نظام أسماء نطاقات خاصًا في analytics-vpc يتألف من سجلّ A لاسم النطاق المؤهّل بالكامل (postgres.analytics.com)) وعنوان IP الخاص بمثيل قاعدة بيانات postgres.
من Cloud Shell، أنشئ منطقة analytics.com الخاصة.
gcloud dns --project=$projectid managed-zones create gcp-private-zone --description="" --dns-name="analytics.com." --visibility="private" --networks="https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/analytics-vpc"
من Cloud Shell، حدِّد عنوان IP لمثيل قاعدة بيانات postgres.
gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
مثال:
user@cloudshell$ gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
networkIP: 172.16.10.2
من Cloud Shell، أنشئ سجلّ A، وتأكَّد من إضافة عنوان IP الذي تم تحديده سابقًا.
gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="your-postgres-database-ip"
مثال:
user@cloudshell$ gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="172.16.10.2"
NAME: postgres.analytics.com.
TYPE: A
TTL: 300
DATA: 172.16.10.2
من Cloud Shell، يمكنك ربط dns-suffix analytics.com بشبكة الخدمات، ما يتيح وصول Looker إلى المنطقة الخاصة analytics-vpc.
gcloud services peered-dns-domains create looker-com --network=analytics-vpc --service=servicenetworking.googleapis.com --dns-suffix=analytics.com.
19. دمج Looker مع قاعدة بيانات Postgres
في القسم التالي، ستستخدم Cloud Console لإنشاء اتصال قاعدة بيانات بمثيل قاعدة بيانات postgres المحلية.
في Cloud Console، انتقِل إلى Looker واختَر عنوان URL لنسختك الذي سيفتح واجهة مستخدم Looker.

بعد إطلاق التطبيق، ستظهر لك الصفحة المقصودة كما هو موضّح في لقطة الشاشة أدناه.

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

تم الاتصال بنجاح

20. التحقّق من إمكانية الاتصال بمنصة Looker
في القسم التالي، ستتعرّف على كيفية التحقّق من صحة اتصال Looker بقاعدة بيانات postgres في on-prem-vpc باستخدام إجراء "الاختبار" في Looker وTCPDUMP.
من Cloud Shell، سجِّل الدخول إلى قاعدة بيانات postgres إذا انتهت مهلة الجلسة.
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
من نظام التشغيل، أنشئ فلتر TCPDUMP باستخدام الشبكة الفرعية 192.168.0.0/22 لأداة psa-range-looker.
sudo tcpdump -i any net 192.168.0.0/22 -nn
انتقِل إلى "ربط البيانات" المشرف → قاعدة البيانات → عمليات الربط → اختيار → اختبار
بعد اختيار "اختبار"، سيتم ربط Looker بقاعدة بيانات postgres بنجاح كما هو موضّح أدناه:

ارجع إلى نافذة نظام التشغيل وتحقّق من أنّ أداة TCPDUMP قد حدّدت أنّ النطاق psc-range-looker يتصل بمثيل قاعدة بيانات postgres المحلية.
إضافة ملاحظة تفيد بأنّ أي عنوان IP من نطاق PSA سيظهر من Looker
user@postgres-database$ sudo tcpdump -i any net 192.168.0.0/22 -nn
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
00:16:55.121631 ens4 In IP 192.168.1.24.46892 > 172.16.10.2.5432: Flags [S], seq 2221858189, win 42600, options [mss 1366,sackOK,TS val 4045928414 ecr 0,nop,wscale 7], length 0
00:16:55.121683 ens4 Out IP 172.16.10.2.5432 > 192.168.1.24.46892: Flags [S.], seq 1464964586, ack 2221858190, win 64768, options [mss 1420,sackOK,TS val 368503074 ecr 4045928414,nop,wscale 7], length 0
21. اقتراحات بشأن الأمان
هناك بعض الاقتراحات وأفضل الممارسات المتعلّقة بتأمين Looker وقاعدة بيانات Postgres. تشمل هذه الطرق ما يلي:
- إعداد أذونات حساب قاعدة البيانات بأقل امتيازات في Looker مع السماح له في الوقت نفسه بتنفيذ الوظائف اللازمة
- تكون البيانات مشفّرة أثناء نقلها بين العميل وواجهة مستخدم Looker ومن Looker إلى قاعدة البيانات باستخدام الإصدار 1.2 أو إصدار أحدث من بروتوكول أمان طبقة النقل (TLS).
- يتم تشفير البيانات غير النشطة تلقائيًا، ويمكن للعميل أيضًا الاستفادة من مفاتيح التشفير المُدارة من قِبل العميل (CMEK) لمثيلات Looker ( https://cloud.google.com/looker/docs/looker-core-cmek) وPostgres ( https://cloud.google.com/sql/docs/postgres/configure-cmek).
- التحكّم في الوصول إلى Looker: يمكن لمشرفي Looker التحكّم في المحتوى الذي يمكن للمستخدم أو مجموعة المستخدمين الاطّلاع عليه وتنفيذه في Looker من خلال منح إذن الوصول إلى المحتوى والبيانات والميزات. تتيح هذه الخيارات لمشرف Looker تحديد أدوار معيّنة تتضمّن نموذجًا ومجموعة أذونات، كما تتيح إنشاء عناصر تحكّم دقيقة في الوصول إلى البيانات.
- تتيح Looker استخدام كل من سجلات التدقيق وسجلات الوصول إلى البيانات التي تسجّل الإجراءات التي اتّخذها المستخدمون ووقت اتّخاذها ومكان اتّخاذها. يتم تفعيل سجلّات التدقيق تلقائيًا، بينما يجب تفعيل سجلّات الوصول إلى البيانات بشكل صريح.
- في الوقت الحالي، تتوافق خدمة VPC-SC مع مثيلات Enterprise وEmbed التي تم ضبطها باستخدام عنوان IP خاص فقط.
22. تَنظيم
احذف مثيل Looker Cloud Core، وانتقِل إلى:
LOOKER → looker-tutorial → DELETE

من Cloud Shell، احذف مكوّنات البرنامج التعليمي.
gcloud compute vpn-tunnels delete analytics-vpc-tunnel0 analytics-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete analytics-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet
gcloud compute routers delete analytics-cr-us-central1 on-prem-cr-us-central1 on-prem-cr-us-central1-nat --region=us-central1 --quiet
gcloud compute instances delete postgres-database --zone=us-central1-a --quiet
gcloud compute networks subnets delete database-subnet-us-central1 --region=us-central1 --quiet
gcloud compute firewall-rules delete looker-access-to-postgres on-prem-ssh --quiet
gcloud dns record-sets delete postgres.analytics.com. --type=A --zone=gcp-private-zone
gcloud dns managed-zones delete gcp-private-zone
gcloud compute networks delete on-prem-vpc --quiet
gcloud compute addresses delete psa-range-looker --global --quiet
gcloud compute networks delete analytics-vpc --quiet
23. تهانينا
تهانينا، لقد نجحت في إعداد عملية الربط في Looker والتحقّق من صحتها من خلال الربط بين الشبكات المختلطة، ما يتيح تبادل البيانات بين البيئات المحلية وبيئات السحابة الإلكترونية المتعددة.
تمكّنت أيضًا من اختبار إمكانية اتصال Looker Cloud Core بقاعدة بيانات postgres بنجاح باستخدام أداة "الاختبار" في Lookers Connect وTCPDUMP في مثيل قاعدة بيانات postgres.
تعتقد Cosmopup أنّ الفيديوهات التعليمية رائعة!!

مزيد من المعلومات والفيديوهات
- تقديم أحدث إصدار من Looker
- هل تريد نقل البيانات إلى Google Cloud Platform؟ أولاً: شبكات VPC
- التوجيه الديناميكي باستخدام Cloud Router