
Может ли traceroute обнаружить балансировщик нагрузки, расположенный между сервером приложений и базой данных? После запуска traceroute от сервера приложений к базе данных я получил только один прыжок. Прыжок был целевой базой данных
решение1
Сначала давайте разберемся с тривиальным случаем: я предполагаю, что IP, который вы traceroute'или, на самом деле не принадлежит балансировщику нагрузки. Что было бы наиболее типичным случаем.
Если это не учитывать, то это означает, что вы пытаетесь обнаружить балансировщик нагрузки, который находится на вашем маршрутном (пересылочном) пути. Эти вещи называются сетевыми балансировщиками нагрузки (NLB). Traceroute распознает только определенный тип устройств — те, которые уменьшают поле TTL в пакете. Типичный маршрутизатор делает это, но NLB часто этого не делает.
В результате, глядя только на traceroute, невозможно с уверенностью сказать, был ли на пути NLB.
решение2
Короткий ответ: Нет.
Длинный ответ:
traceroute
предназначен для обнаружения router
. Они используются для передачи трафика из одной подсети IP (IP + МАСКА определяет подсеть) в другую.
Балансировщики нагрузки должны быть прозрачными для клиентов. Это означает, что они принимают трафик и пересылают его в тот или иной пункт назначения. Таким образом, для клиента это выглядит так, как будто они каждый раз обращаются к одному и тому же серверу, но в фоновом режиме запрос распределяется между двумя или более серверами по нескольким причинам (балансировка нагрузки, высокая доступность, ...).
Для вашего конкретного созвездия это выглядит так:
user-client <-> application server <-> database
ваш пользователь-клиент запрашивает ресурсы с сервера приложений, но сервер приложений является клиентом для базы данных, а не сам пользователь-клиент. Так что по сути вы не можете видеть базу данных за сервером приложений с точки зрения пользователя-клиента.
Если вы не создали это созвездие самостоятельно, вы не можете быть уверены.
Вы можете попробовать использовать Wireshark/tcpdump и попытаться проанализировать MAC-адреса, чтобы увидеть, откуда приходит ваш трафик.
решение3
Итак, балансировщик нагрузки предназначен для подключений к базе данных? Можете ли вы пинговать IP-адрес балансировщика нагрузки, а также пинговать базу данных напрямую? Есть несколько баз данных?
И мы говорим о подключении по локальной сети или сервер приложений и БД находятся по крайней мере в одной подсети, публичной или частной? Просто хочу убедиться, что вы не ожидаете перехода, отличного от БД или балансировщика нагрузки.
Трудно ответить конкретно без дополнительной информации, но если вы запускаете traceroute к IP-адресу балансировщика нагрузки, то именно там он должен завершиться. Если вы traceroute напрямую к IP-адресу базы данных... ну, именно там должен быть traceroute.
Я считаю, что большинство балансировщиков нагрузки баз данных на самом деле являются прокси-серверами, поэтому ваш traceroute «к базе данных» может попадать на балансировщик нагрузки... если это тот IP-адрес, который вы указываете.