Crossroads обеспечивает балансировку нагрузки к любым TCP-сервисам, поэтому подходит не только для HTTP(S), но и для SMTP, SSH, баз данных и других. В обычном варианте он просто гарантирует подключение к бэкенду, не вникая во внутренности, и обеспечивает в этом режиме максимальную производительность. Один сервер может обслуживать несколько сайтов с разными бэкендами и протоколами. Но есть специальный режим HTTP mode, при котором обрабатываются и при необходимости меняются заголовки сеанса. Это обеспечивает возможность перенаправления пользователя на тот же сервер (session stickiness) и сохранение IP клиента в X-Forwarded-For. Сам по себе HTTP mode и особенно модификация пакета влияет на производительность (потери до 30%).
По умолчанию клиент перенаправляется на сервер, принимающий меньше подключений, но при необходимости алгоритм легко изменить на Round Robin, Least-Connections и First Available или определяться внешней программой или скриптом. Клиентов можно закреплять за определенным сервером (Hash sticky client), жестко или с возможностью подключения к другому серверу, если «свой» не отвечает. При возобновлении работы бэкенда он автоматически включается в работу. Возможно управление доступом к Crossroads на основе IP-адреса (allow и deny).
# /usr/sbin/xr --verbose -S --server http:0:80 --host-match www.host1.com --backend 192.168.1.10:80 --backend 192.168.1.20:80 --host-match www.host2.com --backend 192.168.2.10:80 --backend 192.168.2.20:80 2>&1 >> /var/log/xr.log
# /usr/sbin/xr --verbose --server tcp:0:3306 --backend 192.168.1.1:3306 --backend 192.168.1.2:3306 2>&1 >> /var/log/xr.log &
Статистика выводится при помощи веб-интерфейса, порт которого задается вместе с ключом -W (–web-interface). Также с его помощью можно изменить три параметра: максимальное количество соединений для Crossroads и для бэкендов, вес бэкендов.
Для удобства все их записывают в отдельный файл, который и указывают при загрузке, или используют специальный конфигурационный файл в формате XML (/etc/xrctl.xml, в поставке несколько готовых примеров).
Может быть запущен на любой POSIX-системе — Linux, OS X, Solaris. Проект предлагает исходные тексты (сборка проблем не вызывает), готовые пакеты доступны в репозиториях основных дистрибутивов.
В поставке Crossroads несколько готовых конфигурационных файлов |