質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

同期

複数のディレクトリに存在するファイルを更新した場合に、すべてのファイルにも更新が行われる事、又は、同じ記憶領域に同時にアクセスして内容の整合性が失われてしまう事をを防ぐ制御などを同期と呼びます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

4697閲覧

AWSにおいてWebサーバーから参照するファイルサーバーを冗長構成したい

kutu

総合スコア257

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

同期

複数のディレクトリに存在するファイルを更新した場合に、すべてのファイルにも更新が行われる事、又は、同じ記憶領域に同時にアクセスして内容の整合性が失われてしまう事をを防ぐ制御などを同期と呼びます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2016/04/28 01:29

下記の環境で構築しております。


[プラットフォーム]
・AWS

[OS]
・Linux(Ubuntu)

[マシン]
・Webサーバー2台(WebServerA,WebServerB)
・ファイルサーバー2台(FileServerA,FileServerB)

以下を実行したいのですが、どのように設定すればよいでしょうか


・WebServerA,WebServerBからファイルをFileServerAにアップロードするとFileServerBにも同じファイルが反映される

・通常時はWebServerA,WebServerBからFileServerAにマウントがしてあり、ファイルを参照できる

・FileServerAにトラブルが在った際にはWebServerA,WebServerBのマウントがFileServerBに切り替わり、ファイルを参照できる

ご存じの方がいらっしゃいましたらよろしくお願い致します

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

具体的な方法ではなく案だけですが、下記とかでしょうか。

s3fs で S3 をマウント

AWS なら S3 をファイルサーバとしてとして使えばなにも考えなくても高度に冗長化されています。

ただ s3fs はあんまり奨励されないという話をどこか?で聞いた気もします。

あと、goofys という golang 実装の似たようなものもあり、こちらのほうが動作が高速なそうです。

Amazon EFS を NFS でマウント

AWS に EFS という NFS としてマウントできるフルマネージドサービスがあります。これを使っておけばなにも考えなくても冗長化されています。

ただ、また正式にリリースされていないこと、日本のリージョンではまだ使えません。

実際に使ったことはないので、詳細はわかりません。。。

GlusterFS

複数台の EC2 インスタンスに GlusterFS を入れてレプリケーションを設定すれば、フォールトトレラントな分散ファイルシステムにできます。

CephFS

Ceph をファイルシステムとして使う CephFS を複数台の EC2 インスタンスで構成すれば、GlusterFS と同じようにフォールトトレラントな分散ファイルシステムにできます。

実際に使ったことはないので、詳細はわかりません。。。

Pacemaker/Corosync/DRBD/NFS

複数台の EC2 インスタンスに Pacemaker/Corosync/DRBD/NFS をセットアップし、DRBD でディスクをミラーリング、Pacemaker/Corosync で Active/Standby な HA クラスタで NFS をホストする、とかでフォールトトレラントな分散ファイルシステムにできます。

Pacemaker のリソースとして、Active 側に下記のものをもたせる感じです。

  • DRBD の Primary
  • DRBD デバイスのマウント
  • NFS サービスの開始
  • VIP の付与(Floating VIP)

ただし、AWS だとサーバに Floating VIP を付与するだけだとダメだったかもしれません(Source/Dest Check を無効にすれば大丈夫?)。

少なくとも Multi-AZ でやる場合は Floating VIP だとダメで、Routing Based HA と呼ばれるパターンを使用する必要があります。

が、そもそも、Multi-AZ で DRBD やら Pacemaker/Corosync やらがまともに動作するのか・・疑問もあります。

設計をみなおす

そもそも Web サーバがファイルサーバを POSIX ファイルシステムとしてマウントできる必要があるでしょうか?

Web サーバで Web アプリが動いているなら、AWS のストレージ系のフルマネージドサービス(S3 とか)にファイルを格納して、クライアントからのリクエストに応じて Web アプリがそのデータを取り出して返せば良いと思います。

もし、一旦 Web アプリが受けて S3 からファイルを取り出すオーバーヘッドが無視できない、もしくは、そもそも Web サーバにアプリが動いていない、とかなのであれば S3 の Static Web Hosting で、S3 自体を Web サーバとして使えば良いのではないかと思います。


コメントを元に追記

Webアプリによって生成された画像

S3 に配置するのがデファクトな感じしますけど・・Web アプリが S3 からファイルを取り出すオーバーヘッドが気になるのであれば、Web アプリとその画像とで URL のドメインを別にして、クライアントからは S3 の Static Web Hosting に直接アクセスさせれば良いと思います。

Webアプリへログインするためのセッションファイル

アプリケーションの言語によるかもしれませんが、大抵の場合 memcached にセッションを置くことができるだろうので、AWS ElastiCache にセッションを置くのが良いだろうと思います。

もしくは ELB で Sticky Session を設定してセッションを Web サーバ間で共有しないよう事にするとかでも(片方の Web サーバが止まるとそのサーバに Sticky されていたクライアントはセッションが切れますけど)。

投稿2016/04/28 02:15

編集2016/04/28 02:29
ngyuki

総合スコア4514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kutu

2016/04/28 02:20

ご回答有り難うございます ご推察通り、S3での場合、オーバーヘッドが無視できないということで、ファイルサーバーの設置を予定しております。 また、Webアプリケーションとして動作しているのでWebサーバーも必須です Fileサーバーは主に ・Webアプリによって生成された画像 ・Webアプリへログインするためのセッションファイル を置く場所として使用予定です。
ngyuki

2016/04/28 02:31 編集

回答追記しました。
ngyuki

2016/04/28 02:31

回答しておいてなんですけど、、、GlusterFS とか CephFS とか Pacemaker/Corosync/DRBD/NFS とかは運用超大変だし、AWS とそぐわない気もするので、超オススメできません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問