AWS・Azure・自宅にてマルチでハイブリッドなクラウドを作ってみた(その2)
大要
- 自学自習のため、マルチでハイブリッドなクラウドを作ってみた
- ゴールは、各リソースをパブリックな通信なしで利用できるようにすること
- 前回はL3レベルでのサイト間VPNで、IaaS層のハイブリッド化行った
- 今回は AWS と Azure の PaaS を各拠点のネットワークで相互に繋いで PaaS層のハイブリッド化を行う
前回はこちら kwatanabe.hatenablog.jp
背景
- 前回記事参照
PaaSのハイブリッド化
- 前回の作業でAmazon VPC、Azure VNet、自宅のLANが相互に接続されている
- PaaSをこれらVPCやVNetに所属させることができれば、PaaSのハイブリッド化も実現できる
- Azure PaaS と AWS PaaS では設計思想の違いから必要なアプローチが異なる
AWS PaaS
- AWS PaaS は VPC に対してプラガブルな設計となっているので、多くのメニューでそのまま VPC のサブネットに繋げることができる
- 例えば、Amazon RDS だと作成時にVPCとサブネットグループを指定できる
- RDSのマルチAZ対応するには適切なルーティング設定が VPC に必要
Azure PaaS
- VNet は IaaS のための仕組みであり、PaaS の接続は考慮されていない
- Azure PaaS は各リソースがパブリックな世界で孤立している
- VNet に繋ぐには、そのための機能が PaaS に備わっている必要がある
- 例えば、Azure App Service では以下の機能が提供されている
docs.microsoft.com docs.microsoft.com docs.microsoft.com
具体例
- Azure App Service と Amazon RDS を繋いで簡単なWebシステムを作る
- RDS のパブリックアクセシビリティを無効にして、マルチクラウドが実現できている事を確認する
- App Serivce を VNet に接続する手段は Region VNet Integration を用いる
Amazon RDS
インスタンスを作成する。作成に特別な手順は必要ない。以下のパラメータ以外は好きに選んでかまわない。
- エンジン:MySQL (MySQL Community 8.0.20)
- マルチAZ配置:なし
- 接続VPC:Hybrid-VPC (前回記事参照)
- サブネットグループ:新規
- パブリックアクセス:なし
- VPCセキュリティグループ:3306/TCPを許可
- アベイラビリティゾーン:Hybird-Subnetと同じところ
- データベースポート:3306
- 認証:パスワード認証
- 最初のデータベース名:wordpress
インスタンスがデプロイされたら、コンソールからエンドポイント名を確認したうえで、同じサブネットに属するEC2からプライベートIPアドレスを調べておく。
$ nslookup XXXXXXXXXXXXXXXXXXXXX.ap-northeast-1.rds.amazonaws.com Server: 192.168.20.2 Address: 192.168.20.2#53 Non-authoritative answer: Name: XXXXXXXXXXXXXXXXXXXXX.ap-northeast-1.rds.amazonaws.com Address: 192.168.20.225
以上でRDSの構築は完了。
Azure App Service
インスタンスを作成する。まずは通常の手順でデプロイする。
- 公開:コード
- ランタイムスタック:PHP 7.3
- オペレーティングシステム:Linux
- 地域:Japan East
- Linuxプラン:(新規)
- SKUとサイズ:S1
ネットワーク⇒VNet統合から、以下の設定を行う。
- 仮想ネットワーク:前回作成した Azure VNet
- サブネット:Hybrid_Subnet_Dammy
構成⇒アプリケーションの設定から、以下の設定を行う。
- パラメータ:WEBSITE_VNET_ROUTE_ALL
- 値:1
デプロイセンター⇒FTPから接続情報を取得して、FTPクライアントで任意のディレクトリに Wordpress のアーカイブを展開する。
- なお、5.5系はPHP7.4以降を推奨としているため、5.4系を用いる
一旦、App Serivceを「停止」⇒「起動」でコールドブートした後に、WordPress をデプロイした URL にブラウザで繋ぎ、初期設定を行う。
- データーベースのホスト名は、RDS をデプロイしたときに調べたプライベートIPアドレスを指定する。
以上でApp Serivceの構築は完了。