Несколько серверов Apache mod_jk, указывающих на одного и того же рабочего Tomcat?
У нас есть один сервер приложений Tomcat и один интерфейсный веб-сервер под управлением Apache и mod_jk. Можем ли мы добавить второй интерфейсный веб-сервер, который указывает на тот же сервер приложений, а также на котором работают Apache и mod_jk?
Мы не хотим делать это по причинам балансировки нагрузки. Скорее это по причинам миграции. Новый веб-сервер будет совершенно другой ОС и будет использовать другой модуль аутентификации SSO. Мы хотим иметь возможность ставить и тестировать его, переключать запись DNS, чтобы она работала, и выводить из эксплуатации старый сервер.
Текущий файл worker.properties выглядит следующим образом:
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=10.x.x.x
worker.worker1.port=8009
Могу ли я просто скопировать эту конфигурацию на второй веб-сервер?
У меня нет никакого опыта или опыта в этом, но меня попросили помочь с миграцией сервера, и я стараюсь изо всех сил помочь.
Я читал документацию для mod_jk и Tomcat. Я нашел все виды документации по указанию одного экземпляра mod_jk на несколько серверов приложений Tomcat, но ничего не описывает противоположное тому, чего я пытаюсь достичь?
Это возможно?
Изменить: я должен отметить, что у нас нет доступа к серверу Tomcat, так как он управляется сторонним поставщиком. Я уверен, что они внесут изменения, если мы спросим их, но у нас нет возможности войти в него самостоятельно.
3 ответа
Да, конечно ты можешь. Я делал это несколько раз, даже для того, чтобы просто изменить статические файлы, обслуживаемые Apache (js, images, css), и протестировать приложение Tomcat с другой "оболочкой".
Обычно при создании системы высокой доступности реплицируются не только серверы Tomcat или любые другие внутренние серверы, либо реплицируется внешний интерфейс Apache или IIS или любой другой используемый сервер.
Как вы сказали, все должно быть просто скопировать файл worker.properties и правила отображения в файлы Apache httpd *.conf.
Кроме того, проверьте с командой управления tomcat, что входящие соединения с портом AJP Tomcat не ограничены сетевыми правилами или брандмауэрами, что позволяет только старому Apache получить доступ к Tomcat.
Да, дублирование будет самым легким. Наиболее важным ** является сохранение имени работника одинаковым.
Одна проблема заключается в том, что Tomcat имеет достаточно соединений, доступных для обработки обоими веб-серверами. Обычные значения по умолчанию, как правило, достаточно высоки, но если вы попытаетесь провести стресс-тестирование, серверу Tomcat может потребоваться сумма рабочих ресурсов, доступных на веб-серверах. Но если вам не хватает, Tomcat записывает предупреждение в журналы.
** Самое важное - Хорошо - Не так важно, так как вы не используете липкие сессии. Но может сбить с толку позже, если вы попробуете этот эксперимент с 2 котами при переключении между веб-серверами.
Могу ли я просто скопировать эту конфигурацию на второй веб-сервер?
Да, конечно, поскольку вы хотите подключиться к тому же серверу Tomcat, чтобы вы могли просто скопировать worker.properties
от экземпляра Apache 1 до экземпляра Apache 2. Если у вас есть только эти 4 свойства, то ничего, но если у вас есть некоторые свойства, такие как worker.worker1.cachesize=10
или же worker.worker1.cache_timeout=600
и вы хотите поиграть, а затем изменить его. Но суть в том, что, поскольку вы хотите поразить тот же экземпляр Tomcat, вы можете просто скопировать.
Понимание этого не в форме кота - у вас может быть более 1 веб-сервера HTTP, такого как Apache, который перехватывает все запросы и затем пересылает его одному и тому же приложению или веб-серверу. Однако это не распространено, потому что обычным делом является балансировка нагрузки веб-сервера на запросы к серверам внутренних приложений.
Я читал документацию для mod_jk и Tomcat. Я нашел все виды документации по указанию одного экземпляра mod_jk на несколько серверов приложений Tomcat, но ничего не описывает противоположное тому, чего я пытаюсь достичь?
Это возможно?
Вы не могли найти ни одного из этих чтений, потому что то, что вы пытаетесь сделать, является угловым случаем, обычно люди настраивают нескольких рабочих Tomcat для обслуживания сервлетов от имени определенного веб-сервера для достижения балансировки нагрузки, виртуального хостинга и т. Д.
Вы упомянули, что вы делаете все это для того, чтобы протестировать Apache, работающий на разных ОС и использующий разные SSO. Я предполагаю, что аппаратный балансировщик нагрузки не установлен перед вашими веб-серверами (Apache), так как вы собираетесь использовать свой новый Apache? Я думаю, что вам нужно сделать это явно, потому что ваш текущий URL будет указывать на ваш первый Apache, поэтому, чтобы поразить второй / новый Apache, вам нужно дать своим тестировщикам / пользователям URL, содержащий конечную точку (IP: порт) второго / нового Apache. Даже если вы делаете все это локально, вам все равно нужно, чтобы ваш второй Apache прослушивал другой порт, или может быть другой IP, но это не распространено.