Информационная безопасность


Взаимодействие с другими сервисами


Итак, допустим, что мы благополучно упрятали сервис в CE. Казалось бы - дело сделано, можно идти пить согревающие напитки с друзьями, но в душу закрадываются какие-то смутные подозрения о том, что это не конец. И они вовсе не беспочвенны. Типовой пример - те же самые Apache + PHP + MySQL.

Предположим, что Apache с PHP у нас загорают в "тюрьме" CE, а MySQL "остался на свободе". Но им же надо как-то взаимодействовать друг с другом! Поместить MySQL в тот же CE - не очень хорошее решение (лучше его отсадить в отдельный CE, исходя из народной мудрости, учащей раскладывать яйца по разным корзинкам). С другой стороны, нарушать целостность CE тоже не хочется - иначе какой тогда в нем смысл? В такой ситуации есть неплохое решение: настроить связь с MySQL через UNIX domain socket (по умолчанию они так и взаимодействуют) и сделать на него жесткую ссылку (hard link) в CE с Apache. Единственное ограничение - жесткие ссылки работают только внутри одного раздела диска, поэтому лучше хранить все CE на одном разделе. В этой связи возникает новая проблема - слежение за тем, чтобы этот раздел не переполнился в результате действий пользователей или раздувания логов и тем самым не заблокировалась работа сервера (если речь идет о корневом разделе основной системы). Одним из эффективных путей предотвращения таких ситуаций может стать использование файловых квот, однако это уже выходит за рамки данной статьи. Помимо этого, не забывайте о том, что файл существует до тех пор, пока существует хотя бы одна жесткая ссылка на него - поэтому рекомендую в выше рассмотренном примере с MySQL убивать при остановке MySQL все жесткие ссылки на mysql.sock, а при запуске - создавать заново.

Альтернативным подходом является использование TCP сокетов для межпроцессного взаимодействия. Выбор конкретного решения - дело каждого.



Содержание раздела