Возникла ошибка тайм-аута соединения, когда связь между двумя экземплярами веб-сервера через порт 8888 и коммутатором L4.
Моя конфигурация следующая:
У меня есть два физических сервера, на каждом из которых есть экземпляр веб-сервера, работающий на порту 8888 и один коммутатор L4.
Балансировка нагрузки на серверы обоих экземпляров - это коммутатор L4.
У меня проблема, когда я получаю файл contentA с обоих серверов через коммутатор L4, где файл contentA.zip существует на сервере, на котором работает каждый экземпляр веб-сервера.
Я протестировал четыре сценария с помощью утилиты wget.
Предварительные условия:
- URL-адрес файла contentA.zip http://ipaddress:8888/mydir/contentA.zip
- Оба экземпляра веб-сервера прослушивают порт 8888 на server_ # 1 и server_ # 2.
- Каждый физический сервер имеет свой собственный IP-адрес, VitualIP для sw L4,RealIP_1 для server_ # 1 и RealIP_2 для server_ # 2.
- L4 swith может обрабатывать соединения от серверов через порт 8888 для балансировки нагрузки.
Тестирование:
- У меня есть файл contentA.zip успешно, когда экземпляр server_ # 1 не работает, а server_ # 2 работает.
wget -c http://VirtualIP:8888/mydir/contentA.zip (запросна сервере № 1)
Я получаю правильный файл contentA.zip, когда экземпляр server_ # 1 работает, а server_ # 2 не работает.
wget -c http://VirtualIP:8888/mydir/contentA.zip(request на server_ #2)
Истекло время ожидания соединения, когда server_ # 1 запущен, а server_ # 2 активен.
wget -c http://VirtualIP:8888/mydir/contentA.zip (запрос на server_ # 1)
wget -c http://VirtualIP:8888/mydir/contentA.zip (запрос на сервере_2)
Наконец, следующие команды выполняются успешно, когда server_ # 1 запущен, а server_ # 2 запущен.
wget -c http://RealIP_2:8888/mydir/contentA.zip (запрос на server_ # 1)
wget -c http://RealIP_1:8888/mydir/contentA.zip (запрос на server_ # 2)
В случае № 3, я думаю, что это какая-то проблема маршрутизации, так что я могу найти ещесведения об ошибке тайм-аута соединения программно на стороне клиента?
У меня мало знаний о коммутаторе L4, но я хочу найти подсказку, что коммутатор не может маршрутизировать эти соединения обоих экземпляров сервера на стороне клиента.
В Java спростая программа сокета клиента, я получил исключение тайм-аута сокета.
Есть ли какие-либо подходы, которые я могу достигнуть этой ситуации? ... как сырое программирование сокетов? Коммутатор L4 для меня как черный ящик.
Команда ping и traceroute для коммутатора достижима. Два физических сервера подключены к коммутатору напрямую.
Буду признателен за любую помощь заранее.