Я хочу обмениваться данными между несколькими экземплярами AWS с высокой производительностью и малой задержкой.Предоставление всем экземплярам доступа только для чтения (кроме одного экземпляра, который будет обрабатывать записи) — это нормально. Два момента об этом варианте использования:
- Узлы, присоединенные к тому, могут появляться и исчезать в любое время (запускаться, останавливаться, прекращаться и т. д.).
- Общие данные включают тысячи потенциально небольших файлов, которые необходимо перечислить и проверить метаданные.
Поэтому я сначала попробовал EFS, но он довольно медленный для операций, которые должны перечислять или изменять 100 или 1000 небольших файлов.
Так что теперь я рассматриваю мультиаттач EBS. Однако для предотвращения повреждения данных AWS рекомендует использовать только кластерную файловую систему, такую как GFS2 или OCFS. Оба они кажутся сложными и привередливыми в настройке, а также хрупкими для варианта использования кластера, где узлы могут появляться и исчезать в любое время. Например, GFS2 требует перезапуска программного обеспечения кластера на всех узлах, если количество узлов увеличивается с более чем 2 до ровно 2; или добавление нового узла включает в себя вход в текущий узел, выполнение некоторых команд и, возможно, повторное распространение обновленного файла конфигурации на все остальные узлы. Это просто кажется действительно негибким, а также много дополнительных накладных расходов.
Но если бы я был уверен, что только 1 экземпляр будет выполнять запись на диск (или, возможно, каждый экземпляр мог бы записывать только в свою собственную подпапку или даже раздел диска), мог бы я использовать обычную файловую систему, такую как XFS, для этого тома и избежать этого? ? Или могут возникнуть тонкие проблемы с повреждением данных, даже если доступ технически доступен только для чтения или доступ для записи ограничен подпапками или разделами, специфичными для экземпляра?
Или есть совершенно другое решение, которое мне не хватает?