Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Образ, на основе которого будут создаваться новые экземпляры сервера при масштабировании
  • Балансировщик нагрузки
  • Конфигурация для запуска
  • Группа масштабирования

Запуск классического балансировщика нагрузки на базе собственного образа с автоматическим масштабированием

Создание балансировщика нагрузки с автомасштабированием на базе собственного образа полезно для длительной эксплуатации (месяцы, годы). В этом случае базовый образ из AWS Marketplace обойдется дороже из-за почасовой оплаты, поэтому рекомендуется приобрести и активировать собственную лицензию WCS.

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

1. Создание образа

1.1. Создайте экземпляр из готового образа FlashphonerWebCallServer AMI и настройте WCS

...

4.5. Завершите создание группы масштабирования

Запуск балансировщика нагрузки для приложений с использованием существующих серверов

В некоторых случаях набор серверов уже запущен и настроен (например, группа Origin серверов в CDN), и требуется организовать балансировку нагрузки между этими серверами. Для решения этой задачи предназначен Application Load Balancer.

1. Запуск серверов

Запустите и настройте необходимое количество серверов, как описано здесь.

2. Создание балансировщика нагрузки

2.1. Перейдите в боковом меню EC2 Console в раздел "Load balancers - Load balancers" и нажмите "Create load balancer". В окне мастера создания балансировщика нажмите Create для Application Load Balancer

Image Added

2.2. Введите имя балансировщика, выберите тип Internet-facing (предлагается по умолчанию)

Image Added

2.3. В разделе Network mapping выберите необходимые подсети

Image Added

2.4. Выберите или создайте необходимые security groups

Image Added

Обратите внимание, что в security group для балансировщика должен быть открыт стандартный набор портов WCS (пример)

Image Added

2.5. В разделе Listeners and routing добавьте Websocket port (обязательно) и HTTP порт (по необходимости)

Image Added

Для каждого из портов создается целевая группа (target group), см ниже.

2.6. Внизу страницы нажмите Create load balancer

Image Added

Создание балансировщика завершено

Image Added

3. Создание целевой группы для Websocket порта

3.1. Выберите тип целей Instances (предлагается по умолчанию), задайте имя группы

Image Added

3.2. Укажите websocket порт WCS сервера (8080), выберите подсеть и версию протокола (HTTP1)

Image Added

3.3. В разделе Health check настройте проверку работоспособности сервера, используя HTTP порт (8081) и запрос страницы статистики /?action=stat

Image Added

и нажмите Next

Image Added

3.4. На странице Register targets выделите нужные серверы и нажмите Include as pending below

Image Added

Затем нажмите Register pending targets

Image Added

На этом создание целевой группы завершено

Image Added

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

4. Редактирование порта балансировщика

Если балансировщик создается для группы автоматического масштабирования (см ниже), при его создании нельзя выбрать порт HTTPS, только HTTP. В этом случае настройки порта следует изменить.

4.1. В разделе "Load balancers - Load balancers" выберите вкладку "Listeners" для нужного балансирощика. Выберите Websocket порт и нажмите Edit

Image Added

4.2. Выберите протокол HTTPS и задайте Secure Websocket порт (например, 8443)

Image Added

4.3. В разделе "Secure listener settings" выберите SSL-сертификат из имеющихся для использования для домена, который будет настроен для точки входа балансировщика, или создайте новый. Затем нажмите Save changes

Image Added

Настройки порта балансировщика изменены и применяются немедленно

Image Added

Запуск балансировщика нагрузки для приложений на базе образа из AWS Marketplace с автоматическим масштабированием

Создание балансировщика нагрузки с автомасштабированием на базе образа из AWS Marketplace полезно для периодического запуска группы серверов, например, при проведении мероприятия (длительностью в часы, дни, недели). В этом случае собственная лицензия с помесячной оплатой обойдется дороже, поэтому на короткие промежутки времени рекомендуется использовать образ из Marketplace.

1. Создание

...

Создайте балансировщик нагрузки, как описано выше

...

шаблона запуска (Launch Template)

21.1. Перейдите в боковом меню EC2 Console в раздел "Instances - Launch Templates" и нажмите "Create launch template". Откроется мастер создания шаблонов запуска. Введите имя и описание шаблона.

21.2. Выберите последний образ FlashphonerWebCallServer

21.3. Выберите тип ВМ, пару ключей для доступа к экземпляру по SSH, группу безопасности

21.4. Задайте размер и параметры диска для экземпляров, создаваемых на базе этого шаблона

21.5. Разверните раздел формы "Advanced details". В поле "User data" введите скрипт для обновления и настройки WCS

...

Code Block
languagebash
themeRDark
titleEdge setup script
collapsetrue
#!/bin/bash

# Stop WCS before reconfiguring
PID="$(pgrep -f 'com.flashphoner.server.Server' | grep -v bash)"
if [ -n "$PID" ]; then
    service webcallserver stop
fi

# Update WCS to the latest build (optionally, set to false if you don't)
UPDATE=true
if $UPDATE; then
    cd /tmp
    wget --timeout=10 --no-check-certificate https://flashphoner.com/download-wcs5.2-server.tar.gz -O wcs5-server.tar.gz
    if [ $? -eq 0 ]; then
        mkdir -p FlashphonerWebCallServer-5.2-latest && tar xzf wcs5-server.tar.gz -C FlashphonerWebCallServer-5.2-latest --strip-components 1
        cd FlashphonerWebCallServer-5.2-latest
        chmod +x install.sh
        ./install.sh -silent
        cd ..
        rm -rf FlashphonerWebCallServer-5.2-latest wcs5-server.tar.gz
    fi
fi

# Configuration setup
WCS_CONFIG=/usr/local/FlashphonerWebCallServer/conf/flashphoner.properties
JVM_CONFIG=/usr/local/FlashphonerWebCallServer/conf/wcs-core.properties
USERS_CONFIG=/usr/local/FlashphonerWebCallServer/conf/database.yml

#CDN settings
CDN_ROLE=edge
CDN_IP=0.0.0.0
CDN_POINT_OF_ENTRY=172.31.43.82
echo -e "\ncdn_enabled=true" >> $WCS_CONFIG
echo -e "\ncdn_ip=$CDN_IP" >> $WCS_CONFIG
echo -e "\ncdn_role=$CDN_ROLE" >> $WCS_CONFIG
echo -e "\ncdn_point_of_entry=$CDN_POINT_OF_ENTRY" >> $WCS_CONFIG
echo -e "\ncdn_nodes_resolve_ip=false" >> $WCS_CONFIG

# Configure heap settings
HEAP_SIZE=512m
sed -i -e "s/^\(-Xmx\).*\$/\1$HEAP_SIZE/" $JVM_CONFIG

# Disable demo user (optionally, set to true if you want to disable)
DISABLE_DEMO=false
if $DISABLE_DEMO; then
 if grep "demo:" $USERS_CONFIG > /dev/null 2>&1; then
  sed -i -e "/demo:/s/active:\ true/active:\ false/" $USERS_CONFIG
 fi
fi

# Start WCS after reconfiguring
PID="$(pgrep -f 'com.flashphoner.server.Server' | grep -v bash)"
if [ -n "$PID" ]; then
    service webcallserver restart
else
    service webcallserver start
fi

# Disable internal firewall, ports are allowed/blocked on security group level
iptables -F

21.6. Нажмите "Create launch template"

...

Шаблон запуска будет создан

Image Modified

...

2. Создание группы масштабирования

32.1.  Перейдите Перейдите в боковом меню EC2 Console в раздел "Instances - Auto Scaling Groups" и нажмите "Create an Auto Scaling Group". Откроется мастер создания группы. Введите имя группы

Image Modified

32.2. 1 Выберите шаблон запуска, укажите версию "Latest"

Image Modified

2.3. 2. Укажите соотношение между используемыми ВМ (по требованию/с аукциона). По умолчанию предлагается 70 % по требованию, рекомендуется указать 100 %

Image Modified

32.4 Выберите типы создаваемых ВМ

Image Modified

32,5. Выберите сеть и подсети для создаваемых ВМ

Image Modified

32.6. Выберите "Classic Load Balancer", укажите имя балансировщика, созданного выше

Image Removed

3.7Attach to a new load balancer"

Image Added

2.7. Выберите тип балансировщика "Application Load balancer", задайте имя, выберите Internet-facing, укажите зоны доступности и соответствующие подсети

Image Added

2.8. В разделе "Listeners and routing" укажите Websocket порт (8080), выберите "Create a target group" и укажите имя целевой группы. которая будет создана

Image Added

Затем нажмите Next

Image Added

2.9. Задайте максимальный размер группы

Image Modified

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

Image Modified

32.911. Проверьте параметры группы

Image Modified

32.1012. Нажмите "Create Auto Scaling group"

Image Modified

Будет создана группа масштабирования, и запущен один экземпляр в группе

Image Modified

2.13. Измените параметры порта созданного балансировщика нагрузки, как описано выше

Тестирование

Если в балансировщике еще не запущено ни одного экземпляра сервера, новый экземпляр запустится в момент, когда будет создана группа масштабирования, получающая трафик от этого балансировщика. При выполнении условий масштабирования, будут созданы следующие экземпляры (Для загрузки процессора в ходе тестирования, может использоваться публикация потока с транскодингом, например, публикация RTMP потока в автоматически создаваемый микшер). Все запущенные экземпляры добавляются в соответствующий балансировщик.

...