Поскольку его очень просто реализовать, проще, чем решение, предоставляемое службой поддержки AWS, если оно слишком длинное, перейдите к выводу:
Насколько я понимаю, вы хотели бы знать, возможно ли перенаправить небольшую часть трафика на балансировщик нагрузки приложений.
Пример:
10% -> ALB X
90% -> ALB Y
Это возможно с взвешенной политикой маршрутизации53
Взвешенная маршрутизация позволяет связать несколько ресурсов с одним доменным именем (example.com) или именем субдомена (acme.example.com) и выбрать объем трафика, который будет перенаправляться на каждый ресурс. Это может быть полезно для различных целей, включая распределение нагрузки и тестирование новых версий программного обеспечения.
Чтобы настроить взвешенную маршрутизацию, вы создаете записи с одинаковыми именами и типами для каждого из ваших ресурсов. Вы назначаете каждой записи относительный вес, который соответствует тому, сколько трафика вы хотите отправить на каждый ресурс. Amazon Route 53 отправляет трафик ресурсу на основе веса, который вы назначаете записи в виде доли от общего веса всех записей в группе:
Например, если вы хотите отправить крошечную часть вашего трафика на один ресурс, а остальные на другой ресурс, вы можете указать весовые коэффициенты 1 и 255. Ресурс с весом 1 получает 1/255-ую часть трафика. (1/1 + 255), а другой ресурс получает 255 / 256ths (255/1 + 255). Вы можете постепенно менять баланс, меняя вес. Если вы хотите прекратить отправку трафика на ресурс, вы можете изменить вес этой записи на 0.
Также я понимаю, что из вашего примера, если вы пытались направить 10% нашего API-трафика через отдельный балансировщик нагрузки и видели спорадические всплески трафика, которые не соответствовали нашему весу (намного выше, чем 10%).
Я беру пример весов 50:50 для объяснения согласованности трафика.
Взвешенные политики маршрутизации в Route 53 позволяют имитировать балансировку нагрузки, назначая вес для каждой записи, связанной с доменным именем.
Способ, которым это работает, заключается в том, что серверы имен Route 53 будут возвращать IP-адрес каждой записи пропорционально предоставленному им весу.
Это означает, что если вы присвоите 50 весов одной записи и 50 весов другой записи, например записи A (вес: 50) и записи B (вес: 50), а серверы имен будут запрашиваться для имени хоста 100 время серверы имен будут возвращать IP-адрес, назначенный для записи A 50 раз, и IP-адрес, назначенный для записи B 50 раз.
Это, однако, не означает, что каждый запрос DNS будет приводить к согласованному количеству запросов, достигающих каждой конечной точки.
Имейте в виду, что взвешенная DNS-маршрутизация не равняется балансировке нагрузки и не может гарантировать, что запросы, поступающие на взвешенные записи ресурсов, будут в точности равны.
Это вызвано несколькими факторами, включая кэширование DNS на клиентских серверах кэширования DNS. Если один клиент получает IP-адрес записи A, он будет хранить его в своем локальном кэше в течение срока действия TTL записи DNS, который в настоящее время для вашей записи является текущим. 60 секунд За это время клиент может создать несколько запросов, в то время как в то же время клиент, получивший IP-адрес записи B, может отправить один запрос.
Другими словами, хотя DNS-взвешенная маршрутизация (или взвешенная циклическая перестановка) не обеспечивает истинного распределения нагрузки, и нельзя ожидать, что она приведет к точному соответствию веса входящего трафика конечным точкам.