Запуск приложения Spring Boot по нескольким адресам сервера

#java #spring #spring-boot #networking

#java #spring #spring-boot #сеть

Вопрос:

Просто любопытно об этом!!
У меня есть приложение spring boot, работающее на 10.0.0.1 (порт 9000), и тот же экземпляр имеет подсеть для 10.0.0.2
. Приложение работает с pid P1, как я могу привязать мое приложение Spring boot как к адресу сервера, который должен указывать на тот же процесс P1, так и на тот же порт 9000

 10.0.0.1:9000/api
10.0.0.2:9000/api 
 

Приложение должно быть доступно по обоим адресам сервера без использования create the new instance или new port,

Я пытался использовать обратный прокси и прокси, но все равно не повезло,
возможно ли это сделать?

https://access.redhat.com/solutions/873953 Выглядит что-то похожее на это весной.

Ответ №1:

Первый способ: найдите его 0.0.0.0 , который затем будет доступен на всех IP-адресах.

Второй способ: используйте обратный прокси, например nginx , который прослушивает 10.0.0.2: 9000 и перенаправляет на ваш spring. (вы упомянули, что это не работает. не могли бы вы предоставить более подробную информацию?)

Третий способ: пусть ваш spring прослушивает другой порт, скажем, 8888. затем используйте nginx для прослушивания как 10.0.0.1, так и 10.0.0.2 и пересылки. На самом деле в производственной среде это тоже очень распространено (установка обратного прокси перед фактической рабочей нагрузкой).

Комментарии:

1. Запуск его 0.0.0.0 сделает его доступным для системного IP-адреса, верно?

2. в-третьих, я должен создать другой экземпляр, который означает другой процесс, я пытаюсь выполнить привязку с тем же идентификатором процесса

3. использование прокси в nginx приводит к переадресации запросов, добавляет немного задержки, работает нормально, но ищет что-то без nginx

4. @BimalGangawal да, 0.0.0.0 для всех IP-адресов. на самом деле задержка пересылки запросов очень мала по сравнению с загрузкой spring … если вам действительно нужна высокая производительность, возможно, вам придется использовать фреймворк C / Rust или Netty для Java и т. Д., Но не spring… Другими словами, если вы используете Spring, дополнительная задержка (и дополнительный процессор и память) не является проблемой по сравнению со скоростью, процессором и памятью самого Spring

5. True согласился с тем, что при использовании spring будет дополнительная задержка, nginx еще больше увеличит это. то, что я ищу здесь, — это создание двух сокетов, привязанных к разным IP-адресам и одному и тому же порту, работающему с одним и тем же идентификатором процесса