「さくらのクラウド」と「さくらの専用サーバPHY」のブリッジ接続を試してみる
目次
概要
この記事では、「さくらのクラウド」と「さくらの専用サーバPHY」のサービスをまたいで、 サーバー同士を接続する構成を試してみます。
構成イメージ
公式ドキュメントで提示されているハイブリッド接続の構成例を参考にして、下図のような構成を作成します。
ハイブリッドな構成での接続を確認するために、手順の中で簡単なアプリケーションを作ります。
よくあるウェブサーバー+アプリケーションサーバーの構成を想定しています。
昨今はコンテナ技術が普及しているので、今回の例においては、各アプリケーションをDockerで動作させます。もちろんDockerを使わないインストールでも大丈夫です。
TIPS:サービス間の接続方法の違い
サービス間の接続方法には、以下の3つの方法があります。
- ローカルルータ
- ブリッジ接続
- ハイブリッド接続
各接続方法の違いはこちらのページをご参照ください。
前提条件
- さくらインターネット会員IDを持っていること
- 「さくらの専用サーバPHY」でサーバーを契約していること
- ご自身の環境からSSH接続をできること
- viで最低限の編集ができること
- OSは「さくらのクラウド」でDockerのインストールが容易なので、両サービスともCentOS7で統一
- 各ミドルウェアのバージョンは、記事作成時点の最新で以下を使用
Docker | Nginx | Python | Flask |
---|---|---|---|
20.10.17 | 1.21.6 | 3.10.5 | 2.1.2 |
注意事項
本ページで作成するアプリケーションの設定は本番利用は想定していませんので、セキュリティを考慮していません。 本番利用時には、別途セキュリティを考慮したサーバー等の設定を必ずご検討ください。
また、本ページの手順では「さくらの専用サーバPHY」のサーバーにOSインストールの操作を含みます。OSインストールを実行すると、サーバーは初期化されますので、既にOSインストール済みで、再インストールしない場合には、適宜読み替えてください。
「さくらのクラウド」のサーバーを準備する
サーバーの準備
インターネットに接続された 1Core1GB の最小スペックで CentOS7 のサーバーを準備します。 今回サーバーの作成は、Dockerが自動的にインストールされるコントロールパネルの機能を使います。 「さくらのクラウド」のコントロールパネルを開き、以下の手順と画像の操作で作成します。
- 画面左の「サーバ」を選択します。
- 「追加」ボタンを押します。
- 「シンプルモード」を選択します。
- 「アプリケーション」のタブを選択します。
- 「Docker Engine CE for CentOS 7」を選択します。
- 「管理ユーザのパスワード」を入力します。
- 「ホスト名」を入力します。
- 「作成」ボタンを押します。
- 作成完了したら、サーバーのグローバルIPを確認します。
作業ユーザーの準備
サーバーの作成が完了したら、確認したグローバルIPに対してSSHで接続します。 SSHで接続が完了したら、作業用ユーザーを準備しておきます。 sudoできるように設定も入れます。以下の手順では「worker」という名前のユーザーを作成します。
useradd worker -m
passwd worker
usermod -G wheel worker
su - worker
作業用ユーザーでDockerのバージョン表示を確認しておきます。
sudo docker -v
# 実行結果例: Docker version 20.10.17, build 100c701
「さくらの専用サーバPHY」のサーバーを準備する
OSのインストール
「さくらの専用サーバPHY」は契約時点ではOSがインストールされていないので、インストールします。 以下の順番でOSのインストール処理を実行します。
- 「さくらの専用サーバPHY」のコントロールパネルの中から契約中のサーバー一覧を開きます。
- サーバー名をクリックしてサーバーの詳細画面を開きます。
- 「設定」ボタンを押します。
- 「OSインストール」を選択します。
- 「CentOS 7」を選択します。
- 「管理パスワード」を入力します。
- 「OSインストール」ボタンを押します。
インストール完了までしばらく時間がかかりますので、待ちます。
作業ユーザーの準備
OSのインストールが完了したら、SSHで接続します。 SSHで接続が完了したら、作業用ユーザーを準備しておきます。 sudoできるように設定も入れます。
useradd worker -m
passwd worker
usermod -G wheel worker
su - worker
Dockerのインストール
以下を実行します。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
数十秒待つと、処理が完了します。
デーモンの起動と、自動起動をするコマンドを実行します。
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
Active: active (running)となっていれば完了です。
下記は実行例です。
sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since 火 2022-08-30 15:14:33 JST; 1 day 23h ago
Docs: https://docs.docker.com
Main PID: 928 (dockerd)
Tasks: 8
Memory: 117.4M
CGroup: /system.slice/docker.service
mq928 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
また、以下でバージョン情報が表示されることも確認しておきます。
sudo docker -v
# 実行結果例: Docker version 20.10.17, build 100c701
それぞれのサーバーにアプリケーションを配置する
先述の構成図の通りに、以下のアプリケーションを配置していきます。
さくらのクラウド側 | さくらの専用サーバPHY |
---|---|
Nginx | Flask |
「さくらのクラウド」にウェブサーバーを準備する
「さくらのクラウド」のサーバーに作業用ユーザーを使ってSSHで接続し、以下を実行します。
sudo docker pull nginx:latest
cd
mkdir nginx
vi nginx/nginx.conf
開いたnginx.confの内容を、以下のように編集します。
upstream ds_server {
server 192.168.100.10:5000; # 「さくらの専用サーバPHY」側で作成するサーバーのローカルネットワークのIPを指定
}
server {
listen 80;
server_name 127.0.0.1;
proxy_read_timeout 300;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /ds_server/ { # このlocationはブリッジ接続が完了するまではアクセスできません
rewrite /ds_server/(.*)$ /$1 break;
proxy_pass http://ds_server;
}
}
編集内容を保存したら、次のコマンドを実行します。
sudo docker run --name mynginx -v /$HOME/nginx/nginx.conf:/etc/nginx/conf.d/default.conf -d -p 8080:80 nginx:latest
ウェブサーバーが実行できているかを確認します。 ブラウザなどで、http://「さくらのクラウド」のサーバーのグローバルIPアドレス:8080 にアクセスします。"Welcome to nginx!"と表示されていれば実行できています。
「さくらの専用サーバPHY」にアプリケーションを準備する
「さくらの専用サーバPHY」のサーバーに作業用ユーザーを使ってSSHで接続します。 それから、今回はFlaskを動作させるDockerfileを作成します。
cd
vi Dockerfile
Dockerfileの内容は、以下のようにします。
From python:latest
COPY ./app.py /app.py
RUN pip install flask
CMD ["python","/app.py"]
「さくらの専用サーバPHY」での動作がわかるように、 適当な文字を表示するapp.pyを作ります。
vi app.py
app.pyの内容は、以下のようにします。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
hello = "Hello ds sakura."
return hello
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0')
これで準備が調いました。Dockerイメージをビルドしてアプリを起動してみます。
sudo docker image build ./ -t hello
sudo docker container run --rm -d -p 5000:5000 --name=hello1 hello
実行できているかを確認します。 ブラウザなどで、http://「さくらの専用サーバPHY」のサーバーのグローバルIPアドレス:5000 にアクセスします。"Hello ds sakura."と表示されていれば実行できています。
スイッチを準備する
次に、それぞれのサービスを接続するため、ブリッジ接続に使用するスイッチを作成します。
「さくらの専用サーバPHY」のローカルネットワークを作成する
「さくらの専用サーバPHY」の「ローカルネットワーク」とは、「さくらのクラウド」の「スイッチ」と同様の機能に相当します。 以降は、ローカルネットワークを作成していきます。
ローカルネットワークの追加
ローカルネットワークを追加します。
サーバーへの接続
- サーバーの詳細画面を開きます。
- 画面下部の「インターフェース-[任意のネットワークインターフェース(画像では1gbe)]-編集」を押します。
- 表示されたリストから「インターフェース設定」を選択します。
- 「インターフェース設定」の「ポートモード選択」の「トランクポート」を選択します。
- 「ネットワーク接続」の1つ目を共用ネットワーク、2つ目を先に作成したローカルネットワーク名(ds_localnet)で選択します。
- 「保存」ボタンを押したら接続完了です。
サーバー内の設定
「さくらの専用サーバPHY」のサーバーに作業用ユーザーを使ってSSHで接続します。 以下を実行しましょう。
sudo nmcli connection add type vlan autoconnect yes con-name bond0.1000 ifname bond0.1000 dev bond0 id 1000 # "1000"の部分はローカルネットワーク作成時に設定したVLANID
sudo nmcli connection modify bond0.1000 ipv4.method manual ipv4.addresses 192.168.100.10/24
sudo nmcli connection up bond0.1000
それから、設定を有効化するコマンドを実行します。
sudo nmcli connection reload
次のコマンドで、作成したbond0.1000のstateがupとなっていたら完了です。
ip address show
「さくらのクラウド」のスイッチを作成する
続いて「さくらのクラウド」のスイッチを作成していきます。
スイッチの作成
- 「ネットワーク-スイッチ」を選択します。
- 「追加」ボタンを押します。
- 画像を参考に、必要事項を入力します。
- 「作成」ボタンを押します。
- 作成後、処理が完了したら、スイッチの詳細画面から「編集」ボタンを押します。
- 画像を参考に必要事項を入力し、「更新」ボタンを押します。
サーバとスイッチの接続
次にサーバーにNICを追加します。 接続先は先に作成したスイッチを選択します。
- まずは、サーバーの詳細画面に入ります。
- サーバーをシャットダウンします。NICの接続はサーバーが起動状態では実行できないからです。
- シャットダウン後、「NIC」タブを開きます。
- 「追加」ボタンを押します。
- 追加が完了したら、画像の箇所から接続の詳細を編集していきます。
- 「スイッチに接続」を選択します。
- 先に作成したスイッチを選択します。
- 「更新」ボタンを押したら接続完了です。
OS側へのNICの設定
OS側から追加したNICにIPを付与します。 「さくらのクラウド」のサーバーに作業用ユーザーを使ってSSHで接続します。 以下を実行しましょう。
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1
ifcfg-eth1のファイルは、以下のようにします。
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
GATEWAY=192.168.100.1
PREFIX=24
IPADDR=192.168.100.20
それから、設定を有効化するコマンドを実行します。
sudo nmcli connection reload
次のコマンドで作成したeth1のstateがupしていたら完了です。
ip address show
「さくらのクラウド」と「さくらの専用サーバPHY」を接続する
いよいよサービス間の接続を行っていきます。
ブリッジの作成
さくらのクラウド上で、ブリッジ接続を作成します。
スイッチとの接続
次に、「さくらのクラウド」と「さくらの専用サーバPHY」で作成した「スイッチ」と「ローカルネットワーク」に、このブリッジをつなぎます。
- 「さくらのクラウド」のスイッチの接続は、ブリッジの詳細画面から、下図のスイッチのタブを選びます。
- 緑色の「接続」ボタンを押します。
- 作成したスイッチを選択します。
- 黄色の「接続」ボタンを押したら完了です。
- 「さくらの専用サーバPHY」のローカルネットワークの接続は、ブリッジの詳細画面から、下図の「さくらの専用サーバPHYスイッチ」を選びます。
- 緑色の「接続」ボタンを押します。
- 作成したローカルネットワークを選択します。
- 黄色の「接続」ボタンを押したら完了です。
接続がうまくいっていることを試す
以上が完了すれば、「さくらのクラウド」と「さくらの専用サーバPHY」のサービス間で接続ができているはずです。 うまくいっていることを確認するために、「さくらのクラウド」に準備したNginxから「さくらの専用サーバPHY」に準備したFlaskのアプリケーションへ、リバースプロキシできていることを確認しましょう。
ブラウザなどで、 http://「さくらのクラウド」に用意したサーバーのグローバルIPアドレス:8080/ds_server/ にアクセスします。
「さくらのクラウド」のサーバーにアクセスしていますが、「さくらの専用サーバPHY」のサーバーに配置したアプリケーションの内容である、"Hello ds sakura." と表示されていれば成功です。
クリーンアップ
今回作成した環境を残しておくと継続して課金されてしまいますので、 不要であれば、以下の順番で環境を掃除しましょう。
- 「さくらの専用サーバPHY」のサーバーとローカルネットワークの接続解除
- 「さくらのクラウド」のサーバーとスイッチの接続解除
- ブリッジとスイッチの接続解除
- ブリッジ削除
- スイッチ削除
- ローカルネットワーク削除
- ご自身の環境に合わせて「さくらの専用サーバPHY」と「さくらのクラウド」でそれぞれ、OS再インストールやサーバー再作成で初期化またはサーバー削除
おわり
以上で、「さくらのクラウド」と「さくらの専用サーバPHY」のサービス間をまたいで、 サーバー同士を接続するハイブリッド構成を試すことができます。このようにブリッジ接続はお手軽にご利用いただけますので、ぜひお試しください。