Наша установка предполагает наличие двух внешних WWW-серверов, использующих Apache1.3 и mod_jk, и двух серверов приложений с Tomcat. Нагрузка внешних серверов прозрачно балансируется с помощью sticky_sessions.
Однако иногда нам нужно проверять тот или иной внутренний сервер, чтобы устранить проблемы с синхронизацией (и т. Д.). В настоящее время наше единственное решение - отредактировать файл cookie «липкого сеанса» (т. Е. Изменить server1
в JSESSIONID=1L0NGS3SS10NSTR1NG.server1
), но это кажется непоследовательным и требует некоторого редактирования файлов cookie на низком уровне.
Есть ли здесь лучшее решение для «переопределения» балансировки нагрузки?
Запустите Apache на общедоступных серверах и используйте балансировщик нагрузки TCP для распределения нагрузки. Дайте каждому из интерфейсных серверов уникальное имя на его собственном IP-адресе и настройте Apache для ответа как на имя хоста с балансировкой нагрузки, так и на машинно-зависимое с одной и той же конфигурацией vhost. Тогда ты можешь просто ударить http://machine1.example.com/
или http://machine2.example.com/
для проверки каждой машины.
В моей конфигурации с балансировкой нагрузки приложение / status и приложение / jconsole сбалансированы по нагрузке, и если мне нужно увидеть определенного члена в моем кластере, я могу повторно обновлять эти два приложения, и требуется всего несколько обновлений, чтобы получить узел, который я хочу изучить, чтобы ответить.
просто измените конфигурацию mod_jk и удалите одного кота из кластера. после изящного перезапуска вашего apache каждый запрос переходит к желаемому коту. когда вы закончите тестирование, вы просто вернете второй tomcat в конфигурацию и снова выполните изящный перезапуск вашего apache.
вы также можете изменить lbfactor
кота, который вы хотите отключить, и выполните тот же изящный перезапуск.