У меня есть 3 виртуальных машины в Azure, на которых работает кластер Elasticsearch, и поверх них есть Azure балансировщик нагрузки.
У меня есть сценарий Powershell, который работает как Azure Function App каждый день и снимая / удаляя снимки ES.
скрипт выглядит примерно так (принимающее участие):
$url = "http://<IP>:9200/_snapshot/<RepoName>/<SnapshotName>?wait_for_completion=true"
$body = @{
"indices" = "<Name>";
"ignore_unavailable" = $true;
"include_global_state" = $false
}
$header = @{
"Content-Type" = "application/json"
Invoke-WebRequest -Method Put -Uri $url -Body (ConvertTo-Json $body) -Headers $header -UseBasicParsing
Когда я использую IP-адреса виртуальных машин (пробовал на каждом из их) все работает нормально. Однако, когда я пытаюсь использовать IP-адрес балансировщика нагрузки, , иногда , это удается, а иногда он зависает до тех пор, пока не истечет время ожидания, хотя моментальный снимок создается за короткое время. (например, в прошлый раз, когда для создания снимка потребовалось 5 минут, но время ожидания сценария достигло 2 часов)
Я не могу понять причину - это определенно что-то с LB, но я не знаю, что может вызвать тайм-аут только в некоторых случаях (и не всегда).
Я думал, что это может быть связано с таймаутом простоя правила LB (который устанавливается на 4 минуты ), но были случаи, когда мы получали "подтверждение истины" даже через 9 минут после начала создания снимка.
Кто-нибудь знает, что могло вызвать такое поведение?
Спасибо, Афик