第2回 Compute~オンプレ環境をOracle Cloudへ移行する

第2回 Compute~オンプレ環境をOracle Cloudへ移行する

目次

前回の振り返りと今回の作業について
Computeのインスタンスを作成する
Apache をインストール
次回予告

前回の振り返りと今回の作業について

前回は、VCN(Virtual Cloud Network)と関連するリソース(Internet Gatewayなど)を作成し、特にVCNとInternet Gatewayの内容を見ていきました。
今回は、Computeのインスタンスを作成しつつ、SubnetやRoute Table との関係を見ていきたいと思います。

Computeのインスタンスを作成する

Computeのメニューから【Create Instance】を選択すると、下のような画面が表示されます。
上から「インスタンス名」、「ADの選択」、「イメージの選択」、「インスタンスタイプの選択」、「シェイプの選択」と続いていきます。一旦、特に設定は変えず、最小単位で作成します。

SSH鍵を作成する必要があります。linuxのマシンでssh-keygenで作成しました。

***:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/***/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/***/.ssh/id_rsa.
Your public key has been saved in /home/***/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:****

ここで作成した.pubのファイルを赤枠の場所にドロップします。ここで「Create」をクリックするとインスタンスが作成できます。

早速接続してみます。TeraTermを使用しました。Oracle Linuxを使ったので、ユーザ名はopc、パスフレーズはSSH鍵を作った際に設定したものを使用します。

さてこれで繋がりますが、現状はこのような形です。


Security Listは22番ポートが開かれていて、Defoult Root Table は0.0.0.0/0となっていてインターネットにつながっている状態。試しにpingを打ってみました。

*** に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。

*** の ping 統計:
    パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、

タイムアウトがかえって来ました。Security ListのICMPのTypeの部分が3になっていたので、Destination Unreachableで到達できないことのみ教えてくれているようです。Typeの3の部分をAllに変更してみます。

*** に ping を送信しています 32 バイトのデータ:
*** からの応答: バイト数 =32 時間 =181ms TTL=47
*** からの応答: バイト数 =32 時間 =180ms TTL=47
*** からの応答: バイト数 =32 時間 =180ms TTL=47
*** からの応答: バイト数 =32 時間 =179ms TTL=47

***の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 179ms、最大 = 181ms、平均 = 180ms

Allにすると返ってきます。次は、TCPの22番ポートを80番に変えてみます。

するとSSH接続できなくなり、Tera Termが繋がらなくなりました。80番ポートはもう一度閉じておきます。


Apacheのインストール

おなじみのいつもの流れで、Apacheをインストールします。

[opc@computetst ~]$ sudo yum install httpd -y
[opc@computetst ~]$ sudo apachectl start
[opc@computetst ~]$ sudo systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[opc@computetst ~]$ sudo firewall-cmd --permanent --zone=public --add-service=ht
success
[opc@computetst ~]$ sudo firewall-cmd --reload
success
[opc@computetst ~]$ sudo bash -c 'echo This is my Web-Server running on Oracle Cloud Infrastructure >> /var/www/html/index.html'
[opc@computetst ~]$ sudo bash -c 'echo これがでればオッケー >> /var/www/html/index.html'

http://【インスタンスのグローバルIP】をブラウザに打ってみますが、つながりません。先ほど、SecurityListで80番ポートを閉じた為です。SecurityListに以下のルールを追加します。


これで80番ポートが空きました。

80番ポートが開いて、ブラウザでも確認できました。SecurityListは、デフォルトではEgress側はAll Protocolsとなっていましたので、インスタンス側から「出る」部分はすべて通る形でした。Egress側を適当に「3389」でRDPにし、IngressのICMPルールのstatelessをYesにします。以下のような形です。

これだと通りません。Ingressで入ってきたICMPが出られません。
続いて、EgressをICMPでStatelessにします。これなら通ります。
次にEgressはなしで、IngressのICMPはStatefullにします。これなら通ります。

Statefullにしておくと、Ingressで入ってきた際のセッションを保持する為、そのまま出られます。

目線はインスタンス側になって、Ingressはホスト側からの入、Egressはインスタンス側からの出、Statefullはセッション情報を保持、Statelessは保持しない。

出と入と発信した当事者が誰なのかによって幅広い設定が出来そうです。

次回予告

今回は前回作成したSubnetにComputeのインスタンスを一つ配置して、いくつかホストからの疎通を試してみました。次回は別サブネットからのアクセスについてやロードバランシングを試してみたいと思います。