Экземпляры WCS на Google Cloud Platform поддерживают балансировку нагрузки при помощи TCP Network Load Balancer.
При этом WebSocket-соединения будут автоматически распределены между активными серверами в балансировщике нагрузки. В случае применения заданной политики масштабирования (если целевой показатель, например, загрузка процессора на сервере, достиг заданного значения) будут запущены новые экземпляры сервера и автоматически добавлены в балансировщик.
Для настройки необходимо создать следующие компоненты
- Образ диска, который будет использоваться в шаблоне при создании нового экземпляра
- Шаблон, на основе которого будут создаваться новые экземпляры сервера при масштабировании
- Группа масштабирования
- Балансировщик нагрузки
- Настройки контроля активности сервера
Рассмотрим пример развертывания CDN для доставки WebRTC потоков, состоящей из одного Origin и группы масштабирования Edge (от 1 до 3 экземпляров) с масштабированием по загрузке процессора.
Подготовка серверов
1. Разверните Origin и Edge серверы, как описано здесь. Назначьте Origin серверу статический внутренний 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
Создание образа диска Edge сервера
1. Остановите экземпляр Edge сервера
2. Перейдите в раздел "Compute Engine - Images", нажмите "Create image". Выберите в качестве диска-источника диск экземпляра Edge сервера и нажмите Create
Создание шаблона 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