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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

1回答

7766閲覧

サーバ Web/DBサーバを複数台で構成したい

K_T_T_K

総合スコア231

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

1グッド

3クリップ

投稿2014/09/27 15:15

いつもお世話になっております。K_T_T_Kです。

サーバを複数台構成で動作させたいのですが、複数を動作させる方法がわからず投稿させていただきました。

サーバ構成としては、

・Webサーバ
CentOS 7
PHP
Nginx

・DBサーバ
CentOS 7
Mysql

という別々のサーバがあり、それぞれの複数のサーバーを動かしたいです。
(大きなシステムだと当然の構成だと思いますが。。)

自分は過去に1つのサーバにWebサーバとDBサーバを動かしていましが今回はこれら別々で複数台構成で動作させたいです。
色々と調べたりしているのですが、なかなか良い情報がみつかりません。。

上記のように複数台でサーバを構成して動作させるにはどうすれば良いのでしょうか?
何かアドバイス宜しくお願いします。

star0415👍を押しています

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

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

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

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

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

guest

回答1

0

DBサーバ複数台構成の場合

  • マスター1台とスレーブ複数台
  • 何らかの方法で格納データを分割したマスター複数台

Webサーバ複数台構成の場合

  • ロードバランサー1台とWebサーバ複数台
  • 個別のIPアドレスを割り当てたWebサーバ複数台とDNSラウンドロビン設定

と言ったところでしょうか。
DBサーバのマスターというのは更新用、スレーブというのは参照用です。

1台でWebサーバとDBサーバを構築している場合は、WebサーバからDBサーバへの接続にlocalhost,127.0.0.1などを使用すると思いますが、別のサーバにするには単にそのサーバのホスト名を使用するだけです。

複数台Webサーバでセッションを共有(ログイン状態など)したい場合は、セッション情報をマスターDBサーバに格納するか、キャッシュサーバを構築して格納するなどの対応が必要です。

投稿2014/09/28 02:52

TaMaMhyu

総合スコア1356

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

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

takayukiinaba

2014/12/08 14:06

確かに、複数台のサーバを運用すると想定した場合は WEBの場合は、ロードバランサーやリバースプロキシといった構成が必要になります。 DBの場合は、マスタ/スレーブ構成が一般的ではないかと思います。 ですが、重要なのはどの程度のトラフィックを想定しているか?想定するかという事ではないでしょうか? 例えば、データベースに関してテーブルの構成やインデックスの参照頻度/参照順位、サーバのHDDのI/Oやデータベース作業メモリ領域の最適化等でかなりパフォーマンスを発揮する事が可能ではないかを思います。 また、WEBサーバも、Nginxを利用することからかなりのトラフィックを想定されている化と思われますがこちらも、ある程度カスタマイズを行えばそれなりのトラフィックに対応する事は可能ではないでしょうか? ちなみに、サーバ複数台構成の場合 サーバのプランによっては、Public ネットワークとLocalネットワークの両方が利用できるプランもあります。 その為、WEBサーバはPublicネットワークに所属させ、DBサーバはLocalネットワークに接続しPublicネットワークには所属させず、WEBサーバからのみ接続可能な環境を作成するとセキュリティー的に良いかもしれません。 外部サーバから他筐体のデータベースサーバにログインする場合は、データベース側のユーザにログイン元となるサーバのIPでユーザを作成すると接続が可能です。 // ローカルの場合 GRANT ALL PRIVILEGES ON *.* TO user@localhost IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES; // 他筐体 GRANT ALL PRIVILEGES ON *.* TO user@192.168.0.1 IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES; となります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問