Решения для балансировки нагрузки Tomcat

Я ищу хороший балансировщик нагрузки для использования с Tomcat. Наше приложение не хранит ничего в контексте сеанса, поэтому не важно перенаправлять на тот же сервер для того же пользователя. Я бы просто хотел что-то, что может ставить в очередь запросы в стиле циклического перебора или в зависимости от индивидуальной нагрузки каждого сервера. Я также хотел бы иметь возможность добавлять серверы приложений к тем, которые доступны для обработки запросов, без перезапуска балансировщика нагрузки. Мы запускаем приложение на Linux, если это имеет значение.

7 голосов | спросил Sotirios Delimanolis 10 MarpmSat, 10 Mar 2012 23:01:07 +04002012-03-10T23:01:07+04:0011 2012, 23:01:07

1 ответ


0

Если все, что вам нужно, это программный балансировщик нагрузки в Linux, используйте Apache Webserver2, Mod-Jk и Tomcat Clustering:

На вашем веб-сервере:

1) Установите apache2 и modjk:

sudo apt-get install apache2 libapache2-mod-jk
sudo a2enmod jk

2) Создайте файл «works.properties», доступный для вашего apache2. В некоторых случаях он автоматически создается в вашем каталоге /etc /apache2. Этот файл содержит конфигурацию lb, имена узлов, ips и порты ваших серверов Tomcat, т.е.

worker.list=balancer,lbstats

#node1
worker.node1.type=ajp13
worker.node1.host=NODE-IP
worker.node1.port=NODE-AJP-PORT
worker.node1.lbfactor=10

#more nodes here ... (change name in between)

#lb config
worker.balancer.type=lb
#turn off sticky session
worker.balancer.sticky_session=0

#add all defined node names to this list:
worker.balancer.balance_workers=node1

#lb status information (optional)
worker.lbstats.type=status

3) Создайте раздел Mod-Jk в вашем конфигурационном файле apache2, если он не был создан автоматически.

JkWorkersFile   /etc/apache2/workers.properties
JkLogFile       /var/log/apache2/mod_jk.log
JkShmFile       /tmp/jk-runtime-status
JkLogLevel      info

4) Смонтируйте ваше приложение на балансировщик нагрузки (файл конфигурации apache2):

JkMount /MyApp       balancer
JkMount /MyApp/*     balancer

JkMount /modjkstatus lbstats

На ваших серверах Tomcat:

5) Установите tomcat, используя пакет tarball (лучше, чем apt verison). Изменить server.xml:

  1. отключите http-коннекторы.
  2. включите соединитель AJP /1.3 и установите порт, который вы определили в worker.properties для этого узла.
  3. добавьте jvmRoute с правым именем узла в элемент «Engine»:

    <Engine jvmRoute="node1" ...
    
  4. добавить элемент "Cluster" для простейшей настройки

    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" />
    

6) Разверните ваше приложение на всех кошках и добавьте распространяемый элемент в ваш web.xml.

<distributable/>

7) Убедитесь, что веб-сервер может получить доступ к портам ajp на ваших серверах Tomcat, и никто другой не может.

8) Запускайте веб-сервер и кошек по очереди и проверяйте журналы (также /var/log/apache2/mod_jk.log).

9) Откройте ваше приложение: http://mywebserver.com/MyApp

10) Проверьте (и запретите доступ) страницу состояния lb http://mywebserver.com/modjkstatus

ответил Stefan 13 MaramTue, 13 Mar 2012 01:56:51 +04002012-03-13T01:56:51+04:0001 2012, 01:56:51

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132