開発運用

LXDで複数サイトをホスト

Nginx と HAProxy を使用して LXD コンテナで複数のウェブサイトをホストする方法に関する完全かつ包括的なガイドを以下に記載します。このガイドでは、Ubuntu 16.04 環境におけるインストールと設定の手順を説明します。


はじめに

Ubuntu 16.04 上で Nginx と HAProxy を使用して、LXD コンテナ内で複数のウェブサイトをホストする方法について説明します。LXD は軽量な仮想化技術であり、複数のウェブサイトを個別のコンテナに分けてホストすることが可能です。この方法では、コンテナごとに異なる設定を行い、HAProxy をロードバランサーとして使用してトラフィックを適切なコンテナにルーティングします。

必要なパッケージのインストール

まず最初に、必要なパッケージをインストールします。これには LXD、Nginx、および HAProxy が含まれます。

  1. LXD のインストール
    LXD は、Linux コンテナの管理ツールであり、複数の仮想サーバーを簡単に作成することができます。まず、LXD をインストールしましょう。

    bash
    sudo apt update sudo apt install lxd sudo lxd init

    lxd init コマンドは初期設定を行い、LXD を使用できるようにします。

  2. Nginx のインストール
    Nginx は、ウェブサーバーとして使用します。次のコマンドでインストールします。

    bash
    sudo apt install nginx
  3. HAProxy のインストール
    HAProxy は、ロードバランサーとして使用し、クライアントからのリクエストを適切なコンテナに分配します。

    bash
    sudo apt install haproxy

LXD コンテナの作成と設定

次に、LXD を使用して複数のコンテナを作成します。各コンテナは、異なるウェブサイトをホストします。

  1. LXD コンテナの作成
    以下のコマンドで、Ubuntu 16.04 のコンテナを作成します。

    bash
    lxc launch ubuntu:16.04 web1 lxc launch ubuntu:16.04 web2

    ここでは、web1web2 という名前の 2 つのコンテナを作成しました。それぞれのコンテナには、異なるウェブサイトを配置します。

  2. コンテナ内に Nginx のインストール
    各コンテナにアクセスして、Nginx をインストールします。

    bash
    lxc exec web1 -- sudo --login --user ubuntu sudo apt update sudo apt install nginx exit lxc exec web2 -- sudo --login --user ubuntu sudo apt update sudo apt install nginx exit

    それぞれのコンテナに Nginx がインストールされました。

ウェブサイトの設定

それぞれのコンテナに異なるウェブサイトを設定します。

  1. コンテナ内でウェブサイトのディレクトリ作成
    各コンテナに簡単な HTML ページを作成し、ウェブサイトを表示します。

    bash
    lxc exec web1 -- sudo --login --user ubuntu sudo mkdir -p /var/www/html echo "Welcome to Web1" | sudo tee /var/www/html/index.html sudo systemctl restart nginx exit lxc exec web2 -- sudo --login --user ubuntu sudo mkdir -p /var/www/html echo "Welcome to Web2" | sudo tee /var/www/html/index.html sudo systemctl restart nginx exit

    各コンテナに index.html ファイルを作成し、それぞれのウェブサイトが表示されるようにしました。

HAProxy の設定

次に、HAProxy を設定して、リクエストを適切なコンテナに振り分けるようにします。

  1. HAProxy 設定ファイルの編集
    HAProxy の設定ファイルを編集して、web1web2 コンテナにトラフィックを分配します。

    bash
    sudo nano /etc/haproxy/haproxy.cfg

    以下の内容を設定ファイルに追加します。

    haproxy
    global log 127.0.0.1 local0 maxconn 200 defaults log global option httplog option dontlognull timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend http_front bind *:80 default_backend http_back backend http_back balance roundrobin server web1 10.0.0.1:80 check server web2 10.0.0.2:80 check

    上記の設定では、HAProxy はポート 80 でリクエストを受け付け、web1web2 コンテナに均等に振り分けます。

  2. HAProxy の再起動

    設定を反映させるために、HAProxy を再起動します。

    bash
    sudo systemctl restart haproxy

動作確認

最後に、ブラウザからサーバーの IP アドレスにアクセスして、リクエストが適切に web1web2 コンテナに振り分けられることを確認します。

  • http://<サーバーのIPアドレス> にアクセスすると、Web1 または Web2 のウェブサイトが表示されるはずです。

まとめ

これで、LXD を使って Nginx と HAProxy を活用し、複数のウェブサイトをホストするための基本的な設定が完了しました。これにより、各ウェブサイトが異なるコンテナで実行され、HAProxy がそれらのトラフィックを適切に負荷分散します。

Back to top button