• ベストアンサー

サーバーの分散について

あるWEBサービスを運用しているのですが、 メインのサーバーに障害が発生したときに、 自動で予備のサーバーに接続が切り替わるように したいのですが、どのようにするのが一般的でしょうか? ちなみにメインと予備のサーバーは完全にネットワークが 別物になります。 また、1台のサーバーでWEB、DB、メール全てまかなっています。 何か教えて頂けましたら助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • foitec
  • ベストアンサー率43% (1079/2453)
回答No.3

>メインのサーバーに障害が発生したときに、 >自動で予備のサーバーに接続が切り替わるように >したいのですが、どのようにするのが一般的でしょうか? 「通常」「自動」で切り替えるには少なくとも監視しているサーバーの状態を細くできなければなりませんね。 つまり監視対象のサーバーがダウンしたと認識したら予備のサーバをアクティブにするわけです。 更に「普通」はこのサーバー同士は常時データのミラーリングが行われてかつ同じアドレスでなければなりません。 このような関係を「クラスタリング」と言いますが監視するものとして「HAモニタ」を使用します。 他には監視するサーバーの「ハートビート」を監視し一定時間応答がない場合予備系に切り替えるソフトを用意した監視PCを準備するかです。 メインと予備のネットワーク系が異なる場合はかなり面倒ですね。 できないことはないですが上位のDNSのか書き換えも同時に行わねばならなくなります。 このあたりをまず参考に http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BB%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%BC

gogoyamada
質問者

お礼

お礼が大変遅くなりまして申し訳ありませんでした。 とても詳細なご回答いただきましてありがとうございます。 ミラーリングをどのように行うかが1つの課題になりそうですが ちょっと考えてみたいと思います。

その他の回答 (2)

  • axel_eye
  • ベストアンサー率64% (145/226)
回答No.2

WindowsかLinuxかによって変わってくると思います。 個人的に難しいと思うのは、Windowsの方かと思います。 また、Windowsでもワークグループかドメインコントローラーかで 変わってくるのではないかと思います。 Windowsのドメインコントローラーであれば、一応、Windows 2000 Server の頃に少しだけいじった事があります。 一番大事かと思われるのは、DNSサーバーだと思います。 名前解決ができないとネットワークに繋がらないからです。 ドメインコントローラーでは、特殊な事が無い限り、 ActiveDirectoryとDNSサーバーは一緒のパソコンで起動します。 予備のサーバーと『信頼関係』と言う手続きを結んでおけば メインのサーバーが落ちたとしてもすんなり予備サーバーに移行できると 思います。 DNSとWINSの設定を確実にする事が、まず第一段階かと思います。 WEBやDB、メールサーバーについてはWindowsで管理した事がないので わかりません。 しかし、Microsoftのどこかにバックアップのための手順書があると 思います。 Linuxに関しては、比較的簡単かと思います。 データ領域とシステム領域のバックアップを予備サーバーに 取っておきメインのサーバーが落ちたらリストアして、 サービスを起動していく形になると思います。 ただ、セグメントをまたぐ形でのDNSの設定変更方法は、 私はわかりません。イーサネットスイッチの設定変更も いるかもしれません。 これらの設定手順とかを知るだけでも1000ページ程度の 文書になると思います。 ですので、なんとかして最低3台のパソコン(2台がメインと予備サーバー 1台がクライアント)を用意しメインに障害が起きたときの 予行訓練をして、万全を期すぐらいでないと安心な状態に 持って行けないと思います。

gogoyamada
質問者

お礼

お礼が大変遅くなりまして申し訳ありませんでした。 ご回答いただきましてありがとうございます。 今回はLinuxを利用します。考えている以上に手間がかかるということがわかりました。

回答No.1

その構成では、障害発生時にDNSで接続先のWebサーバをメインから予備のサーバへ切り替えるしかないと思いますが、DBが別物だとメインと予備のデータの同期をどのように行うかの問題がありますし、DNSでWebサーバのIPを変更しても通知されるまで数日必要なため、現実的ではない気が。 ロードバランシングやクラスタリングといった構成を検討したほうがよいと思います。

gogoyamada
質問者

お礼

お礼が大変遅くなりまして申し訳ありませんでした。 ご回答いただきましてありがとうございます。 同期に関してもう少し検討してみたいと思います。

関連するQ&A

  • 自宅サーバーの冗長化

    お世話になります。 現在Linuxで自宅サーバー(web)を運用しているのですが、 最近冗長化とスクリプトに目覚め(笑)自分でサーバーを冗長化する スクリプトを作りました。 今のところ、ネットワーク障害、サービス障害には耐えられるように なっています。 しかし、ハード障害に関してはどのようにして障害を検知すればいいのかが わからず困っています。 とりあえずHDDの間欠障害を検知したいと思っています (完全に壊れたらRAIDでも組んでいない限りサービス障害検知にひっかかるので) いろいろと調べていくうちに SMARTD というデーモンを利用すれば障害を検知 できそうかなぁというところまでわかったんですが、これはHDDの温度や、いつ に何回エラーが出たなどのログを見れるだけで白黒ハッキリしてないlogしかなさそう なんです。(実際みてみましたが意味がよくわかりません・・・・) ハッキリこういったメッセージが出ればアウトっていうのがわかりません。 どなたかSMARTについて詳しい方いらっしゃいませんか? ちなみにサーバー冗長化スクリプトの動き(仕様)は以下になります。 ・メインと予備で2ノード(2台)構成 ・※1メインサーバではサービス監視スクリプトを常時実行。 サービスが停止した場合、それを検知しIPアドレスを自動で変更(予備との疎通を切るため)。 ・予備はネットワーク監視スクリプト(メインとの疎通)を常時実行 疎通がとれなくなった場合、メインが停止したと判断し、メインが使用していたIPへ切り替え、サービスを起動。 前提条件として ・サービスの設定は両ノードとも同じ設定にしておく(apacheの設定) ・webのデータはメインから予備に定期的にコピーする となっています。 SPOFに対応してないとかデータの整合性がどうのとかのつっこみ所満載のへっぽこ仕様ですが勘弁してください(笑 ちなみに、メインにハード障害が起こった場合(検知できたら)、 ネットワーク疎通を意図的に切断することで(※1の部分です)フェイルオーバーさせる仕様を考えてます。

  • DBサーバをどこに置くのがよいか

    インターネットに公開しているWebシステムのDBサーバを内部ネットワークに置くのがよいのか、 DMZに置くのがよいのかで悩んでいます。 ※ここでいうDBサーバは、個人情報を取り扱っていますが、外部に公開していない別の システム等が使用しているデータは居候していません。 以前の私の認識では、WebサーバをDMZに置き、DBサーバは内部ネットワークに置いて、 DBサーバへの接続はWebサーバからのみに限定するというのが一般的なのではないかと 思っているのですが、今も同じでしょうか? 内部ネットワークにDBを置いた場合、次の問題が考えられるので、本当に大丈夫なのかと 思ってしまいます。。 - DMZから内部ネットワークへの通信が許可しなければならないこと。 - WebサーバとDBサーバの接続をFWで遮断したとしても、WebサーバからDBサーバに 接続するためには、あらかじめWebサーバの設定ファイルにDBサーバのユーザ名とパスワード を書いておく必要があります。なので、、WebサーバとDBサーバ間のFWがあまり役に立たないのではないか。(Webサーバが乗っ取られた時点で、苦労なく個人情報も抜かれるリスク大) そればかりか、DBサーバを内部に置くことで、DBサーバをDMZに置いた時よりも内部 ネットワークが脆弱になると考えられる。(DMZから内部ネットワークへの通信を許可する必要あり) - 総合すると、最近の Linux や Windows にはFW機能があるので、何も内部ネットワークに 置かなくても、その機能を有効化しサーバ自体はDMZに置けば内部ネットワークに置くよりも 全然よいのではないかと思える。 よろしくお願いいたします。

  • WEBサーバーとDBサーバーについて

    WEBサーバーとDBサーバーとを設置した場合、 後々のどちらか一方の機器が故障した場合等に応急措置として生きている方の一台で仮運用を続ける事が出来ます。 という記事があったのですが、これは運用するWEBサーバーがダウンした場合、DBサーバーがあるからホームページに影響はでないということなのでしょうか。。 運用の知識がまったくないのですみません。。 おすすめの本などありましたらよろしくお願いたします。

  • WebサーバとDBサーバ 2台構成にしようと・・・

    現在、1台のPCでWebサービスを運用しています。 初心者なりに色々調べながらやっていますが、なんとか安定したサービスは 提供しているつもりです。 現在1台のPCでLinux+Apache+PostgreSQL+PHPという構成で運用しているのです が、DBへの参照・更新が多いので、WebサーバとDBサーバ、といったように物 理的に分けてしまえば多少負荷が抑えられるのでは?もっと快適なサービスを 提供できるのでは?などといった単純な考えでいます。 結局、そのような方法は、多少でも効果が見込めるものなのでしょうか? それと、実際に分けるとなった際の方法が全く分からないので、その辺を 詳しく解説したようなサイトがあればご紹介下さい。 ちなみに、画像用配信用にイメージサーバ?も準備しようかなと考えて います。 補足 ロードバランサなども考えましたが、現状、そこまで用意する必要は無い だろうという勝手な判断です。 LinuxはFedora 6です。DBサーバにしようと思っているPCは現在動いている サーバより性能は少し落ちます。

  • 負荷分散装置?

    2台のLinuxサーバを「稼働系」「予備系」で動作させたいと考えています。ですが、知人に相談したところ、私がやりたいことを実現するためには、負荷分散装置という高価な物が必要だと言われました。何か安価に実現する方法は無いでしょうか? ・2台のWebサーバ(Linux, apache)をIPアドレス以外は同じ設定で起動しておく。 ・片方を「稼働系」として、普段はそちらを使用。緊急時のみ「予備系」を使用。 ・2つのサーバに共通の仮想IPのような物を設定したい。 今は常に両方立ち上げておいて、稼働系に障害が発生した場合に、予備系のサーバに接続しています。 ですがIPアドレスが異なるため、お気に入り(bookmark)も複数設定しないと駄目です。 ネットワークカードの冗長化のように、片方へアクセス出来ない場合には、 もう片方へ勝手にアクセスが切り替えられるような方法はないものでしょうか? Linuxの標準機能か、フリーソフトで実現出来れば嬉しいです。 それとも「負荷分散装置」を購入するしかないのでしょうか??

  • サーバーの切り替え

    よくわからないので教えてください。 メインとサブの2台のWEBサーバーがあります。 メインが落ちたときにサブに切り替えたいのですがよくわかりません。 HeartBeatというのを使えばそれが実現できるのでしょうか? また、DB(MySQL)の切り替えはどうするのでしょうか。 よろしくお願いします。

  • 障害時でのサーバ切替について

    OSはCentOS5、DBはpostgreSQL7.4.2でウェブ上でサービスが行えるような運用しています。 現在、障害時の対応として予備機に別のドメイン名を使って、半日遅れのデータで見せるような工夫はしています。 改善したいのは同じドメイン名で、本機(プライマリ)と予備機(セカンダリ)の接続先を切替えたいのですが、調べたところ、DRBDとHeartbeatを使って実現させる方法はよく見るのですが、この方法は2台の動作をクロスケーブルで監視しながら、状況を見てIPを切り替えるイメージですが、同じ場所に2台ある場合は停電などで1時間以上にわたって通電しないような最悪な状況も考えられるわけで、そういった場合には2台ともダウンしてしまいます。そこで別々の場所にサーバを設置して障害対応ができないものかと考えています。 2台がそれぞれが遠隔にあるような場合については死活監視をしながら、同時にデータの同期化もできるような構築を実践したいのですが、どういった方法がありますでしょうか? データの同期化をどのくらいまでシビアにとらえるかとかにもよるとは思いますが、いくつか参考になるような構築方法とかがあればアドバイスを頂ければと思います。 大雑把な質問ですみませんが、宜しくお願いします。

  • 負荷分散の時の接続について

    ファイアウォール、WEBサーバーを各10台を負荷分散して接続するサーバーでWEBサーバーの下にDBサーバーがある場合ファイアウォールから負荷分散装置に接続するところとWEBサーバーからDBサーバーに接続するところの装置はスイッチを使うのでしょうか。また負荷分散設置BIG-IPを多重化して使う場合BIG-IP間をどのようにするとアクティブ、スタンバイの制御が出来るのでしょうか。

  • Heartbeatでの複数サービスの冗長化について

    Heartbeatにおいて、複数のサービスの冗長化をとりたいと考えています。 検討している構成としては、 『DBサーバー1台、Webサーバー1台、予備サーバー1台』 の環境において予備サーバーでDBサーバーのPostgreSQLとWebサーバーのApacheをそれぞれ冗長化させ、 もしWebサーバーのApacheが死んだら予備サーバーのApacheを起動し、 もしDBサーバーのPostgreSQLが死んだら予備サーバーのPostgreSQLを起動させる といった感じです。 HeartbeatはHeartbeat2.1.2とバージョン1系の設定にて行っております。 このような構成は、Heartbeatでは構成可能なのでしょうか? Heartbeatに関する情報を色々と読んでいたのですが、 単一のクラスタ構成に沿った設定ファイルの書き方などしか見つけられず 行き詰まってしまいましたもので。。

  • WebサーバーのDBサーバー

    どなたか、教えて下さい。 今回Webサーバーの構築を行なうのですが、それにあたって質問があります。 ものすごい単純なことなのかもしれませんが。教えて下さい。 Webサーバーを1台、DBサーバーを1台構築しようと考えています。 Webサーバーには、IISを導入しようとかんがえていますが、 DBサーバーって、何か、特別な、Webの物の設定て必要なのですか? 普通のDBサーバー(ファイル)で構わないのでしょうか? すいません。お教えください。 今回Webサーバーと、ファイルサーバー(DB)が違うマシンなのは、 はじめてなもので・・・・・