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

1. Введение

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

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

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

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

Глобальный доступ позволяет клиентам подключаться к 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
  • Как создать частную конечную точку
  • Как подключиться к MongoDB
  • Как выполнить и проверить отработку отказа MongoDB в нескольких регионах

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

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

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

Обновите проект для поддержки лаборатории кода.

В этом Codelab используются переменные $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 Marketplace , если у вас есть учетная запись 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 и перейдите к своему проекту.

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

Безопасность → Доступ к базе данных выберите добавить нового пользователя базы данных. Ниже приведен пример имени пользователя и пароля, настроенных как codelab. Обязательно выберите встроенную роль для чтения и записи в любую базу данных.

f622ab14ddc96fc7.png

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

Подготовьте частные конечные точки в MongoDB Atlas

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

Облачный провайдер

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

5503248bf4019a35.png

Сервисное приложение

  • Выберите регион us-west1, затем следующий.

cb31aea7cad182f9.png

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

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

21d76af5367832f4.png

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

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

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

5c80cf7315a05c25.png

  • Скопируйте сценарий оболочки из консоли MongoBD и сохраните содержимое в терминале Google Cloud 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 перейдите в раздел «Сетевые службы» → «Подключение частных служб», выберите вкладку «Подключенная конечная точка», на которой отображаются конечные точки потребителя, находящиеся в процессе перехода «Ожидание» → «Принято», пример ниже:

5472dd938604b3.png

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

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

Подготовьте частные конечные точки в MongoDB Atlas

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

Облачный провайдер

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

5503248bf4019a35.png

Сервисное приложение

  • Выберите регион us-west2, затем следующий.

fc0b7a8e4274be3b.png

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

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

17b5a056587ede8a.png

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

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

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

b021821e7d59f450.png

  • Скопируйте сценарий оболочки из консоли MongoBD и сохраните содержимое в терминале Google Cloud 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 перейдите в раздел «Сетевые службы» → «Подключение частных служб», выберите вкладку «Подключенная конечная точка», на которой отображаются конечные точки потребителя, находящиеся в процессе перехода «Ожидание» → «Принято», пример ниже. В конечной точке потребителя развернуто в общей сложности 100 конечных точек, и перед переходом к следующему шагу необходимо перейти в состояние «принято».

6131abcdef5c1f49.png

9. Подключитесь к атласу MongoDB с частных конечных точек.

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

c1524d2c0c5765d1.png

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

3eea96af20bfad20.png

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

16a9090e495640c7.png

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

35e422af16cb5ce0.png

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

51be47403c00bab4.png

10. Установите приложение Монгош.

Перед установкой вам необходимо создать командную строку на основе ранее скопированных значений, полученных на шагах 1 и 3. После этого вы подключитесь к виртуальной машине 1 по SSH с помощью Cloud Shell, а затем установите и проверите приложение mongosh в основной базе данных (us-west1). Образ Ubuntu 20.4 был установлен при создании vm1 в файле Consumer-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

Войдите в вм1

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

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

Войдите в виртуальную машину 1, используя IAP в Cloud Shell, повторите попытку, если истекло время ожидания.

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

Выполните установку из ОС

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

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

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

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

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

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.

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

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

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

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

Войдите в виртуальную машину 1, используя 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 взял на себя управление основным. Хотя в кластере произошел региональный сбой, потребительская виртуальная машина1, расположенная в us-west1, успешно достигла нового основного кластера в us-west2.

12. Очистка

Из Cloud Console удалите конечные точки потребителя.

Перейдите к Сетевые службы → Подключение частных служб → ПОДКЛЮЧЕННЫЕ КОНЕЧНЫЕ ТОЧКИ.

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

192548e374b444a1.png

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

Перейдите в сеть VPC → потребитель-vpc → СТАТИЧЕСКИЕ ВНУТРЕННИЕ IP-АДРЕСА.

Используйте фильтр 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 считает, что кодлабы — это здорово!!

8c2a10eb841f7b01.jpeg

Что дальше?

Посмотрите некоторые из этих кодовых лабораторий...

Дальнейшее чтение и видео

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