> Какого рода задачи разумно вынести из главного процесса в «воркеры»? В голову приходит только подключение сокетов и общение с ними.
Зачем Вам в этой схеме "главный процесс"? Для решения Вашей задачи достаточно запустить нужное количество воркеров (допустим, у Вас на машине 8 ядер - запустите 9 воркеров) на разных портах и поставить HAProxy в качестве балансировщика перед ними в TCP режиме. Правда, при этом у Вас будет теряться информация об IP-адресах клиентов, так как соединения терминируются на HAProxy, а в TCP режиме он сведения о клиентском IP на бэкенд не передает. Не беда - Вы можете использовать HTTP/1.1 и web sockets для решения Вашей задачи, тогда из заголовка X-Forwarded-For на бэкенде можно будет узнать адрес клиента.
Второй вариант более сложный - действительно, используйте мастер-процесс, порождающий нужное количество воркеров заранее. Схема хорошо описана
здесь, и там даже приведена картинка, отличие Unicorn от Вашей схемы в том, что воркеры Unicorn работают синхронно, а Ваши будут работать асинхронно.