Oracle CloudでRACデータベースを作成してみる
今回はAWSではなく、Oracle Cloudの記事となります。

ちなみに私はこの記事でOracle Cloudデビューとなります。基礎的な内容かつ、理解が不足している部分があるかもしれませんがご容赦ください。
オンプレミス環境でOracle Real Application Clusters(Oracle RAC)の構築経験があるのですが、 設定内容が複雑であり、インストール時間もかかるので、データセンター内でヒーヒー言いながら構築した思い出があります。
今回はそのRAC構成のデータベースをOracle Cloudではどれだけ簡単に作れるのか?という観点で実際に作っていきたいと思います。 とりあえずRACを作ってみたいという方の参考になれば幸いです。
Oracle Cloud アカウントの作成
本記事ではデータベースを作るところを書きたいのでアカウント作成部分は割愛します。 他のクラウドと同様、メールアドレスやクレジットカード情報を登録することでアカウントの作成ができます。 Oracle Cloud Free Tierという無料枠があるので、今回はその枠を使用して作成していきます。
仮想クラウド・ネットワーク(VCN)の作成
データベースを所属するネットワークを事前に作成します。 VCNと言われ、AWSだとVPC的なやつですね。 左側のメニューから「ネットワーキング>仮想クラウドネットワーク」を選択します。 選択後、VCNの作成をクリックします。

名前に「OracleNetwork」、CIDRに「10.0.0.0/16」を入力して作成します。

VCN内にサブネットを作成していきます。

名前に「OracleSubnet」、CIDRに「10.0.0.0/24」を入力して作成します。 今回はインターネット経由で接続確認を行う予定のため、パブリック・サブネットで作成します。 実際の本番環境ではプライベート状態で作ることが多いと思います。今回は検証用途ということでご認識ください。

インターネットから疎通を行うため、インターネットゲートウェイを作成し、ルートテーブルを変更しておきます。

作成後↓

先ほどのサブネットに指定したルートテーブルで、宛先0.0.0.0/0、ターゲットInternetGatewayを設定しておきます。

以上でVCNの準備は完了です。
SSHキーペアの作成
データベースインスタンスに接続する際に必要なため作成しておきます。 OCI標準のシェル機能であるCloud Shellで作成していきます。 右上のCloud Shellのマークをクリックすることで下部にターミナルが出てきます。

ターミナル上で下記コマンドを実行します。 Oracle公式ドキュメントのとおりです。
$ ssh-keygen
保存先とパスフレーズを聞かれますので任意で入力します。 今回は全てデフォルトでEnterを押下します。(パスフレーズなし)
実行後、.sshフォルダに公開鍵と秘密鍵が作成されていることを確認します。
$ ls -l ~/.ssh/ total 8 -rw-------. 1 xxxx oci 1679 Oct 12 02:23 id_rsa -rw-r--r--. 1 xxxx oci 401 Oct 12 02:23 id_rsa.pub
データベースの作成
準備ができたのでデータベースを作成していきます。 Oracle CloudにはOracle Autonomous Databaseという良い感じで自動管理してくれるデータベースがあるのですが、 今回はよりオンプレミスに近いRACデータベースを作ってみるという目的で、仮想マシン型のデータベースを作成していきます。
「データベース>ベア・メタル、VMおよびExadata」を選択します。

DBシステムの作成をクリック

必要情報を入れていきます。
- シェイプ(スペック)はデフォルトから1段階小さいStandard2.2
- 冗長構成(2ノード)で作成したかったが、無料枠ではコア数に制限があるようなのでここではノード数1とする(残念)。
- その他デフォルト


- ネットワークはあらかじめ準備していたVCNとサブネットを指定
- ホスト名接頭辞には任意の名前を入力。今回は「orcl202010」

- 管理ユーザーsysのパスワードを入力。複雑要件が高いです。
「パスワードは9文字から30文字とし、大文字、小文字、特殊文字および数字をそれぞれ2つ以上含める必要があります。特殊文字は_、#または-のいずれかです。」
- その他デフォルト

以上、これで「DBシステムの作成」をクリックします。
作成完了までしばらく時間がかかります。 「プロビジョニング中」になっていることを確認し待機・・

しばらくすると使用可能状態となります。 (私は使用可能になるまで1時間ほどかかりました。普通なのでしょうか)

SSH接続からのSQL接続
Cloud Shell経由で接続してみます。パブリックサブネットに作成したので、ノードにはパブリックIPが付与されています。 先ほどの使用可能状態が見えた画面からDBシステム名をクリックし、左下の「ノード」をクリックしてIPアドレス情報を確認します。

$ ssh -i id_rsa opc@168.138.193.64 The authenticity of host '168.138.193.64 (168.138.193.64)' can't be established. ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxx ECDSA key fingerprint is MD5:xxxxxxxxxxxxxxxxxxxxxx Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '168.138.193.64' (ECDSA) to the list of known hosts. [opc@orcl202010 ~]$
接続できました。ルートユーザーにもなれます。 oracleユーザーに切り替え、sqlplusで接続してみます。
$ sudo su - Last login: Mon Oct 12 15:20:34 JST 2020 [root@orcl202010 ~]# su - oracle Last login: Mon Oct 12 15:20:34 JST 2020 [oracle@orcl202010 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Mon Oct 12 15:22:56 2020 Version 19.8.0.0.0 Copyright (c) 1982, 2020, Oracle. All rights reserved. Connected to: Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production Version 19.8.0.0.0
接続できました!
RAC管理で使用するcrsctlコマンドで状況の確認も可能です。
$ /u01/app/19.0.0.0/grid/bin/crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.DATA.COMMONSTORE.advm ONLINE ONLINE orcl202010 STABLE ora.LISTENER.lsnr ONLINE ONLINE orcl202010 STABLE ora.chad ONLINE ONLINE orcl202010 STABLE ora.data.commonstore.acfs ONLINE ONLINE orcl202010 mounted on /opt/orac le/dcs/commonstore,S TABLE ora.net1.network ONLINE ONLINE orcl202010 STABLE ora.ons ONLINE ONLINE orcl202010 STABLE ora.proxy_advm ONLINE ONLINE orcl202010 STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup) 1 ONLINE ONLINE orcl202010 STABLE ora.DATA.dg(ora.asmgroup) 1 ONLINE ONLINE orcl202010 STABLE ora.LISTENER_SCAN1.lsnr 1 OFFLINE OFFLINE STABLE ora.RECO.dg(ora.asmgroup) 1 ONLINE ONLINE orcl202010 STABLE ora.asm(ora.asmgroup) 1 ONLINE ONLINE orcl202010 Started,STABLE ora.asmnet1.asmnetwork(ora.asmgroup) 1 ONLINE ONLINE orcl202010 STABLE ora.cvu 1 ONLINE ONLINE orcl202010 STABLE ora.db1012_nrt1hk.db 1 ONLINE ONLINE orcl202010 Open,HOME=/u01/app/o racle/product/19.0.0 .0/dbhome_1,STABLE ora.orcl202010.vip 1 ONLINE ONLINE orcl202010 STABLE ora.qosmserver 1 ONLINE ONLINE orcl202010 STABLE ora.scan1.vip 1 OFFLINE OFFLINE STABLE --------------------------------------------------------------------------------
AWSのRDSとは違い、OSにログイン出来るのはちょっと不思議な感じがしますね。 (私がAWSに慣れているだけですが)
外部からSQL接続
せっかくなのでローカルPCのSQL Developerからも接続してみます。
DBインスタンスの1521ポートへ接続許可するため、作成したサブネットのセキュリティ・リストに以下のルールを追加しておきます。ソースはDBへ接続するクライアントのIPアドレスです。
ネットワーキング>仮想クラウド・ネットワーク>[作成したネットワーク名]>[作成したサブネット名] の順でクリックするとセキュリティ・リストの画面へ遷移できます。

次に接続情報を確認します。データベースの詳細からDB接続をクリックします。

簡易接続の情報をコピーしておきます。

以下のような情報が取れるのでメモしておきます。
orcl202010.oraclesubnet.oraclenetwork.oraclevcn.com:1521/DB1012_nrt1hk.oraclesubnet.oraclenetwork.oraclevcn.com
では接続です。 ローカルPCにインストールしたSQL Developerから接続します。
以下の通り接続情報を入力し、接続します。
- ユーザー名:system
- パスワード:作成時に設定したパスワード
- ホスト名:SSH接続で使用したパブリックIP
- ポート:1521
- サービス名:メモしておいた接続情報の「/」の後部分(今回ではDB1012_nrt1hk.oraclesubnet.oraclenetwork.oraclevcn.com)

接続が完了すると、以下のようにデフォルトで存在するテーブルの情報が表示されます。

接続確認は以上です。
まとめ
ネットワーク(VCN)の作成からやったことを考えると、それなりに時間がかかりましたね。「プロビジョニング中」で1時間待たされるのも意外でした。
ただやはりオンプレミスでOracleRACを作成する場合に比べると格段に速く作成できますので、Oracle RACの動きを見たい場合や、開発環境用途としては良いなと思いました。
今回の手順ではパブリック公開であったりセキュリティ・リストの設定が一部緩い部分もあったので、本番利用の際はここらへんもきちんと設計したいですね。
ではでは~