はじめまして。技術4課の伊藤Kです。 つい最近サーバーワークスにジョインし、初投稿となります。 このブログにはサーバーワークスの誇るZabbixプロフェッショナル伊藤(qryuu)さんが数多く投稿しておりますので、 別の伊藤と分かるように伊藤Kと名乗ることにします。
今回は小ネタ。EC2の2インスタンス間でSQL Server AlwaysOn 可用性グループを構成する際のセキュリティグループ設定について。まとまった情報がなかなか見つからない部分なのでまとめておきます。
前提条件
まずは前提条件です。
・SQL Serverがインストールされたインスタンス2台ともActive Directoryドメイン参加を完了し、ドメイン認証に必要なセキュリティグループは構成済みとします。
・マルチサブネットでのAlwaysOn 可用性グループ構成です。構成図は以下となります。
・Windows Server 、SQL Serverのバージョンエディションは下表の通りです。
OS | Windows Server 2012 R2 Standard Edition |
SQL Server | SQL Server 2014 Enterprise Edition SP1 |
セキュリティグループ一覧
最終形は下表となります。Outboundはここではすべて許可としております。 セキュリティグループ「securityGroup1」をインスタンス2台ともに関連付けます。
Inbound
プロトコル | ポート範囲 | ソース |
---|---|---|
TCP | 135 | securityGroup1 |
TCP | 137 | securityGroup1 |
TCP | 445 | securityGroup1 |
TCP | 1433 | securityGroup1 |
TCP | 1434 | securityGroup1 |
TCP | 3343 | securityGroup1 |
TCP | 5022 | securityGroup1 |
TCP | 5985 | securityGroup1 |
TCP | 49152-65535 | securityGroup1 |
UDP | 137 | securityGroup1 |
UDP | 1434 | securityGroup1 |
UDP | 3343 | securityGroup1 |
UDP | 49152-65535 | securityGroup1 |
ICMP | すべて | securityGroup1 |
参考にした情報
SQL Server AlwaysOn 可用性グループはオンプレミス環境では構築経験があるのですが、オンプレでは基本的に全通しですからね・・・ いざ、「必要な通信は」と言われると戸惑うものです。 AWSでもMicrosoftでもまとまった情報がなく、調査に時間がかかりました。
最終的にはAWSクイックスタートのSQL Serverの項目で公開されている「CloudFormationのテンプレート」を読む、という作戦(同じ課の先輩に教わりました。さすが!)でほぼ完成形となりました。 ステップ 2. クイックスタートを起動する - AWS での SQL Server と WSFC
参考として上記が見つかる前に元にしていた情報は、 「AlwaysOn構成に必要なポート」ということでこのサイト。 Azure VM での AlwaysOn 可用性グループの手動構成
あとはWSFCの構成に必要なポートということで、このサイトの「クラスター サービス」部分。 Windows のサービス概要およびネットワーク ポート要件
エラー発生情報
「RPCによってランダムに割り当てられた非特権TCPポート」(TCP 49152~65535)を追加していなかったケースで、 クラスター構成時に対抗インスタンスを追加する際にタイムアウトが起きました。 ↓ここで対抗側のコンピューター名を入力して「追加」ボタンをクリックするとタイムアウトとなる。
最後に
この記事でもそうですが、個人的には記事に「エラー発生情報、イベントエラーのメッセージ」を可能な限り記載する方針です。
理由としては、字数をかせぐためこういった技術系ブログは、エラーで困った人が現象のキーワードやエラーイベントの番号、メッセージから何度も検索して「解決する情報が載っていないか」と期待してたどりつくことが多いと思います。その際に検索にひっかかやすいようにするためです。
自分もそうやって検索して、インターネットに自分の知見を公開してくれる先達たちに何度も助けられています。こうして知ったことを公開することで少しでも恩返しになれば、そう願っています。
今後ともサーバーワークスともどもよろしくお願いいたします。