Oracle RAC on Azure(2020版)

 この記事は、JPOUG Advent Calendar 2020 / Azure Advent Calendar 2020 の2日目の記事です。

JPOUG Advent Calendar 2020 の1日目は @wrcsus4さんの記事でした。
Azure Advent Calendar 2020 の1日目は @jkudoさんの記事でした。


<前提>
2020年12月時点の情報です。

OS:OracleLinux 8.2
Oracle Database: 19.7
Oracle Grid Infrastructure: 19.7

 

<Azure固有>
・共有ディスク
以前は、iSCSINFSサーバをインスタンス上で構成する必要がありましたが、
Azure マネージドディスクで共有ディスクのサポートが始まりました。
Azure Ultra Disksを使用して、maxSharesを設定します。

・名前解決
以前はプライベート(内部)のDNSは解決できなかったのですが、
現在はAzure DNS Private Zonesがありますので、
VIPやSCANの名前解決はAzure DNS Private Zonesで解決します。


<他のクラウドでも共通>
・ネットワーク(マルチキャスト対応含む)
クラウド環境やコンテナ環境ではネットワークが一本しかない、
固定IPを指定できない、マルチキャスト対応してない など様々な制約があります 。
Azureもマルチキャストに対応していません。
これらの制約に対応する為、仮想ネットワーク(vxlan)を使います。vxlanはユニキャストモード使用します。
vxlanはNetworkManager Dispatcherスクリプトを作成して構成します。


インスタンスメタデータ
169.254.169.254への通信が可能だとOracle Grid Infrastructureのインストール(root.sh)に失敗します。
firewalldで169.254.169.254への通信をrejectします。


・自動化
何度も作って壊すのとクラウド間での構築手順を最大限共通化するために、以下のようなフレームワークを作っています。

マネージドサービス、インスタンス構築・・・・terraform
OS起動後の設定、インストール・・・・ansible
terraform⇒ansinbleの仲介・・・各CLIを用いたシェル


スクリーンショット

※ansibleの実行結果を張り付けた関係上、少々見づらいです。
f:id:KNOPP:20201130215909j:image


f:id:KNOPP:20201130215926j:image


f:id:KNOPP:20201130215943j:image