[Документация Yandex Cloud](../../../index.md) > [Практические руководства](../../index.md) > Базовая инфраструктура > Отказоустойчивость и масштабирование > [Отказоустойчивый сайт с балансировкой нагрузки через Network Load Balancer](index.md) > Консоль управления

# Отказоустойчивый сайт с балансировкой нагрузки через Yandex Network Load Balancer с помощью консоли управления


{% note info %}

В [регионе Казахстан](../../../overview/concepts/region.md) доступна только [зона доступности](../../../overview/concepts/geo-scope.md) `kz1-a`.

{% endnote %}


Чтобы создать [отказоустойчивый сайт с балансировкой нагрузки через Yandex Network Load Balancer](index.md) с помощью консоли управления Yandex Cloud:

1. [Подготовьте облако к работе](#before-you-begin).
1. [Создайте группу ВМ](#create-vms).
1. [Загрузите файлы сайта](#upload-files).
1. [Создайте сетевой балансировщик](#create-load-balancer).
1. [Протестируйте отказоустойчивость](#test).

Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out).


## Подготовьте облако к работе {#before-you-begin}

Зарегистрируйтесь в Yandex Cloud и создайте [платежный аккаунт](../../../billing/concepts/billing-account.md):
1. Перейдите в [консоль управления](https://kz.console.yandex.cloud), затем войдите в Yandex Cloud или зарегистрируйтесь.
1. На странице **[Yandex Cloud Billing](https://kz.console.yandex.cloud/billing)** убедитесь, что у вас подключен платежный аккаунт, и он находится в [статусе](../../../billing/concepts/billing-account-statuses.md) `ACTIVE` или `TRIAL_ACTIVE`. Если платежного аккаунта нет, [создайте его](../../../billing/quickstart/index.md) и [привяжите](../../../billing/operations/pin-cloud.md) к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать [каталог](../../../resource-manager/concepts/resources-hierarchy.md#folder), в котором будет работать ваша инфраструктура, на [странице облака](https://kz.console.yandex.cloud/cloud).

[Подробнее об облаках и каталогах](../../../resource-manager/concepts/resources-hierarchy.md).


### Необходимые платные ресурсы {#paid-resources}

В стоимость поддержки сайта входит:

* плата за [диски](../../../compute/concepts/disk.md) и постоянно запущенные [ВМ](../../../compute/concepts/vm.md) ([тарифы Yandex Compute Cloud](../../../compute/pricing.md));
* плата за использование динамических или статических [внешних IP-адресов](../../../vpc/concepts/address.md#public-addresses) ([тарифы Yandex Virtual Private Cloud](../../../vpc/pricing.md));
* плата за [сетевой балансировщик](../../../network-load-balancer/concepts/index.md) и балансировку трафика ([тарифы Network Load Balancer](../../../network-load-balancer/pricing.md)).


### Подготовьте окружение {#configure-env}

* [Создайте](../../../vpc/operations/network-create.md) облачную сеть с именем `nlb-network` и [подсети](../../../vpc/operations/subnet-create.md).
* [Создайте](../../../iam/operations/sa/create.md) сервисный аккаунт с именем `nlb-sa` и [назначьте](../../../iam/operations/sa/assign-role-for-sa.md) ему роль `editor`.
* [Создайте](../../../compute/operations/vm-connect/ssh.md#creating-ssh-keys) пару ключей SSH.


## Создайте группу ВМ {#create-vms}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. Откройте [консоль управления](https://kz.console.yandex.cloud).
  1. Перейдите в сервис **Compute Cloud**.
  1. На панели слева выберите ![image](../../../_assets/console-icons/layers-3-diagonal.svg) **Группы виртуальных машин** и нажмите кнопку **Создать группу виртуальных машин**.
  1. В блоке **Базовые параметры**:

      * Укажите имя группы ВМ, например `nlb-vm-group`.
      * Выберите [сервисный аккаунт](../../../iam/concepts/users/service-accounts.md) `nlb-sa`.

  1. В блоке **Распределение** выберите зоны доступности `kz1-a` и `kz1-b`, чтобы обеспечить отказоустойчивость хостинга.
  1. В блоке **Шаблон виртуальной машины** нажмите кнопку **Задать** и укажите конфигурацию базовой ВМ:

      1. В блоке **Образ загрузочного диска** откройте вкладку **Marketplace** и нажмите кнопку **Показать все продукты Marketplace**. Выберите продукт:

          * [LEMP](https://yandex.cloud/ru-kz/marketplace/products/yc/lemp) для Linux, Nginx, MySQL®, PHP.
          * [LAMP](https://yandex.cloud/ru-kz/marketplace/products/yc/lamp) для Linux, Apache, MySQL®, PHP.

          Нажмите кнопку **Использовать**.

      1. В блоке **Диски и файловые хранилища** укажите:

          * **Тип** — `HDD`.
          * **Размер** — `3 ГБ`.

      1. В блоке **Вычислительные ресурсы** откройте вкладку **Своя конфигурация** и укажите: 

          * **Платформа** — `Intel Ice Lake`.
          * **vCPU** — `2`.
          * **Гарантированная доля vCPU** — `20%`.
          * **RAM** — `1 ГБ`.

      1. В блоке **Сетевые настройки**:

          * Выберите облачную сеть `nlb-network` и ее подсети.
          * В поле **Публичный адрес** выберите `Автоматически`.

      1. В блоке **Доступ** укажите данные для доступа на ВМ:

          * В поле **Сервисный аккаунт** выберите сервисный аккаунт для привязки к ВМ.
          * В поле **Логин** укажите имя пользователя.
          * В поле **SSH-ключ** вставьте содержимое файла открытого ключа.

      1. Нажмите кнопку **Сохранить**.

  1. В блоке **Масштабирование** укажите размер группы ВМ — `2`.
  1. В блоке **Интеграция с Network Load Balancer** выберите опцию **Создать целевую группу** и укажите имя группы: `nlb-tg`.
  1. Нажмите кнопку **Создать**.

  Создание группы ВМ может занять несколько минут. Когда все ВМ перейдут в [статус](../../../compute/concepts/vm-statuses.md) `RUNNING`, вы можете [загрузить на них файлы сайта](#upload-files).

{% endlist %}


## Загрузите файлы сайта {#upload-files}

Чтобы проверить работу веб-сервера, необходимо загрузить файлы сайта на каждую ВМ. Для примера вы можете использовать файл `index.html` из [архива](https://storage.yandexcloud.kz/doc-files/index.html.zip).

Для каждой ВМ в созданной группе выполните следующее:

1. [Узнайте](../../../compute/operations/vm-info/get-info.md) публичный IP-адрес нужной ВМ.
1. [Подключитесь](../../../compute/operations/vm-connect/ssh.md) к ВМ по протоколу SSH.
1. Выдайте права на запись для вашего пользователя на директорию `/var/www/html`:

    ```bash
    sudo chown -R "$USER":www-data /var/www/html
    ```

1. Загрузите на ВМ файлы сайта с помощью [протокола SCP](https://ru.wikipedia.org/wiki/SCP).

    {% list tabs group=operating_system %}

    - Linux/macOS {#linux-macos}

      Используйте утилиту командной строки `scp`:

      ```bash
      scp -r <путь_до_директории_с_файлами> <имя_пользователя_ВМ>@<IP-адрес_ВМ>:/var/www/html
      ```

    - Windows {#windows}

      С помощью программы [WinSCP](https://winscp.net/eng/download.php) скопируйте локальную директорию с файлами в директорию `/var/www/html` на ВМ.

    {% endlist %}


## Создайте сетевой балансировщик {#create-load-balancer}

При создании сетевого балансировщика нужно добавить [обработчик](../../../network-load-balancer/concepts/listener.md), на котором балансировщик будет принимать трафик, подключить [целевую группу](../../../network-load-balancer/concepts/target-resources.md), созданную вместе с группой ВМ, и настроить в ней проверку состояния ресурсов.

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог, где требуется создать балансировщик.
  1. Перейдите в сервис **Network Load Balancer** и нажмите кнопку **Создать сетевой балансировщик**.
  1. Укажите имя балансировщика, например `nlb-1`.
  1. В блоке **Обработчики**:
  
      1. Нажмите кнопку **Добавить обработчик** и укажите параметры:

          * **Имя** — `nlb-listener`.
          * **Порт** — `80`.
          * **Целевой порт** — `80`.

      1. Нажмите кнопку **Добавить**.

  1. В блоке **Целевые группы**:

      1. Нажмите кнопку **Добавить целевую группу** и выберите [созданную ранее](#create-vms) целевую группу `nlb-tg`. Если группа одна, она будет выбрана автоматически.
      1. В блоке **Проверка состояния** нажмите кнопку **Настроить** и укажите:

          * **Имя** — `health-check-1`.
          * **Порог работоспособности** — количество успешных проверок, после которого ВМ будет считаться готовой к приему трафика: `5`.
          * **Порог неработоспособности** — количество проваленных проверок, после которого на ВМ перестанет подаваться трафик: `5`.

      1. Нажмите кнопку **Применить**.

  1. Нажмите кнопку **Создать**.

{% endlist %}

После создания сетевого балансировщика, [протестируйте отказоустойчивость](#test).

## Протестируйте отказоустойчивость {#test}

1. [Узнайте](../../../compute/operations/vm-info/get-info.md) публичный IP-адрес любой ВМ из созданной группы.
1. [Подключитесь](../../../compute/operations/vm-connect/ssh.md) к ВМ по протоколу SSH.
1. Остановите веб-сервис, чтобы сымитировать сбой в работе веб-сервера:

    {% list tabs %}

    - LAMP

      ```bash
      sudo service apache2 stop
      ```

    - LEMP

      ```bash
      sudo service nginx stop
      ```

    {% endlist %}

1. [Узнайте](../../../network-load-balancer/operations/load-balancer-list.md#get) IP-адрес обработчика.
1. Откройте сайт в браузере, используя адрес обработчика.

    Несмотря на сбой в работе одного из веб-серверов, подключение должно пройти успешно.

1. После завершения проверки снова запустите веб-сервис:

    {% list tabs %}

    - LAMP

        ```bash
        sudo service apache2 start
        ```

    - LEMP

        ```bash
        sudo service nginx start
        ```

    {% endlist %}


## Как удалить созданные ресурсы {#clear-out}

Чтобы остановить работу хостинга и перестать платить за созданные ресурсы:
1. [Удалите](../../../network-load-balancer/operations/load-balancer-delete.md) сетевой балансировщик.
1. [Удалите](../../../compute/operations/instance-groups/delete.md) группу ВМ.
1. [Удалите](../../../vpc/operations/address-delete.md) статический публичный IP-адрес, если вы его зарезервировали.

#### Полезные ссылки {#see-also}

* [Отказоустойчивый сайт с балансировкой нагрузки через Yandex Network Load Balancer с помощью Terraform](terraform.md)