Help us understand the problem. What is going on with this article?

今日から始める Oracle Cloud 【VM + ロードバランサ】

Oracle Cloud に Always Free というサービスがありましてですね、なんと

  • 2つのOracle Cloud Infrastructure Compute VM、ブロック・ストレージ、オブジェクト・ストレージ、アーカイブ・ストレージ、ロード・バランサとデータ・エグレス、監視と通知
  • Oracle Application Express(APEX)やOracle SQL Developerなどの強力なツールを含む、2つのOracle Autonomous Database

がずっと無償で提供されます。

要するに、小規模なDB1個とVM2個ならずっと無償で使えるんですよ。神じゃないですか。

という訳で今回は

  • WebサーバとしてVMを2個作成
  • ロードバランサ作成
  • 作ったVM2つで負荷分散させてみる

までやってみたいと思います。

そこからの展開は何も考えていません。迷わず行けよ行けばわかるさ。

アカウント開設

こちら から作成できます。

住所やメールアドレスといった情報を設定していけば確認用のメールが届くので、

そこでの認証が通ればOKです。メールの書いてあるリンクに行けば、こんな感じのログイン画面が出てくると思います。

2019-11-17_11h53_41.png

VM作ってみよう

早速作ってみましょう。コンソールのトップ画面から1クリックで作成画面に行けます。

2019-11-17_13h04_26.png

『インスタンスの命名』は『web01』にします。

イメージソースの選択で、今回は『CentOS 7』を選択します。

今回はパブリックIPアドレスを付与したいので、『シェイプ、ネットワークおよびストレージ・オプションの表示』を選択します。

『パブリックIPアドレスの割り当て』にチェックを入れます。

2019-11-17_17h10_57.png

次にVMは鍵認証なので、『SSHキーの追加』です。ssh-keygenコマンド で作成した公開鍵ファイルをアップロードします。

アップロードしたら『作成』を押します。

2019-11-17_13h14_09.png

こんな感じのプロビジョニング中を知らせる画面が出るので数分待ちます。緑色の『実行中』になれば作成完了です。

2019-11-17_13h17_03.png

接続に必要なので、パブリックIPアドレスを確認します。

2019-11-17_13h19_29.png

先ほど作成した公開鍵と同時に作成した秘密鍵を使ってパブリックIPアドレスにSSHしてみましょう。デフォルトの接続用ユーザは『opc』です。

ssh -i <作成した秘密鍵>  opc@<パブリックIPアドレス>

Web公開してみよう

VMで行う設定

無事接続できたので、まずはロードバランサなしでWeb公開してみましょう。

firewallの設定見てみましょう。

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources:
  services: dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

これだとhttp接続できないので設定を追加します。

$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --reload

確認してみます。

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources:
  services: dhcpv6-client http ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

それではnginxを入れましょう

$ sudo yum install nginx

自動起動設定をしておきます。

$ sudo systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
$ sudo systemctl start nginx

あとは http://パブリックIPアドレス:80 で繋がるかと思えばそうではありません。ネットワークの設定をします。

セキュリティ・リストで行う設定

VMの詳細画面に以下のような文言があります。

このインスタンスのトラフィックは、関連付けられたサブネットのセキュリティ・リストおよびVNICのネットワーク・セキュリティ・グループに加えて、そのファイアウォール・ルールで制御されます。

これは要するに、セキュリティに関する設定は所属するサブネットといったグループ単位、さらに細かいVM(にくっついてるVNIC)単位、もしくはその上位のFWルールで制御できますってことです。

今回はサブネット単位でやります。この設定をすることで、そのサブネットに所属するVMには同じポリシーが適用されることになります。

『ネットワーキング』→『仮想クラウド・ネットワーク』と進みます。

2019-11-17_13h40_46.png

先ほど作成したVMが所属するネットワークが表示されてるのでクリックします。

2019-11-17_13h50_32.png

画面左下の『セキュリティ・リスト』をクリックします。

2019-11-17_13h54_56.png

セキュリティリストの一覧が出てくるので、今回はデフォルトのセキュリティ・グループを編集します。

2019-11-17_13h57_06.png

イングレス・ルール(入ってくるトラフィックに対するルール)の一覧が出てくるので、『イングレス・ルールの追加』を押して、以下のようにhttpリクエストを許可します。

2019-11-17_14h05_31.png

ここまで出来たら、『http://VMのパブリックIPアドレス』にWebブラウザでアクセスしてみます。

2019-11-17_14h06_58.png

このようにNginxのデフォルト画面が出てくればOKです。

後のために今回は『/usr/share/nginx/html/index.html』を以下のように編集しておきます。

<!DOCTYPE html>
<html>
<head>
 <title>web01</title>
 <meta http-equiv="content-type" charset="utf-8">
</head>
<body>
  <font size="7" color="#00ff00">おすぎです</font>
</boby>
</html>

このように表示されれば大丈夫です(何が

2019-11-17_14h35_24.png

ロードバランサーで負荷分散

次はVMを複製して2個にして、作成したロードバランサの配下にぶら下げてみます。

VMのイメージを取得

コンソールから、『コンピュート』→『インスタンス』と進み、インスタンス一覧画面に進みます。

VM一覧が表示されるので、先ほど作成した『web01』の右側のメニューから、『カスタムイメージの作成』をクリックします。

2019-11-17_16h00_37.png

カスタムイメージの名前を今回は『web-image』とし、『カスタム・イメージの作成』をクリックします。

作成時はVMが停止するので気を付けてください。

2019-11-17_16h03_17.png

カスタム・イメージ一覧に作成したイメージが表示されてるのを確認

2019-11-17_16h09_58.png

作成したイメージからVMを作成

VMの作成画面に行き、今度は名前を『web02』として、イメージ・ソースを先ほど作成したカスタム・イメージに設定します。

2019-11-17_16h15_41.png

あとは最初に作成した時と同じ要領で、パブリックIPアドレスとsshキーを追加して作成してください。

そして負荷分散を確認したいので、SSHログインして『/usr/share/nginx/html/index.html』を以下のように編集しておきます。

<!DOCTYPE html>
<html>
<head>
 <title>web02</title>
 <meta http-equiv="content-type" charset="utf-8">
</head>
<body>
  <font size="7" color="#4169e1">ピーコです</font>
</boby>
</html>

確認のため、http://<パブリックIPアドレス>にアクセスしてみてください。

ブラウザでこのように表示されてれば大丈夫(だから何が

2019-11-17_16h33_54.png

VMを複製して、サブネット単位でHTTPを許可してるので簡単にできます。

ロードバランサ作成

『ネットワーキング』→『ロード・バランサ』と進んで、ロードバランサの一覧画面に行き、『ロード・バランサの作成』をクリックします。

以下の設定をし『次の手順』をクリックします

  • 名前:任意
  • 可視性タイプの選択:パブリック
  • 最大合計帯域幅の選択:マイクロ
  • ネットワーキングの選択:クリックされるとリストが出てくるので、出てきたものを選択

2019-11-17_16h40_27.png

次の画面では以下の設定をします

  • ロード・バランシング・ポリシーの指定:重みづけラウンド・ロビン
  • バックエンドの追加:先ほど作成したweb01とweb02

ヘルスチェックはデフォルトで大丈夫です

2019-11-17_16h46_08.png

最後にリスナーの作成です。リスナー名は任意で、トラフィックは『HTTP』を選択し。『ロード・バランサの作成』をクリックしてください。

作成画面に移行するのでしばらく待ちましょう。作成が終わるとこのように黄色からグリーンになります。

2019-11-17_16h54_03.png

中央に表示されているのが、作成したロードバランサについてるパブリックIPアドレスです。

動作確認

アクセスしてリロードしてみましょう。

2019-11-17_16h58_26.gif

素晴らしいラウンドロビン。完全に電気の無駄。

ありがとうございました。本当にすいませんでした。

感想

僕は普段AWSを業務で使ってます。GUIでの操作が多いです。

そんな僕は今回、Oracle Cloudに関して以下のような感想を持ちました。

  • 癖がなく、直感的に使える
  • 画面が綺麗なので視認性が高い

今回のロードバランサ作成も、この記事を執筆しながら2,3時間で出来ました。

チュートリアルやヘルプは一切使ってません。

とにかくVM2個とDBは無償なので色々と使ってみたいと思います。

お読みいただきありがとうございました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away