У меня есть кластер Elasticsearch в VPN.
Как мое приложение Spring Boot может безопасно получить доступ к кластеру, если он расположен на отдельном сервере за пределами VPN, и как я могу настроить его в конфигурации загрузки Spring (application.yml / application.properties)?
Я также хочу, чтобы приложение подключалось к кластеру таким образом, чтобы, например, 2 основных соответствующих узла и один выходит из строя, соединение остается неизменным.
если у вас есть только 2 основных подходящих узла, вы рискуете получить «проблему расщепления мозга». есть простая формула для расчета необходимого количества мастер-узлов:
M = 2F +1 (m = количество главных узлов, f = количество главных узлов, которые могут выйти из строя одновременно)
в вашем приложении определите все главные узлы как целевые для клиента elasticsearch. Клиент будет обрабатывать отказоустойчивость. см. документацию клиента elasticsearc или https://qbox.io/blog/rest-calls-made-easy-part-2-sniffing-elasticsearch для примера
vpn не должен обрабатываться вашим приложением. инфраструктура (сервер, межсетевой экран) - подходящее место для ее решения. попробуйте разработать независимую от среды приложения. это упростит разработку и поддержку вашего приложения, а также сделает его более устойчивым к изменениям инфраструктуры.
Спасибо, я разрешаю доступ к главным узлам + порту только с IP-адреса, на котором находится мое приложение.