доступ к файлам c hw node через /vz/root или /vz/private
Значить есть мысль "заточить" apache со скрпитами которые потенциально опасны в VE. но отдавать статику и проксировать запросы на этот апаче хочется при помощи nginxи возникает такой вопрос: если запустить nginx не в VE а на hw node, то можно ли отдавать фалы прямо через /vz/root или даже /vz/private ? т.е чтобы doc_root у nginx был такой, чтобы он файлы статические брал прямо через эти директории, а за динамикой он уже будет по tcp отправляться к апаче который будет сидеть в VE
Re: доступ к файлам c hw node через /vz/root или /vz/private
с этим все понятно, попутно возникkb пару вопросо HN будет иметь внешний IP на котором будет слушать nginx и проксировать http запросы на локальные IP VE (10.0.0.2 и т.д) я сделал 2 VE с 10.0.0.2 и 10.0.0.3, друго друга они видят, но с HN на них по IP не попасть, первое что пришлов в голову присвоитиь venet0 на HN IP из этой сетки, насколько это верно ? если это нормальный вариант то где и как лучше этот IP "поднимать" ? и еще из этой оперы. на HN будет mysql с skip-networkink, т.е. доступ только через unix socket, я планирую через mount --bind засунуть этот mysql.sock в нужные VE. Насколько это верное/не верное решение ? P.S. заранее извините за глупые вопросы.
1. вероятно не настроены sysctl's как написано в installation HOWTO. 2. я бы рекомендовал выделить mysql в отдельную VE с private IP и ходить к ней по TCP. безопаснее и изящнее. например, потом если ваш mysql будет жрать слишком много ресурсов вы всегда сможете его смигрировать в VE на другую машину, а так - фигу. я неуверен что в текущей реализации будет работать то, что вы предлагаете без ковыряния дополнительной дырки в ядре на эту тему... с дыркой, конечно будет так работать, но как-то мне видится это решение не очень... просто не понимаю зачем тогда вообще VE )))
1. да похоже, что-то я пропустил. сейчас все ок. 2. как не странно но работает (с mount --bind) VE в данном случае в принципе надо исключительно чтобы подальше от остального запихать апаче со скриптами ну и юзеру дать ssh/sftp к ним. в принципе конечно можно использовать обычный chroot, но вот пришла идея попробовать openvz
ну идея правильная %) просто обычно ее доводят до логического конца - т.е. когда все сервисы в VE-ях. Кстати, может засунуть mysql в VE и попробовать и туда прокинуть через mount --bind то место где будет unix socket. Так не пробовали?
так - нет еще, но попробую, а из nh -> ve через mount --bind работает.
так тоже работает, а как и где правильно делать этот mount/umount чтобы оно автоматом происходило при старте/стопе VE ?
у vzctl есть скрипты vpsid.mount и vpsid.umount.
я так понял что 10002.start выполнятеся в контексте VE #>cat 10002.start #!/bin/sh echo "START" mount --bind /vz/root/10002/var/lib/mysql /vz/root/10003/var/lib/mysql #>vzctl start 10002 ... Running VE script: /etc/vz//conf/10002.start START mount: mount point /vz/root/10003/var/lib/mysql does not exist
.start - да. а mount в контексте VE0 конечно
/me посыпал голову пеплом извините за мою невнимательность
sitnikov wrote on Fri, 10 November 2006 12:50 так тоже работает, а как и где правильно делать этот mount/umount чтобы оно автоматом происходило при старте/стопе VE ? Забавно.. если работает с mount --bind это навивает на вопросы о виртуализованности списков unix sockets, и возможности доступа к данным чужих VPS без спроса.. неприятно - весьма и весьма вероятный secirity hole.
вообщем получилось вот так (VE можно стартить стопать в любом порядке) [root@demo1 vz-scripts]# cat mysql_mount #!/bin/sh MODE=${0##*\.} SRC=/vz/root/10002/var/lib/mysql DST=/vz/root/10003/var/lib/mysql MOUNTED=$(grep $DST /proc/mounts | wc -l) mnt() { if [ $MOUNTED -lt 1 ] && [ -d $DST ]; then mount --bind $SRC $DST >/dev/null 2>&1 fi } umnt() { if [ $MOUNTED -gt 0 ]; then umount $DST >/dev/null 2>&1 fi } case "$MODE" in mount) mnt ;; umount) umnt ;; *) echo "Unknown mode ($MODE)" exit -1 ;; esac [root@demo1 vz-scripts]# ls -la 1000[23].*mount lrwxrwxrwx 1 root root 11 Nov 10 07:07 10002.mount -> mysql_mount lrwxrwxrwx 1 root root 11 Nov 10 07:07 10002.umount -> mysql_mount lrwxrwxrwx 1 root root 11 Nov 10 07:07 10003.mount -> mysql_mount lrwxrwxrwx 1 root root 11 Nov 10 07:07 10003.umount -> mysql_mount
))) предлагаю Вам найти эту дырку в unix_find_socket_byinode() )) сделана она специально и осознанно - для inter-VE communication. Об этом уже писалось на форуме. вообще говоря общая файловая система это уже риск. В данном случае оправданный, т.к. человек знает что делает.