② ConoHa VPS で複数WebサーバーとDBサーバーの構成を作る


前回記事:① ConoHa VPS でWebサーバーとDBサーバーを分離する

この記事でやること

今回やることは下記です

  • 前回作ったConoha VPSをWebサーバーとして動くようにする
  • そこにPHPの簡単なスクリプトを設置
  • スクリプトから前回作成したDBサーバーのデータベースに接続して情報を取得
  • フロントに表示
  • 2つ目のWebサーバーを作る

前回作ったConoha VPSをWebサーバーとして動くようにする

必要なものをyumでざっと入れてしまいます。

まずApacheを入れ、firewallでhttpアクセスを受け付けるようにします。

# yum install httpd -y
# firewall-cmd --permanent --zone=public --add-service=http

この段階でApacheを起動してfirewallを再起動してみます。

# systemctl start httpd
# systemctl restart firewalld

そしてブラウザでhttp://133.130.118.38/にアクセスしてみると、Apacheのデフォルトの画面が表示されます。

PHPのスクリプトから前回作成したDBサーバーのデータベースに接続して情報を取得してフロントに表示

Apacheを入れると、/var/wwwというディレクトリが作成されます。この中のhtmlフォルダにphpのファイルを配置していきます。

まずこのフォルダに移動します。

# cd /var/www/html

今回簡易的にphpファイルでデータベース接続を行うので、phpと周辺で必要なツールをインストールします。

# yum install php -y
# yum install --enablerepo=remi,remi-php70 php-mysqlnd -y

ここで、私の環境だとブラウザからアクセスしたときにphpが動かなかったので、httpd.confに一部追記をしました。

# vi /etc/httpd/conf/httpd.conf 
httpd.conf
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

phpファイルを作成します。

# vi index.php
index.php
<!DOCTYPE html>
<html>
<body>
<h1>Web Server:1</h1>
<?php
  define('DB_DATABASE','3vptj_test');
  define('DB_USERNAME','3vptj_test');
  define('DB_PASSWORD','Password1234');
  define('PDO_DSN','mysql:host=private.3vptj.tyo1.database-hosting.conoha.io;dbname=' . DB_DATABASE);

  try{
    //DB接続
    $db = new PDO(PDO_DSN,DB_USERNAME,DB_PASSWORD);
    $stmt = $db->query("SELECT * FROM fruit");
    $result = $stmt->fetch(PDO::FETCH_NUM);
    print($result[0]);
    //エラーをスロー
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  } catch(PDOException $e){
    echo $e->getMessage();
    exit;
  }
 ?>
</body>
</html>

あまり詳しくこのコードの説明はしませんが、PDOとデータベースへの接続情報を使ってDBサーバー内のデータベースに接続、前回登録したfruitテーブルのappleを表示しているという感じです。

http://133.130.118.38に接続すると、Web Server:1という文字の下に先程fruitテーブルに登録したappleが表示されます。

ちゃんとDBサーバーのデータベースから情報も引っ張ってこれています。

2つ目のWebサーバーを作る

それでは、これまで作ったものと同じ構成のWebサーバーを作成します。
同じ構成のVPSを作る必要があるので、Conohaに戻り、イメージを保存。そしてそのイメージを用いてVPSのコピーを作成します。

先程のVPS詳細画面に戻り、サーバーをシャットダウンして、イメージ保存ボタンをクリックします。

続いてサーバー追加メニューから、作成したイメージをもとにVPSの作成を行います。(イメージが利用可能になるまで数分かかります)

今回はネームタグをtestVPS2としました。

また、IPアドレスは133.130.110.112が割り振られました。

新しく作ったVPSとDBサーバーとの接続は再度行わないといけないようです。前回の記事と同じ内容なので省略しますが、適宜行ってください。

あと、Apacheをサーバーの起動時に自動的に起動する設定にしていないのでsystemctl start httpdも必要なはずです。

このあとロードバランサを入れて振り分け処理が行われていることを視覚的に判断するために、index.phpを少し変えておきましょう。

index.php
// <h1>Web Server:1</h1> これを
<h1>Web Server:2</h1> // こう書き換え

さっそくこのVPSに発行されたIPアドレスhttp://133.130.110.112/にアクセスしてみると、下記のような画面が表示されます。

ここでもちゃんとDBサーバーのデータベースから情報も引っ張ってこれています。これでロードバランサを入れる実験の素地ができました。

次回記事:③ ConoHa VPS ロードバランサーを導入して複数Webサーバーの割り振り