Возможно ли иметь сокет unix в сети? Возможно ли, чтобы несколько серверов приложений, на которых запущен единорог, использовали один и тот же общий сокет?
Настройка, которую я хотел бы достичь, будет выглядеть так:
nginx
↓
Unicorn Unicorn
Конфигурация nginx:
upstream github {
server unix:/shared/unicorn.sock;
}
Конфигурация единорога (x2)
listen '/shared/unicorn.sock'
Я знаю, что можно сделать что-то вроде:
upstream unicorns {
server 192.168.1.100:5000;
server 192.168.1.101:5000;
}
Однако я думаю, что это не идеально, потому что вы не получаете преимуществ от Unicorn, выполняющего собственную балансировку нагрузки, и вам нужно заранее указать IP-адреса.
Несколько лет назад GitHub написал в блоге об их настройке Unicorn, где я думаю, они описывают аналогичную установку, но неясно, как этого добиться.
Сокеты Unix работают только в этой системе. Сокет в сети называется TCP-соединением. Способ сделать это - заставить Unicorn прослушивать TCP-сокет и настроить nginx для использования их в качестве восходящего потока (как вы упомянули). Unicorn не имеет распределенной балансировки нагрузки; вам нужен nginx для балансировки нагрузки.