Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Сценарии использования
  • Веб-сервис
    • Все сценарии
    • Cтатический сайт в Object Storage
    • Cайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки через Yandex Load Balancer
    • Отказоустойчивый сайт с использованием DNS-балансировки
    • Сайт на базе Joomla с БД PostgreSQL
    • Сайт на WordPress
    • Сайт на WordPress с БД MySQL
    • Веб-сайт на базе 1С-Битрикс
  • Интернет-магазины
    • Все сценарии
    • Интернет-магазин на 1С-Битрикс
    • Интернет-магазин на Opencart
  • Архив данных
    • Все сценарии
    • Однонодовый файловый сервер
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование в Object Storage через Acronis
    • Резервное копирование в Object Storage через CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage через Bacula
    • Оцифровка архива в Yandex Vision
  • Тестовая среда
    • Все сценарии
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых виртуальных машинах
  • Управление инфраструктурой
    • Все сценарии
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Автоматизация сборки образов ВМ с помощью Jenkins
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Создание кластера Windows-серверов «1С:Предприятия» с базой данных MS SQL Server
    • Миграция в Yandex.Cloud с помощью Hystax Acura
    • Аварийное восстановление в Yandex.Cloud с помощью Hystax Acura
    • Настройка отказоустойчивой архитектуры в Yandex.Cloud
  • Windows в Yandex.Cloud
    • Все сценарии
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On
    • Развертывание группы доступности Always On с внутренним балансировщиком
  • Сетевая маршрутизация
    • Все сценарии
    • Маршрутизация с помощью NAT-инстанса
    • Создание VPN-туннеля
    • Установка виртуального роутера Cisco CSR1000v
    • Установка виртуального роутера Mikrotik CHR
    • Создание VPN-соединения с помощью OpenVPN
  • Визуализация и анализ данных
    • Все сценарии
    • Визуализация данных из CSV-файла
    • Визуализация данных из базы данных ClickHouse
    • Визуализация данных из Метрики
    • Визуализация данных из Metriсa Logs API
    • Публикация в DataLens Public диаграммы с картой на основе CSV-файла
    • Визуализация данных из AppMetrica
    • Визуализация геоданных из CSV-файла
  • Интернет вещей
    • Сценарии работы с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  1. Веб-сервис
  2. Отказоустойчивый сайт с использованием DNS-балансировки

Отказоустойчивый веб-сайт с DNS-балансировкой нагрузки

  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Подготовьте сетевую инфраструктуру
  • Создайте виртуальные машины с предустановленным веб-сервером
  • Загрузите файлы веб-сайта
  • Создайте виртуальные машины для DNS-балансировщиков
  • Установите и настройте ПО DNS-балансировщика
  • Настройте DNS
  • Протестируйте отказоустойчивость
    • DNS-балансировщики
    • Веб-серверы
  • Как удалить созданные ресурсы

В этом сценарии описано, как настроить веб-сайт с балансировкой нагрузки между двумя зонами доступности, защищенный от сбоев в одной зоне.

Чтобы настроить отказоустойчивый веб-сайт с DNS-балансировкой нагрузки:

  1. Подготовьте облако к работе.
  2. Подготовьте сетевую инфраструктуру.
  3. Cоздайте две виртуальные машины с предустановленным веб-сервером в разных зонах доступности.
  4. Загрузите файлы веб-сайта
  5. Создайте две виртуальные машины для DNS-балансировщиков в разных зонах доступности.
  6. Установите и настройте ПО DNS-балансировщика.
  7. Настройте DNS.
  8. Протестируйте отказоустойчивость.

Если сайт вам больше не нужен, удалите все используемые им ресурсы.

Подготовьте облако к работе

Перед тем, как разворачивать сервер, нужно зарегистрироваться в Yandex.Cloud и создать платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex.Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша виртуальная машина, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсы

В стоимость поддержки инфраструктуры 1С-Битрикс входит:

  • плата за постоянно запущенные виртуальные машины (см. тарифы Yandex Compute Cloud);
  • плата за использование динамического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud).

Подготовьте сетевую инфраструктуру

Перед тем, как создавать виртуальные машины:

  1. Перейдите в консоль управления Yandex.Cloud и выберите каталог, в котором будете выполнять операции.
  2. Убедитесь, что в выбранном каталоге есть сеть с подсетями в зонах доступности ru-cental1-a и ru-central1-b. Для этого на странице каталога выберите сервис Virtual Private Cloud. Если в списке есть сеть — нажмите на нее, чтобы увидеть список подсетей. Если нужных подсетей или сети нет, создайте их.

Создайте виртуальные машины с предустановленным веб-сервером

Последовательно создайте две виртуальные машины по инструкции:

  1. На странице каталога нажмите кнопку Создать ресурс и выберите Виртуальная машина.

  2. В поле Имя введите имя виртуальной машины:

    • для первой машины — dns-lb-tutorial-web-ru-central1-a;
    • для второй машины — dns-lb-tutorial-web-ru-central1-b.
  3. Выберите зону доступности:

    • для первой машины — ru-central1-a;
    • для второй машины — ru-central1-b.
  4. Выберите один публичный образ для обеих виртуальных машин:

    • LEMP для Linux, nginx, MySQL, PHP;
    • LAMP для Linux, Apache, MySQL, PHP.
  5. В блоке Вычислительные ресурсы:

    • Выберите платформу.
    • Укажите необходимое количество vCPU и объем RAM.

    Характеристики обеих виртуальных машин должны совпадать.

    Для функционального тестирования хватит минимальной конфигурации:

    • Платформа — Intel Cascade Lake.
    • Гарантированная доля vCPU — 5%.
    • vCPU — 2.
    • RAM — 1 ГБ.
  6. В блоке Сетевые настройки выберите, к какой подсети необходимо подключить виртуальную машину при создании.

  7. Укажите данные для доступа на виртуальную машину:

    • В поле Логин введите имя пользователя.
    • В поле SSH ключ вставьте содержимое файла открытого ключа.
      Пару ключей для подключения по SSH необходимо создать самостоятельно. Для создания ключей используйте сторонние инструменты, например утилиты ssh-keygen в Linux и macOS или PuTTYgen в Windows.
  8. Нажмите кнопку Создать ВМ.

Создание виртуальной машины может занять несколько минут. Когда виртуальная машина перейдет в статус RUNNING, вы можете загрузить на нее файлы веб-сайта.

При создании виртуальной машине назначаются IP-адрес и имя хоста (FQDN). Эти данные можно использовать для доступа по SSH.

См. также

  • Подключиться к виртуальной машине Linux по SSH

Загрузите файлы веб-сайта

Для виртуальных машин dns-lb-tutorial-web-ru-central1-a и dns-lb-tutorial-web-ru-central1-b выполните:

  1. В блоке Сеть на странице виртуальной машины в консоли управления найдите публичный IP-адрес виртуальной машины.

  2. Подключитесь к виртуальной машине по протоколу SSH.

  3. Выдайте права на запись для вашего пользователя на директорию /var/www/html:

    Ubuntu
    CentOS
    $ sudo chown -R "$USER":www-data /var/www/html
    
    $ sudo chown -R "$USER":apache /var/www/html
    
  4. Загрузите на виртуальную машину файлы веб-сайта с помощью протокола SCP.

    Linux/macOS
    Windows

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

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

    С помощью программы WinSCP скопируйте локальную директорию с файлами в директорию /var/www/html на виртуальной машине.

Создайте виртуальные машины для DNS-балансировщиков

Последовательно создайте две виртуальные машины по инструкции:

  1. На странице каталога нажмите кнопку Создать ресурс и выберите Виртуальная машина.

  2. В поле Имя введите имя виртуальной машины:

    • для первой машины — dns-lb-tutorial-slb-ru-central1-a;
    • для второй машины — dns-lb-tutorial-slb-ru-central1-b.
  3. Выберите зону доступности:

    • для первой машины — ru-central1-a;
    • для второй машины — ru-central1-b.
  4. Выберите публичный образ Ubuntu или CentOS. Поддерживаемые версии для Ubuntu: 16.04 или выше.

  5. В блоке Вычислительные ресурсы:

    • Выберите платформу.
    • Укажите необходимое количество vCPU и объем RAM.

    Характеристики обеих виртуальных машин должны совпадать.

    Для функционального тестирования хватит минимальной конфигурации:

    • Платформа — Intel Cascade Lake.
    • Гарантированная доля vCPU — 5%.
    • vCPU — 2.
    • RAM — 1 ГБ.
  6. В блоке Сетевые настройки выберите, к какой подсети необходимо подключить виртуальную машину при создании.

  7. Укажите данные для доступа на виртуальную машину:

    • В поле Логин введите имя пользователя.
    • В поле SSH ключ вставьте содержимое файла открытого ключа.
      Пару ключей для подключения по SSH необходимо создать самостоятельно. Для создания ключей используйте сторонние инструменты, например утилиты ssh-keygen в Linux и macOS или PuTTYgen в Windows.
  8. Нажмите кнопку Создать ВМ.

Создание виртуальной машины может занять несколько минут. Когда виртуальная машина перейдет в статус RUNNING, вы можете установить и настроить ПО DNS-балансировщика.

При создании виртуальной машине назначаются IP-адрес и имя хоста (FQDN). Эти данные можно использовать для доступа по SSH.

См. также

  • Подключиться к виртуальной машине Linux по SSH

Установите и настройте ПО DNS-балансировщика

Для виртуальных машин dns-lb-tutorial-slb-ru-central1-a и dns-lb-tutorial-slb-ru-central1-b выполните:

  1. В блоке Сеть на странице виртуальной машины в консоли управления найдите публичный IP-адрес виртуальной машины.

  2. Подключитесь к виртуальной машине по протоколу SSH. Для этого можно использовать утилиту ssh в Linux и macOS и программу PuTTY для Windows.

    Рекомендуемый способ аутентификации при подключении по SSH — с помощью пары ключей. Не забудьте настроить использование созданной пары ключей: закрытый ключ должен соответствовать открытому ключу, переданному на виртуальную машину.

  3. Установите необходимые зависимости:

    Ubuntu 16/18
    CentOS 6/7
    $ sudo apt-get update
    $ sudo apt-get install pdns-server pdns-backend-remote memcached python3-yaml python3-memcache python3-pip
    
    $ sudo yum check-update
    $ sudo yum -y install epel-release
    $ sudo yum -y install pdns pdns-backend-remote memcached python34-yaml python34-setuptools git nano
    $ sudo service memcached start
    $ sudo chkconfig pdns on
    $ sudo chkconfig memcached on
    
  4. Установите polaris-gslb:

    $ git clone https://github.com/polaris-gslb/polaris-gslb.git
    $ cd polaris-gslb
    $ sudo python3 setup.py install
    
  5. Скопируйте файлы конфигурации для polaris-gslb

    Ubuntu 16/18
    CentOS 6
    CentOS 7
    $ sudo cp /opt/polaris/etc/pdns.conf.dist /etc/powerdns/pdns.conf
    $ cd /opt/polaris/etc
    $ sudo cp polaris-lb.yaml.dist polaris-lb.yaml
    $ sudo cp polaris-health.yaml.dist polaris-health.yaml
    $ sudo cp polaris-pdns.yaml.dist polaris-pdns.yaml
    $ sudo cp polaris-topology.yaml.dist polaris-topology.yaml
    
    $ sudo cp /opt/polaris/etc/pdns.conf.dist /etc/pdns/pdns.conf
    $ cd /opt/polaris/etc
    $ sudo cp polaris-lb.yaml.dist polaris-lb.yaml
    $ sudo cp polaris-health.yaml.dist polaris-health.yaml
    $ sudo cp polaris-pdns.yaml.dist polaris-pdns.yaml
    $ sudo cp polaris-topology.yaml.dist polaris-topology.yaml
    $ sudo cp -a /opt/polaris/bin/polaris-health /etc/init.d/polaris-health
    $ sudo chkconfig polaris-health on
    
    $ sudo cp /opt/polaris/etc/pdns.conf.dist /etc/pdns/pdns.conf
    $ cd /opt/polaris/etc
    $ sudo cp polaris-lb.yaml.dist polaris-lb.yaml
    $ sudo cp polaris-health.yaml.dist polaris-health.yaml
    $ sudo cp polaris-pdns.yaml.dist polaris-pdns.yaml
    $ sudo cp polaris-topology.yaml.dist polaris-topology.yaml
    
  6. Узнайте внутренний адрес виртуальной машины:

    $ hostname -i
    
  7. В конфигурационном файле pdns.conf укажите внутренний IP-адрес виртуальной машины. Вы можете отредактировать конфигурационный файл с помощью утилиты nano:

    Ubuntu 16/18
    CentOS 6/7
    $ sudo nano /etc/powerdns/pdns.conf
    
    $ sudo nano /etc/pdns/pdns.conf
    

    Файл pdns.conf имеет вид:

    # Polaris specific PDNS configuration
    
    #################################
    # launch    Which backends to launch and order to query them in
    #
    # Python3 binary must be in the $PATH!
    launch=remote
    remote-connection-string=pipe:command=/opt/polaris/bin/polaris-pdns,timeout=2000
    
    local-address=<INTERNAL IP ADRESS>
    
    #################################
    # distributor-threads   Default number of Distributor (backend) threads to start
    #
    # distributor-threads=3
    
    # logs received from a Polaris remotebackend will be logged from loglevel 6
    #
    # loglevel=6
    
    # If not using the topology load balancing method, comment out the caching
    # options below to greatly improve the backend performance
    
    #################################
    # cache-ttl Seconds to store packets in the PacketCache
    #
    # cache-ttl=20
    cache-ttl=0
    
    #################################
    # negquery-cache-ttl    Seconds to store negative query results in the QueryCache
    #
    # negquery-cache-ttl=60
    negquery-cache-ttl=0
    
    #################################
    # query-cache-ttl   Seconds to store query results in the QueryCache
    #
    # query-cache-ttl=20
    query-cache-ttl=0
    

    Укажите внутренний IP-адрес в значении параметра local-address вместо <INTERNAL IP ADRESS>.

  8. Настройте polaris-gslb. Вы можете отредактировать конфигурационные файлы с помощью утилиты nano:

    1. $ sudo nano /opt/polaris/etc/polaris-lb.yaml

      Файл polaris-lb.yaml имеет вид:

      pools:
          www-example:
              monitor: http
              monitor_params:
                  hostname: www.example.com
                  url_path: /
              lb_method: wrr
              fallback: any
              members:
              - ip: <dns-lb-tutorial-web-ru-central1-a PUBLIC IP>
                name: dns-lb-tutorial-web-ru-central1-a
                weight: 1
              - ip: <dns-lb-tutorial-web-ru-central1-b PUBLIC IP>
                name: dns-lb-tutorial-web-ru-central1-b
                weight: 1
      
      globalnames:
          www.example.com:
              pool: www-example
              ttl: 1
      

      Укажите в файле:

      • Вместо www.example.com — имя вашего домена.
      • Вместо <dns-lb-tutorial-web-ru-central1-a PUBLIC IP> — публичный IP-адрес виртуальной машины dns-lb-tutorial-web-ru-central1-a.
      • Вместо <dns-lb-tutorial-web-ru-central1-b PUBLIC IP> — публичный IP-адрес виртуальной машины dns-lb-tutorial-web-ru-central1-b.

      Публичный адрес виртуальной машины вы можете найти в блоке Сеть на странице виртуальной машины в консоли управления.

    2. $ sudo nano /opt/polaris/etc/polaris-pdns.yaml

      Файл polaris-pdns.yaml имеет вид:

      ###############################
      # SOA record format
      # MNAME                RNAME                           SERIAL REFRESH RETRY EXPIRE MINIMUM
      # polaris.example.com. hostmaster.polaris.example.com. 42     3600    600   86400  1
      
      ###############################
      # SOA MNAME, must end with a dot.
      #
      SOA_MNAME: dns-lb-tutorial-slb-ru-central1-a.example.com.
      
      ###############################
      # SOA_RNAME, must end with a dot.
      #
      SOA_RNAME: hostmaster.example.com.
      
      ###############################
      # SOA serial can either be an absolute numeric value e.g. 1(default), or "auto",
      # which automatically sets the serial to seconds since the epoch of the last state
      # update.
      #
      # SOA_SERIAL: 1
      
      ###############################
      # SOA REFRESH
      #
      # SOA_REFRESH: 3600
      
      ###############################
      # SOA RETRY
      #
      # SOA_RETRY: 600
      
      ###############################
      # SOA EXPIRE
      #
      # SOA_EXPIRE: 86400
      
      ###############################
      # SOA MINIMUM
      #
      # SOA_MINIMUM: 1
      
      ###############################
      # TTL to set on SOA record
      #
      # SOA_TTL: 86400
      
      ################################
      # Whether to log a detailed request/response information to pdns.
      # If set to "true", pdns.conf "loglevel" option must be set to 6 or higher.
      #
      # Setting to "false" will improve the backend performance.
      #
      # LOG: false
      
      ################################
      # Memcache hostname/ip:port to use e.g. "192.168.1.10:12345",
      # if port is omitted the default memcache port is used.
      #
      # SHARED_MEM_HOSTNAME: 127.0.0.1
      

      Укажите в файле вместо www.example.com — имя вашего домена.

  9. Если на виртуальной машине установлена ОС CentOS 6, пропустите этот шаг.

    Настройте проверки состояния для polaris-gslb:

    1. Добавьте systemd Unit файл для проверки состояния polaris-gslb. Вы можете отредактировать файл с помощью утилиты nano:
      $ sudo mkdir -p /etc/systemd/system
      $ sudo nano /etc/systemd/system/polaris-health.service
      
      Приведите polaris-health.service файл к виду:
      [Unit]
      Description=Polaris-GSLB Health Check
      After=network-online.target
      
      [Service]
      ExecStart=/opt/polaris/bin/polaris-health start
      Type=forking
      Restart=on-failure
      RestartSec=1
      StartLimitInterval=0
      
      [Install]
      WantedBy=multi-user.target
      
    2. Добавьте polaris-health в автозагрузку операционной системы:
      $ sudo systemctl enable polaris-health
      
  10. Перезапустите PowerDNS:

    $ sudo service pdns restart
    
  11. Запустите проверку состояния polaris-health:

    $ sudo service polaris-health start
    
  12. Этот шаг нужно выполнять только на виртуальной машине с ОС CentOS 6.

    Откройте сетевой порт 53 с помощью утилиты iptables:

    $ sudo iptables -I INPUT -p tcp -m tcp --dport 53 -j ACCEPT
    $ sudo iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT
    $ sudo iptables-save | sudo tee /etc/sysconfig/iptables
    

Настройте DNS

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

В инструкции ниже описана настройка внешнего DNS-сервиса на примере reg.ru для доменных имен www.example.com и example.com.

Чтобы настроить внешний DNS-сервер, выполните:

  1. Найдите публичные IP-адреса виртуальных машин dns-lb-tutorial-slb-ru-central1-a и dns-lb-tutorial-slb-ru-central1-b в блоке Сеть на страницах виртуальных машин в консоли управления.
  2. Войдите в панель управления внешнего DNS-сервиса. Перейдите в список ваших доменов и нажмите на имя нужного домена.
  3. Создайте две A-записи:
    • Для виртуальной машины dns-lb-tutorial-slb-ru-central1-a:
      • IP Address — публичный IP-адрес вашей виртуальной машины.
      • Subdomain — dns-lb-tutorial-slb-ru-central1-a.
    • Для виртуальной машины dns-lb-tutorial-slb-ru-central1-b:
      • IP Address — публичный IP-адрес вашей виртуальной машины.
      • Subdomain — dns-lb-tutorial-slb-ru-central1-b.
  4. Создайте 2 NS-записи со значениями полей:
    • Для виртуальной машины dns-lb-tutorial-slb-ru-central1-a:
      • Subdomain — www.
      • Canonical name — dns-lb-tutorial-slb-ru-central1-a.example.com..
    • Для виртуальной машины dns-lb-tutorial-slb-ru-central1-b:
      • Subdomain — www.
      • Value — dns-lb-tutorial-slb-ru-central1-b.example.com..
  5. Подождите 15-20 минут, пока изменения DNS-записей вводятся в действие. Время ожидания может отличаться для вашего DNS-сервиса.

Протестируйте отказоустойчивость

DNS-балансировщики

  1. В блоке Сеть на странице виртуальной машины в консоли управления найдите публичный IP-адрес виртуальной машины dns-lb-tutorial-slb-ru-central1-a.
  2. Подключитесь к виртуальной машине по протоколу SSH.
  3. Остановите сервис DNS, чтобы сымитировать сбой в работе DNS-баласировщика:
    $ sudo service pdns stop
    
  4. Подключитесь к вашему веб-сайту через браузер. Несмотря на сбой в работе одного из DNS-балансировщиков, подключение должно пройти успешно.
  5. После завершения проверки запустите сервис DNS:
    $ sudo service pdns start
    

Веб-серверы

  1. В блоке Сеть на странице виртуальной машины в консоли управления найдите публичный IP-адрес виртуальной машины dns-lb-tutorial-web-ru-central1-a.

  2. Подключитесь к виртуальной машине по протоколу SSH.

  3. Остановите веб-сервис, чтобы сымитировать сбой в работе веб-сервера:

    LAMP
    LEMP
    $ sudo service apache2 stop
    
    $ sudo service nginx stop
    
  4. Подключитесь к вашему веб-сайту через браузер. Несмотря на сбой в работе одного из веб-серверов, подключение должно пройти успешно.

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

    LAMP
    LEMP
    $ sudo service apache2 start
    
    $ sudo service nginx start
    

Как удалить созданные ресурсы

Чтобы перестать платить за развернутые серверы, достаточно удалить созданные виртуальные машины dns-lb-tutorial-web-ru-central1-a и dns-lb-tutorial-web-ru-central1-b.

В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Подготовьте сетевую инфраструктуру
  • Создайте виртуальные машины с предустановленным веб-сервером
  • Загрузите файлы веб-сайта
  • Создайте виртуальные машины для DNS-балансировщиков
  • Установите и настройте ПО DNS-балансировщика
  • Настройте DNS
  • Протестируйте отказоустойчивость
  • DNS-балансировщики
  • Веб-серверы
  • Как удалить созданные ресурсы
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»