Экземпляры WCS на Google Cloud Platform поддерживают балансировку нагрузки при помощи TCP Network Load Balancer.
При этом WebSocket-соединения будут автоматически распределены между активными серверами в балансировщике нагрузки. В случае применения заданной политики масштабирования (если целевой показатель, например, загрузка процессора на сервере, достиг заданного значения) будут запущены новые экземпляры сервера и автоматически добавлены в балансировщик.
Для настройки необходимо создать следующие компоненты
- Образ диска, который будет использоваться в шаблоне при создании нового экземпляра
- Шаблон, на основе которого будут создаваться новые экземпляры сервера при масштабировании
- Группа масштабирования
- Балансировщик нагрузки
- Настройки контроля активности сервера
Рассмотрим пример развертывания CDN для доставки WebRTC потоков, состоящей из одного Origin и группы масштабирования Edge (от 1 до 3 экземпляров) с масштабированием по загрузке процессора.
Подготовка серверов
1. Разверните Origin и Edge серверы, как описано здесь. Назначьте Origin серверу статический внутренний IP адрес. Зарезервируйте статический внешний IP адрес для балансировщика.
2. Настройте CDN на стороне Origin сервера
cdn_enabled = true cdn_ip = <origin_internal_ip> cdn_role = origin cdn_nodes_resolve_ip = false
3. Настройте CDN на стороне Edge сервера
cdn_enabled = true cdn_ip = <edge_internal_ip> cdn_point_of_entry = <origin_internal_ip> cdn_role = edge cdn_nodes_resolve_ip = false
4. В настройке Edge сервера укажите параметр
http_enable_root_redirect=false
5. Подготовьте и импортируйте SSL сертификаты на Origin и Edge серверы. Не рекомендуется использовать Let'sEncrypt, поскольку это приведет к необходимости обновлять образ диска Edge сервера каждые три месяца.
Создание образа диска Edge сервера
1. Остановите экземпляр Edge сервера
2. Перейдите в раздел "Compute Engine - Images", нажмите "Create image". Выберите в качестве диска-источника диск экземпляра Edge сервера и нажмите Create
После создания образа диска не удаляйте исходный экземпляр Edge сервера, он потребуется при изменении настроек.
Создание шаблона Edge сервера
1. Перейдите в раздел "Compute Engine - Instance templates", нажмите "Create image". Выберите конфигурацию ВМ
2. В разделе "Boot disk" нажмите "Change"
На вкладке "Custom images" выберите образ диска Edge сервера
3. На вкладке "Security" добавьте публичный ключ для доступа к серверу по SSH, если у Вас нет ключей, привязанных к проекту, и нажмите "Create"
Создание группы масштабирования
1. Перейдите в раздел "Compute Engine - Instance groups", нажмите "Create instance group". Выберите регион и зону расположения группы, укажите шаблон Edge сервера
2. Выберите режим "Autoscale" по метрике "CPU utilization", укажите целевую величину 80% и максимальное количество экземпляров 3
3. Включите проверку состояния ВМ (Auto healing) и создайте настройку проверки сервера. Укажите протокол TCP, порт 8081 и запрос /health-check
Настройте критерии проверки и нажмите "Create" для возврата к редактированию группы
4. Разверните пункт "Advanced creation options" и установите переключатель "Do not retry machine creation", затем нажмите "Create"
Группа масштабирования будет создана, и один экземпляр будет запущен
Создание балансировщика нагрузки
1. Перейдите в раздел "Network – Load balancers" и нажмите "Create load balancer". Выберите "TCP Load Balancing"
2. Выберите внешний балансировщик "From internet to my VMs" и регион расположения балансировщика
3. В разделе "Backend configuration", на вкладке "Select existing instance groups" выберите группу масштабирования Edge серверов и укажите привязку сессии к IP и протоколу клиента
4. Выберите "Create health check". Создайте настройку проверки сервера, укажите порт 8081 и запрос /
5. В разделе "Frontend configuration" создайте конфигурации для TCP портов 8081, 8080, 8443, 8444 для HTTP(S) и WS(S). Укажите статический внешний IP адрес для балансировщика
Вы можете добавить другие необходимые порты (1935 для RTMP подписчиков, 8082, 8445 для HLS и т.д в зависимости от сценария использования Edge серверов)
6. Нажмите "Create". Балансировщик нагрузки запустится
Тестирование балансировщика нагрузки
1. Войдите в веб интерфейс Origin сервера, опубликуйте поток test в примере Two Way Streaming
2. Войдите в веб-интерфейс Edge сервера, используя IP адрес балансировщика нагрузки. Проиграйте поток test в примере Player
Изменение настроек Edge серверов
Для того, чтобы изменить настройки Edge серверов в группе масштабирования, например, обновить SSL сертификаты, необходимо обновить образ диска Edge сервера следующим образом:
1. Отключите масштабирование и удалите все экземпляры Edge серверов в группе
2. Запустите исходных экземпляр Edge сервера
3. Внесите необходимые изменения в настройки (например. обновите SSL сертификаты)
4. Остановите исходный экземпляр Edge сервера
5. Удалите образ диска Edge сервера
6. Создайте новый образ диска Edge сервера с тем же именем образа (например test-edge-image-1)
7. Включите масштабирование в группе (настройки масштабирования при этом сохранятся)