В настоящее время у меня есть 4 экземпляра EC2 в облаке Amazon за балансировщиком нагрузки, и это число вырастет до 20-30. Я ищу лучший способ управлять исходным кодом во всех этих экземплярах. На всех экземплярах работает http server + php.
Что мне нужно, так это способ обновить исходный код на всех экземплярах одновременно. После некоторого исследования я думаю, что нашел решение - создать сервер NFS и экспортировать каталог с исходным кодом во все экземпляры. Каждый экземпляр будет монтировать этот экспортированный каталог и использовать его в качестве корня документа для http-сервера apache.
Это правильный подход или вы предлагаете что-нибудь еще? Может ли NFS совместно использовать исходный код для всех узлов EC2 одновременно?
NFS, безусловно, можно использовать для этого, но, поступая таким образом, вы создаете очень важную единую точку отказа. Если сервер NFS выходит из строя, вы облажались. Кроме того, производительность дискового ввода-вывода будет снижаться при использовании NFS из-за дополнительного перехода по сети, который требуется для NFS.
Вместо этого я бы рекомендовал изучить инструмент развертывания, например Ткань или Capistrano. Любой из них может очень быстро отправить код на ваши серверы. Если вы беспокоитесь о том, что некоторые из серверов временно «не работают» во время развертывания, то вам следует заставить LB вывести этот сервер из ротации перед развертыванием нового кода, а затем повторно добавить его в ротацию после успешного развертывания.
Приложение: «Одновременное развертывание» - несбыточная мечта. Просто забудьте об этом. Это достаточно сложно с несколькими серверами, не говоря уже о десятках или сотнях.