Гид по технологиям

Настройка кластера Apache Tomcat на 3 узлах

• 5 min read • DevOps • Обновлено 24 Nov 2025
Настройка кластера Apache Tomcat
Настройка кластера Apache Tomcat

Схема кластера Tomcat

Коротко о задаче

Этот материал подходит для инженеров DevOps и администраторов, которые хотят организовать отказоустойчивый кластер Tomcat с репликацией сессий между узлами. В примере используется 3 узла на Ubuntu 18.04 (EC2 или локальные ВМ). Кластер обеспечивает репликацию HTTP-сессий и упрощённое развёртывание WAR через FarmWarDeployer.

Важно: кластер по умолчанию использует мультикаст (Mcast). Во многих облачных окружениях (AWS) мультикаст недоступен — см. раздел «Альтернативы и ограничения».

Детали примера (исходные данные)

  • Node1: каталог = /root/tomcat1, IP = 172.31.35.11
  • Node2: каталог = /root/tomcat2, IP = 172.31.39.120
  • Node3: каталог = /root/tomcat3, IP = 172.31.32.185

Что будем делать

  1. Скачиваем Apache Tomcat
  2. Устанавливаем OpenJDK 8
  3. Конфигурируем кластер (conf/server.xml)
  4. Запускаем и проверяем сервис, смотрим логи

Предварительные условия

  • Три сервера (EC2 или ВМ) с Ubuntu 18.04 LTS
  • root-доступ или sudo
  • Доступ по сети между узлами (порты 5000, 45564 и 8080 — можно изменить)

Шаг 1 — Загрузка Apache Tomcat

Переключитесь на root, чтобы избежать проблем с правами (в боевом окружении используйте пользователя с минимальными правами и systemd unit).

sudo -i
mkdir tomcat1   # на Node2 mkdir tomcat2, на Node3 mkdir tomcat3
cd tomcat1/     # на Node2 cd tomcat2/, на Node3 cd tomcat3/

Скачиваем и распаковываем Tomcat 9 (пример с apache-tomcat-9.0.0.M17, можно выбрать стабильную версию):

wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.0.M17/bin/apache-tomcat-9.0.0.M17.tar.gz
tar -zxvf apache-tomcat-9.0.0.M17.tar.gz

Загрузка Apache Tomcat

Шаг 2 — Установка Java 8

Tomcat 9 может работать с Java 8 и новее, в примере используем OpenJDK 8.

# на каждом узле
sudo apt-get update
sudo apt install openjdk-8-jdk -y
java --version

Установка Java 8 и проверка версии

Примечание: в производстве рассмотрите использование Oracle JDK/Corretto или OpenJDK из официальных репозиториев с долгосрочной поддержкой.

Шаг 3 — Конфигурация Apache Tomcat для кластера

Сначала сделайте резервную копию server.xml:

cd apache-tomcat-9.0.0.M17/
cp conf/server.xml conf/server.xml.bak

Резервная копия server.xml

Откройте conf/server.xml и выполните изменения. Найдите строки с localhost и замените имя хоста на IP узла (или на корректное имя хоста в вашей сети):


...

замените name=”localhost” на name=”172.31.35.11” и аналогично на других узлах.

Найдите закомментированный блок кластера и добавьте или раскомментируйте следующий фрагмент, подставив IP-адрес данного узла в параметр Receiver@address:


        
        
                
                
                
                                
                
                
                
                
        
        
        
        
        

Замените IP-Of-Node на IP каждого узла (172.31.35.11, 172.31.39.120 и 172.31.32.185 соответственно).

Указание IP узла в конфигурации кластера

Краткие пояснения ключевых компонентов:

  • DeltaManager — репликация только изменённых данных сессии (эффективнее при больших сессиях).
  • GroupChannel + McastService — обнаружение участников и передача сообщений (мультикаст).
  • ReplicationValve — перехватывает запросы и реплицирует изменения сессии.
  • FarmWarDeployer — упрощённое развёртывание WAR на всех узлах.

Важно: если используете балансировщик нагрузки с режимом sticky sessions, можно не включать репликацию сессий.

Шаг 4 — Запуск, проверка и логи

Запуск Tomcat:

# на каждом узле
bin/startup.sh
netstat -tulpn | grep 8080

Проверка логов (в режиме реального времени):

tail -100f logs/catalina.out

Остановка:

bin/shutdown.sh

Запуск и остановка Tomcat

Проверка корректности работы кластера

  • На одном узле разверните приложение и создайте сессию (например, авторизация в веб-приложении).
  • На другом узле убедитесь, что та же сессия доступна (без повторного логина) — это индикатор репликации.
  • В логах Cataline должна появиться информация о присоединении узлов и репликации сессий.

Отладка и типовые проблемы

  • Нету связи между узлами: проверьте firewall/iptables и security group (порты 5000 и 45564).
  • Мультикаст недоступен в облаке: в AWS мультикаст обычно заблокирован — используйте Unicast (когда доступно) или настройте виртуальную сеть/overlay.
  • Различные версии Tomcat/Java на узлах: убедитесь, что версии совместимы.
  • Конфигурация appBase и host name: ошибки в имени host мешают правильной репликации и деплою.

Полезные команды для диагностики:

ps aux | grep tomcat
ss -tunlp | grep 5000
grep -i cluster logs/catalina.out

Рекомендации по безопасности

  • Не запускать Tomcat от root в проде; создайте отдельного системного пользователя и unit-файл systemd.
  • Откройте только необходимые порты (8080, 5000, 45564) и ограничьте доступ по IP.
  • Включите TLS на фронтальном балансировщике (написать сертификаты на load balancer, не на каждом Tomcat).
  • Регулярно обновляйте Java и Tomcat до поддерживаемых версий.

Альтернативы и ограничения

  • Sticky sessions + балансировщик (NGINX, HAProxy) — проще, но не обеспечивает failover сессий при падении узла.
  • Внешнее хранилище сессий (Redis, Memcached) — надёжнее и масштабируется лучше, особенно в облаке.
  • Использование Unicast вместо мультикаста — помогает в средах, где мультикаст недоступен.

Когда кластер Tomcat не подходит:

  • Очень большие объёмы сессий (используйте Redis).
  • Облачные сети без поддержки мультикаста и без возможности настройки overlay.

Критерии приёмки

  • Все три узла взаимодействуют и обнаруживают друг друга в логах.
  • Репликация сессии работает: пользовательская сессия доступна при переключении на другой узел.
  • Развёрнутые WAR появляются на всех узлах (если используется FarmWarDeployer).
  • Сервис корректно стартует/останавливается без ошибок в catalina.out.

Контрольный список для ролей

Администратор:

  • Проверить сетевую доступность портов
  • Настроить пользователей и права
  • Настроить systemd unit и логирование

Разработчик:

  • Тестировать поведение сессий в кластере
  • Проверить совместимость библиотек с DeltaManager

DevOps:

  • Настроить CI/CD, деплой WAR через FarmWarDeployer или внешний pipeline
  • Настроить мониторинг (CPU, память, GC, доступность)

Мини-методология развертывания (быстрая инструкция)

  1. Подготовить три VM/EC2 с Ubuntu 18.04 и открыть порты.
  2. Установить Java 8 на всех узлах.
  3. Скачать и распаковать Tomcat на каждом узле.
  4. Скорректировать conf/server.xml (IP каждого узла).
  5. Запустить Tomcat и проверить логи и сетевые подключения.
  6. Тестировать сессии и деплой приложений.

Миграционные и совместимые заметки

  • Tomcat 9 совместим с Java 8+. При переходе на Tomcat 10 требуется проверить API и зависимости (серверные спецификации могут отличаться).
  • Ubuntu 18.04: репозитории поддерживают OpenJDK 8, но для длительной поддержки рассмотрите обновление ОС.

Простая диаграмма принятия решения

flowchart TD
  A[Нужно реплицировать сессии?] -->|Нет| B[Использовать sticky sessions на LB]
  A -->|Да| C[Доступен мультикаст в сети?]
  C -->|Да| D[Использовать SimpleTcpCluster 'мультикаст']
  C -->|Нет| E[Использовать Unicast/Redis или внешний store]

Заключение

Мы рассмотрели последовательность действий для развёртывания кластера Apache Tomcat на трёх узлах: подготовка окружения, установка Java 8, настройка conf/server.xml с SimpleTcpCluster, запуск и проверка. Для продакшена рекомендую отказаться от запуска от root, настроить systemd unit, ограничить сетевой доступ и рассмотреть внешнее хранилище сессий при работе в облаке.

Ключевые источники для дальнейшего чтения: официальная документация Apache Tomcat по кластеризации и менеджерам сессий.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро