У меня несколько серверов Apache, и я хочу централизовать их журналы доступа. Интересно, могу ли я использовать для этого именованные каналы и netcat, но боюсь, что могут произойти 2 вещи:
Центральный журнал будет нечитаемым, потому что, если 2 сервера будут записывать в журнал одновременно, netcat просто объединит 2 строки журнала. Например, первая строка журнала будет записана пополам, а затем начнется другая. Итак, вопрос в том, есть ли у netcat какая-то защита от этого состояния гонки?
В случае сбоя netcat процесс Apache будет заблокирован, поскольку он больше не сможет писать в именованный канал, поскольку ни один процесс не будет читать из этого канала. Это обоснованное беспокойство?
Планируемая мной установка выглядит так:
На сервере общего хранилища я запустил что-то вроде nc -l [port_number] > shared_access_log
На каждой машине с Apache я буду запускать что-то вроде nc [ip_of_shared_server] [port_number] < [path_to_named_pipe]
Затем я буду указывать каждый журнал доступа к серверу Apache на именованный канал.
Что касается моей первой проблемы со смешанными записями журнала, я думал о написании простого сервера на общем сервере, который обязательно будет записывать записи журнала в порядке их приема с каждого из других серверов. Но я не уверен, действительно ли это необходимо.
Спасибо!