Доступ к многорегиональному Атласу MongoDB с помощью Private Service Connect

1. Введение

Модель Private Service Connect (PSC) упрощает безопасное и конфиденциальное использование сервисов. Эта модель значительно упрощает сетевую архитектуру, позволяя потребителям сервисов подключаться к производителям сервисов в рамках различных организаций и устраняя необходимость в пиринге виртуальных частных облаков (VPC). На рисунке 1 показаны пиринг VPC и атрибуты PSC.

Рисунок 1. 4f9551fc32ed83f5.png

Для потребителя услуг это предоставляет гибкость в выборе способа распределения частных IP-адресов между сервисами, снимая при этом бремя управления диапазонами подсетей для VPC-производителей. Теперь вы можете просто назначить выбранный виртуальный IP-адрес из вашей VPC такому сервису, используя подключение к сервису.

В этом практическом занятии вы создадите комплексную архитектуру Private Service Connect, демонстрирующую использование глобального доступа PSC с MongoDB Atlas.

Глобальный доступ позволяет клиентам подключаться к Private Service Connect (PSC) независимо от региональных границ. Это полезно для обеспечения высокой доступности управляемых сервисов, размещенных в нескольких регионах, или для предоставления клиентам доступа к сервису, который находится в другом регионе.

2. Обеспечение глобального доступа

Глобальный доступ — это дополнительная функция, которая настраивается в правиле пересылки на стороне потребителя. Следующая команда показывает, как её настроить:

gcloud beta compute forwarding-rules create psc-west \
    --region=us-west1 \
    --network=consumer-vpc \
    --address=psc-west-address \
    --target-service-attachment=projects/.../serviceAttachments/sa-west \
    --allow-psc-global-access
  • Флаг --allow-psc-global-access разрешает глобальный доступ к конечной точке Private Service Connect.
  • Глобальный доступ позволяет клиенту находиться в другом регионе, отличном от региона, к которому привязано правило переадресации Private Service Connect, однако правило переадресации по-прежнему должно находиться в том же регионе, что и подключенная к нему служба.
  • Для включения глобального доступа на стороне поставщика услуг не требуется никаких дополнительных настроек. Это исключительно опция для потребителя.

Глобальный доступ также можно включать или выключать в любое время для существующих конечных точек. При включении глобального доступа для активных соединений на существующей конечной точке никаких сбоев в передаче данных не происходит. Глобальный доступ включается для существующего правила переадресации с помощью следующей команды:

gcloud beta compute forwarding-rules update psc-west --allow-psc-global-access

Отключение глобального доступа

Глобальный доступ также можно отключить в существующих правилах пересылки с помощью флага --no-allow-psc-global-access . Обратите внимание, что после выполнения этой команды любой активный межрегиональный трафик будет прекращен.

gcloud beta compute forwarding-rules update psc-west --no-allow-psc-global-access

3. Что вы построите

  1. Будет создан многорегиональный кластер MongoDB Atlas (топология описана на рисунке 2) с одним узлом в регионе us-west1 и двумя узлами в регионе us-west2 соответственно.
  2. Потребительская VPC и связанная с ней виртуальная машина для доступа к кластерам MongoDB в регионах us-west1 и us-west2.
  3. VPC и две подсети в регионах us-west1 и us-west2 соответственно, каждая из которых должна содержать не менее 64 свободных IP-адресов (подсети следует создавать с параметрами /26 и ниже).

Клиент MongoDB будет установлен на виртуальной машине vm1 в потребительской VPC. В случае отказа основного узла в us-west1 клиент сможет читать/записывать данные через новый основной узел в us-west2.

Рисунок 2. ab6c2791514c4481.png

Что вы узнаете

  • Как создать VPC и подсети, развернутые в двух регионах
  • Как развернуть кластер MongoDB Atlas в нескольких регионах
  • Как создать приватную конечную точку
  • Как подключиться к MongoDB
  • Как выполнить и проверить отказоустойчивость MongoDB в нескольких регионах

Что вам понадобится

  • Проект Google Cloud
  • Предоставьте подсеть /26 для каждого региона.
  • Владелец проекта или организации должен иметь доступ к MongoDB Atlas для создания кластера MongoDB с уровнем кластера M10 или выше. (Пожалуйста, используйте GETATLAS для получения бесплатных кредитов для запуска PoV).

4. Прежде чем начать

Обновите проект, чтобы он поддерживал практическое занятие.

В этом практическом занятии используется переменная `$variables` для упрощения настройки gcloud в Cloud Shell.

Внутри Cloud Shell выполните следующие действия:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

5. Настройка потребителя

Создайте потребительскую VPC.

Внутри Cloud Shell выполните следующие действия:

gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom

Создайте потребительские подсети

Внутри Cloud Shell выполните следующие действия:

gcloud compute networks subnets create vm-subnet --project=$projectname --range=10.10.10.0/29 --network=consumer-vpc --region=us-west1

Внутри Cloud Shell создайте конечную точку потребителя для us-west1:

gcloud compute networks subnets create psc-endpoint-us-west1 --project=$projectname --range=192.168.10.0/26 --network=consumer-vpc --region=us-west1

Внутри Cloud Shell создайте конечную точку потребителя для us-west2:

gcloud compute networks subnets create psc-endpoint-us-west2 --project=$projectname --range=172.16.10.0/26 --network=consumer-vpc --region=us-west2

Настройка облачного маршрутизатора и NAT.

В практическом задании для установки программных пакетов используется Cloud NAT, поскольку у виртуальных машин нет внешнего IP-адреса.

Внутри Cloud Shell создайте облачный маршрутизатор.

gcloud compute routers create consumer-cr --network consumer-vpc --region us-west1

Внутри Cloud Shell создайте NAT-шлюз.

gcloud compute routers nats create consumer-nat --router=consumer-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-west1

Конфигурация экземпляра vm1

В следующем разделе вы создадите экземпляр Compute Engine, vm1.

Внутри Cloud Shell создайте экземпляр vm1.

gcloud compute instances create vm1 \
    --project=$projectname \
    --zone=us-west1-a \
    --machine-type=e2-micro \
    --network-interface=subnet=vm-subnet,no-address \
    --maintenance-policy=MIGRATE \
    --provisioning-model=STANDARD \
--create-disk=auto-delete=yes,boot=yes,device-name=vm1,image=projects/ubuntu-os-cloud/global/images/ubuntu-2004-focal-v20230213,mode=rw,size=10,type=projects/$projectname/zones/us-west1-a/diskTypes/pd-balanced
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump -y
      sudo apt-get install dnsutils -y"

Чтобы разрешить IAP подключаться к вашим виртуальным машинам, создайте правило брандмауэра, которое:

  • Применяется ко всем экземплярам виртуальных машин, к которым вы хотите обеспечить доступ с помощью IAP.
  • Разрешает входящий трафик из диапазона IP-адресов 35.235.240.0/20. Этот диапазон содержит все IP-адреса, которые IAP использует для пересылки TCP-трафика.

Внутри Cloud Shell создайте правило брандмауэра IAP.

gcloud compute firewall-rules create ssh-iap-consumer-vpc \
    --network consumer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

6. Создайте многорегиональный кластер MongoDB Atlas.

  • Перед началом настройки PSC нам необходимо создать кластер Atlas. Подписаться на MongoDB Atlas можно одним из двух способов, указанных ниже:
  • Если у вас есть учетная запись Google Cloud, ознакомьтесь с документацией , чтобы настроить подписку.
  • С помощью страницы регистрации Atlas .
  • После оформления подписки на Atlas нажмите кнопку «Создать базу данных», как показано ниже.

796f5bda844bf400.png

  • Создать новый кластер → Выделенный

56c340661d86962c.png

  • Поставщик облачных услуг и регион → Google Cloud
  • Многооблачная, многорегиональная изоляция и изоляция рабочих нагрузок → Выбрано (синяя галочка)

6c10293ffd9814ae.png

  • Избираемые узлы → us-west1 (1 узел), us-west2 (2 узла)

e652bd944d785871.png

  • Уровень кластера → M10, все остальные настройки оставьте по умолчанию.

ffa0195b96c2c5ff.png

  • Название кластера → psc-mongodb-uswest1-uswest2

3720fb8c15ba5cc2.png

  • Выберите → Создать кластер

ec5e3e6983c02e27.png

  • Создание базы данных занимает 7-10 минут.

d75778d5abf484aa.png

Вид кластера после развертывания

1f0ec6a401578650.png

7. Создание частной конечной точки для us-west1

  • Войдите в свою учетную запись Atlas и перейдите к своему проекту.

Создайте нового пользователя, которому будет предоставлен доступ на чтение/запись к любой базе данных.

В разделе «Безопасность» → «Доступ к базе данных» выберите «Добавить нового пользователя базы данных». Ниже приведен пример, имя пользователя и пароль настроены в соответствии с инструкциями из учебного пособия. Убедитесь, что выбрана встроенная роль «Чтение и запись в любую базу данных».

f622ab14ddc96fc7.png

  • В разделе «Безопасность» → «Сетевой доступ» запись в списке IP-адресов не требуется.

Подготовка приватных конечных точек в MongoDB Atlas

  • Выберите «Сетевой доступ» → «Частные конечные точки» → «Выделенный кластер» → «Добавить частную конечную точку». 88f5c1d9ae7e46d9.png

Поставщик облачных услуг

  • Выберите Google Cloud, затем нажмите «Далее».

5503248bf4019a35.png

Приложение к услуге

  • Выберите регион us-west1, затем нажмите «Далее».

cb31aea7cad182f9.png

Конечные точки

  • Для создания конечной точки подключения частной службы укажите следующее:
  • Идентификатор проекта Google Cloud: выберите «Показать инструкции» для получения подробной информации.
  • Имя VPC: consumer-vpc
  • Имя подсети: psc-endpoint-us-west1
  • Префикс конечной точки подключения частной службы: psc-endpoint-us-west1

21d76af5367832f4.png

Настройка конечных точек

В следующем разделе будет сгенерирован скрипт оболочки, который следует сохранить локально под именем setup_psc.sh. После сохранения отредактируйте скрипт оболочки, чтобы разрешить глобальный доступ к psc. Это можно сделать в проекте Google Cloud Cloud Shell.

  • Пример скрипта оболочки, в результате выполнения которого будут получены другие значения.

5c80cf7315a05c25.png

  • Скопируйте скрипт оболочки из консоли MongoBD и сохраните его содержимое в терминале Google Cloud Shell, обязательно сохранив скрипт как setup_psc.sh.

Пример до обновления:

#!/bin/bash
gcloud config set project yourprojectname

for i in {0..49}
do
  gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done

for i in {0..49}
do
  if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
    echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
    exit 1;
  fi
done

for i in {0..49}
do
  gcloud compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i
done

if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
  echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
  exit 2;
fi

gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json

Обновите скрипт оболочки для поддержки глобального доступа.

Используйте редактор nano или vi, чтобы найти и обновить скрипт оболочки, используя приведенный ниже синтаксис:

gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access

Пример после обновления:

#!/bin/bash
gcloud config set project yourprojectname

for i in {0..49}
do
  gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done

for i in {0..49}
do
  if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
    echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
    exit 1;
  fi
done

for i in {0..49}
do
  gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done

if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
  echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
  exit 2;
fi

gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json

Запустите скрипт оболочки

Перейдите к скрипту setup_psc.sh и выполните его. После завершения будет создан файл atlasEndpoints-psc-endpoint-us-west1.json . Файл json содержит список IP-адресов и имен конечных точек Private Service Connect, необходимых для следующего шага развертывания.

Внутри Cloud Shell выполните следующие действия:

sh setup_psc.sh

После завершения выполнения скрипта используйте редактор Cloud Shell для загрузки файла atlasEndpoints-psc-endpoint-us-west1.json локально.

2856802dd6497f51.pngb0059dc8e1558891.png

Загрузите JSON-файл

Загрузите ранее сохраненный JSON-файл atlasEndpoints-psc-endpoint-us-west1.json

3a74e8d9952d793a.png

4938fd8256eb81b4.png

Выберите Создать

Проверка конечных точек Private Service Connect

В пользовательском интерфейсе MongoDB перейдите к своему проекту, затем в раздел Безопасность → Сетевой доступ → Частная конечная точка. Выбрав вкладку «Выделенный кластер», перейдите к пункту «Доступна», это займет 10 минут.

Доступный статус

972aff09d180d9de.png

В консоли Google Cloud перейдите в раздел «Сетевые службы» → «Подключение частных служб», выберите вкладку «Подключенная конечная точка», где отображаются конечные точки потребителей, переходящие в состояние «Ожидание» → «Принято» (пример ниже):

5472dd938604b3.png

8. Создание частной конечной точки для us-west2

  • Войдите в свою учетную запись Atlas и перейдите к своему проекту.

Подготовка приватных конечных точек в MongoDB Atlas

  • Выберите «Сетевой доступ» → «Частные конечные точки» → «Выделенный кластер» → «Добавить частную конечную точку». 88f5c1d9ae7e46d9.png

Поставщик облачных услуг

  • Выберите Google Cloud, затем нажмите «Далее».

5503248bf4019a35.png

Приложение к услуге

  • Выберите регион us-west2, затем нажмите «Далее».

fc0b7a8e4274be3b.png

Конечные точки

  • Для создания конечной точки подключения частной службы укажите следующее:
  • Идентификатор проекта Google Cloud: выберите «Показать инструкции» для получения подробной информации.
  • Имя VPC: consumer-vpc
  • Название подсети: psc-endpoint-us-west2
  • Префикс конечной точки подключения частной службы: psc-endpoint-us-west2

17b5a056587ede8a.png

Настройка конечных точек

В следующем разделе будет сгенерирован скрипт оболочки, который следует сохранить локально под именем setup_psc.sh. После сохранения отредактируйте скрипт оболочки, чтобы разрешить глобальный доступ к psc. Это можно сделать в проекте Google Cloud Cloud Shell.

  • Пример скрипта оболочки, в результате выполнения которого будут получены другие значения.

b021821e7d59f450.png

  • Скопируйте скрипт оболочки из консоли MongoBD и сохраните его содержимое в терминале Google Cloud Shell, обязательно сохранив скрипт как setup_psc.sh.

Пример до обновления:

#!/bin/bash
gcloud config set project yourprojectname

for i in {0..49}
do
  gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done

for i in {0..49}
do
  if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
    echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
    exit 1;
  fi
done

for i in {0..49}
do
  gcloud compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i
done

if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
  echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
  exit 2;
fi

gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json

Обновите скрипт оболочки для поддержки глобального доступа.

Используйте редактор nano или vi, чтобы найти и обновить скрипт оболочки, используя приведенный ниже синтаксис:

gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done

Пример после обновления:

#!/bin/bash
gcloud config set project yourprojectname

for i in {0..49}
do
  gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done

for i in {0..49}
do
  if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
    echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
    exit 1;
  fi
done

for i in {0..49}
do
  gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done

if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
  echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
  exit 2;
fi

gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json

Запустите скрипт оболочки

Перейдите к скрипту setup_psc.sh и выполните его. После завершения будет создан файл atlasEndpoints-psc-endpoint-us-west2.json . Файл json содержит список IP-адресов и имен конечных точек Private Service Connect, необходимых для следующего шага развертывания.

Внутри Cloud Shell выполните следующие действия:

sh setup_psc.sh

После завершения выполнения скрипта используйте редактор Cloud Shell для загрузки файла atlasEndpoints-psc-endpoint-us-west2.json локально.

2856802dd6497f51.png6e3d944944718f13.png

Загрузите JSON-файл

Загрузите ранее сохраненный JSON-файл atlasEndpoints-psc-endpoint-us-west2.json

3a74e8d9952d793a.png

4938fd8256eb81b4.png

Выберите Создать

Проверка конечных точек Private Service Connect

В пользовательском интерфейсе MongoDB перейдите к своему проекту, затем в раздел Безопасность → Сетевой доступ → Частная конечная точка. Выбрав вкладку «Выделенный кластер», вы увидите, что конечная точка станет доступна через 10 минут.

Доступный статус:

8801df4f6b39d20a.png

В консоли Google Cloud перейдите в раздел «Сетевые службы» → «Подключение частных служб», выберите вкладку «Подключенная конечная точка», где отображаются конечные точки-потребители, переходящие в состояние «Ожидание» → «Принято» (пример ниже). Всего в конечной точке-потребителе развернуто 100 конечных точек, и для перехода к следующему шагу необходимо перевести их в состояние «Принято».

6131abcdef5c1f49.png

9. Подключитесь к MongoDB Atlas через частные конечные точки.

После того, как частные подключения будут приняты, потребуется дополнительное время (10-15 минут) для обновления кластера MongoDB. В пользовательском интерфейсе MongoDB серая рамка обозначает обновление кластера, поэтому подключение к частной конечной точке недоступно.

c1524d2c0c5765d1.png

Определите тип развертывания и выберите «Подключить» (обратите внимание, что серое поле больше не отображается).

3eea96af20bfad20.png

Выберите тип подключения → Частная конечная точка, выберите «Выбрать способ подключения».

16a9090e495640c7.png

Выберите «Подключиться через оболочку MongoDB».

35e422af16cb5ce0.png

Выберите пункт «У меня не установлена ​​оболочка MongoDB, Ubuntu 20.4» и обязательно скопируйте содержимое шагов 1 и 3 в блокнот.

51be47403c00bab4.png

10. Установите приложение Mongosh.

Перед установкой вам потребуется создать командную строку на основе значений, полученных ранее на шагах 1 и 3. После этого вы подключитесь к vm1 по SSH с помощью Cloud Shell, а затем выполните установку приложения MongoSH и проверку его принадлежности к основной базе данных (us-west1). Образ Ubuntu 20.4 был установлен при создании vm1 в потребительской VPC.

Выберите способ подключения: Шаг 1, Скопируйте URL-адрес для скачивания

5da980ff86265dd8.png

Пример командной строки, замените на ваши пользовательские значения:

https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb

Выберите способ подключения, шаг 3.

698286bdf3dee3c7.png

Пример командной строки, замените на ваши пользовательские значения:

mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab

Войдите в vm1

Внутри Cloud Shell выполните следующие действия:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

Войдите в vm1 через IAP в Cloud Shell и повторите попытку, если произойдет таймаут.

gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap

Выполните установку из операционной системы.

Выполните установку, войдя в систему Cloud Shell OS. Дополнительные сведения доступны по ссылке. Обновите синтаксис ниже, указав свою пользовательскую строку.

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

Операция должна ответить

OK

.

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

sudo apt-get update -y

wget https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb

sudo dpkg -i mongodb-mongosh_1.7.1_amd64.deb

Подключитесь к развертыванию MongoDB.

Внутри системы Cloud Shell выполните следующие действия при входе в систему. В качестве имени пользователя и пароля указаны codelab.

mongosh

mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab

Пример ниже:

d5d0324a273b4d5e.png

Выполнять команды в базе данных

Внутри системы Cloud Shell выполните следующие действия при входе в систему.

show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne({"Name":"cosmo"})

11. Активный резервный регион MongoDB, us-west1

Прежде чем выполнять переключение на резервный сервер, давайте убедимся, что us-west1 является основным, а us-west2 имеет два резервных узла.

Перейдите в раздел База данных → psc-mongodb-uswest1-uswest2 → Обзор

64ca0395807bb3ac.png

В следующем разделе войдите в виртуальную машину vm1, расположенную в регионе us-west1, переключитесь на резервный регион основного кластера MongoDB us-west1 и убедитесь, что база данных по-прежнему доступна из кластера MongoDB в регионе us-west2.

Вы можете протестировать как основное, так и региональное переключение на резервный сервер прямо из пользовательского интерфейса Atlas.

  • Войдите в пользовательский интерфейс Atlas.
  • Нажмите на [...] рядом с именем вашего кластера, psc-mongodb-uswest1-uswest2 → Проверить сбой.

3a50da4381817975.png

  • Выберите региональное отключение → Выберите регионы.

b8dfff376477bcbb.png

  • Выберите основной регион, us-west1 → Имитировать региональное отключение.

76494a750a040bc5.png

После выбора кластера через 3-4 минуты отобразится имитация отключения электроэнергии.

Закройте окно

3a9f0359bd4e288f.png

bac1b2db0d754bbf.png

Убедитесь, что порт us-west1 отключен, а порт us-west2 теперь является основным.

Перейдите в раздел База данных → psc-mongodb-uswest1-uswest2 → Обзор

86fd7d5230715645.png

Проверьте подключение к кластеру с помощью нового основного сервера us-west2.

Войдите в виртуальную машину vm1, расположенную в us-west1, и получите доступ к MongoDB в us-west2, подтвердив глобальный доступ к частному сервису Connect.

Если сеанс Cloud Shell завершился, выполните следующие действия:

Внутри Cloud Shell выполните следующие действия:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

Войдите в vm1 через IAP в Cloud Shell и повторите попытку, если произойдет таймаут.

gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap

Подключитесь к развертыванию MongoDB.

Внутри системы Cloud Shell выполните следующие действия при входе в систему.

mongosh

mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab

Пример ниже:

d262800a557b41a3.png

Выполнять команды в базе данных

Внутри системы Cloud Shell выполните следующие действия при входе в систему.

show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()

exit

20c2571d84c0661d.png

Успех: Вы подтвердили, что глобальный доступ PSC обеспечивает бесперебойное подключение конечных точек потребителей из разных регионов, способствуя высокой доступности или в случае региональных сбоев. В практическом задании произошло региональное переключение MongoDB на основном узле, расположенном в регионе us-west1, поэтому вторичный регион us-west2 взял на себя функции основного узла. Хотя это привело к региональному сбою кластера, виртуальная машина потребителя vm1, расположенная в us-west1, успешно подключилась к новому основному кластеру в us-west2.

12. Уборка

В консоли Cloud удалите конечные точки потребителя.

Перейдите в раздел «Сетевые службы» → «Подключение к частной службе» → «Подключенные конечные точки».

Используйте фильтр psc-endpoint , чтобы исключить возможность удаления конечных точек, не относящихся к лабораторным условиям. Выберите все конечные точки → УДАЛИТЬ

192548e374b444a1.png

Удалите статические внутренние IP-адреса, связанные с конечными устройствами потребителей.

Перейдите в сеть VPC → consumer-vpc → STATIC INTERNAL IP ADDRESSES

Используйте фильтр psc-endpoint , чтобы исключить возможное удаление конечных точек потребителей, не относящихся к лабораторным, и увеличить количество строк на странице до 100. Выберите все конечные точки → ВЫПУСК

4cebf164c4fecd83.png

В Cloud Shell удалите компоненты codelab.

gcloud compute instances delete vm1 --zone=us-west1-a --quiet 

gcloud compute networks subnets delete psc-endpoint-us-west1 vm-subnet --region=us-west1 --quiet

gcloud compute networks subnets delete psc-endpoint-us-west2 --region=us-west2 --quiet

gcloud compute firewall-rules delete ssh-iap-consumer --quiet 

gcloud compute routers delete consumer-cr --region=us-west1 --quiet 

gcloud compute networks delete consumer-vpc --quiet

В пользовательском интерфейсе Atlas идентифицируйте кластер psc-mongodb-uswest1-uswest2 → завершите моделирование

f82e28ac984d9e20.png

Выберите «Завершить моделирование отключения» —> «Выход».

38feaf055abdceea.png

В данный момент кластер возвращает us-west1 в качестве основного сервера, этот процесс займет 3-4 минуты. После завершения завершите работу кластера, обратите внимание на серую рамку, указывающую на изменение статуса.

f249a61bcc966d41.png

9427a9349daa1fea.png

Введите имя кластера → Завершить

9ef6d3a6387c5b4b.png

Удалите частную конечную точку, связанную с us-west1 и us-west2.

В пользовательском интерфейсе Atlas перейдите в раздел Безопасность → Сетевой доступ → Частная конечная точка → Выберите Завершить

56415ea954b2fec9.png

13. Поздравляем!

Поздравляем, вы успешно настроили и проверили конечную точку Private Service Connect с глобальным доступом к MongoDB в разных регионах. Вы успешно создали потребительскую VPC, многорегиональную MongoDB и потребительские конечные точки. Виртуальная машина, расположенная в регионе us-west1, успешно подключилась к MongoDB как в us-west1, так и в us-west2 после переключения на резервный регион.

Cosmopup считает, что Codelabs — это круто!!

8c2a10eb841f7b01.jpeg

Что дальше?

Посмотрите некоторые из этих практических занятий по программированию...

Дополнительная литература и видеоматериалы

Справочная документация