socat — утилита в Linux системах, позволяющая устанавливать TCP соединения между машинами. При этом локальная машина может видеть соединение как локальное фактически обращаясь по сети к другому серверу. Рассмотрим примеры использования утилиты socat.
socat часто используется при настройке кластеров и горизонтальном масштабировании.
socat примеры использования утилиты
Запускать socat можно напрямую из консоли оставляя выполнение в фоне или же использовать скрипты автозапуска. Фактически происходит проброс сокета с хоста.
Для разового использования запуск в фоне вполне подходит.
Прежде всего пакет нужно установить
apt install socat
Для примера рассмотрим Desktop систему с веб-сервером apache2. Создана единственная страница, при обращении к localhost возникает сообщение 'hi there'
Останавливаем веб-сервер
/etc/init.d/apache2 stop
[ ok ] Stopping apache2 (via systemctl): apache2.service.
Теперь нужно запустить socat
Перенаправление с 80 порта на 80 порт сервера 123.123.123.123
socat TCP-LISTEN:80,fork TCP:123.123.123.123:80 &
ps aux | grep socat
root 21904 0.0 0.2 8284 3912 ? S 13:30 0:00 sudo socat TCP-LISTEN:80,fork TCP:123.123.123.123:80
Вновь обращаемся к localhost
Сейчас видно стандартную заглушку веб-сервера Nginx, который используется на сервере 123.123.123.123
Socat используется для перенаправления трафика прозрачно для серверов на которых запускается. На Desktop системе в примере все другое ПО будет обращаться к порту 80 и работать в веб-сервером не имея представления о том, что он запущен на удаленном сервере.
Горизонтальное масштабирование — процесс распределения нагрузки на несколько машин путем выбора подходящего архитектурного решения. Для масштабирования часто используется socat.
Например, через него настраивается работа MySQL на машинах с приложением и веб-сервером.
Запускается socat через runit или supervisor. Это позволяет вновь стартовать процесс если он завершился — например, по причине перезагрузки.
Читайте про масштабирование приложений.