socat в Linux системах


socat — утилита в Linux системах, позволяющая устанавливать TCP соединения между машинами. При этом локальная машина может видеть соединение как локальное фактически обращаясь по сети к другому серверу. Рассмотрим примеры использования утилиты socat.



socat часто используется при настройке кластеров и горизонтальном масштабировании.



socat примеры использования утилиты


Запускать socat можно напрямую из консоли оставляя выполнение в фоне или же использовать скрипты автозапуска. Фактически происходит проброс сокета с хоста.



Для разового использования запуск в фоне вполне подходит.


Прежде всего пакет нужно установить

apt install socat



Для примера рассмотрим Desktop систему с веб-сервером apache2. Создана единственная страница, при обращении к localhost возникает сообщение 'hi there'


socat примеры


Останавливаем веб-сервер

/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

linux socat


Сейчас видно стандартную заглушку веб-сервера Nginx, который используется на сервере 123.123.123.123



Socat используется для перенаправления трафика прозрачно для серверов на которых запускается. На Desktop системе в примере все другое ПО будет обращаться к порту 80 и работать в веб-сервером не имея представления о том, что он запущен на удаленном сервере.



Горизонтальное масштабирование — процесс распределения нагрузки на несколько машин путем выбора подходящего архитектурного решения. Для масштабирования часто используется socat.



Например, через него настраивается работа MySQL на машинах с приложением и веб-сервером.



Запускается socat через runit или supervisor. Это позволяет вновь стартовать процесс если он завершился — например, по причине перезагрузки.


Читайте про масштабирование приложений.

Сказать спасибо