FROM ME TO YOU

oh my bizarre life !!

Azure SQL DatabaseのアクティブGEOレプリケーションを設定してみた

Azure SQL DatabaseはSQLServerのPaaSサービスですが、標準で自動バックアップや別リージョンへのレプリケーションが付いているので、わざわざオンプレでSQLServerのDBサーバー立てるくらいならAzure SQLDatabase使っちゃおうよ、と思うようになりました。

SQLServerとSQLDatabaseの違い

docs.microsoft.com

SQLServerAgentのような別プロセスからのDBへのアプローチやDBメールが利用できない点に注意。

アクティブGEOレプリケーション

Azure SQL DatabaseのSLA99.99%とはいえ、やはり別リージョンへのレプリケーションはとっておきたいところ。

オンプレミスで他拠点に設置したサーバーへのレプリケーションの構築は一仕事ですが、SQLDatabaseはPaaSなので比較的簡単に構築できます。

また、フェールオーバーグループで設定した接続文字列を使えばアプリケーション側で接続先のサーバーを意識する必要がないため、アプリの再デプロイや設定変更が不要となる点も魅力ですね。

構築

SQLDatabaseの構築はウィザードに進んで設定するだけなので割愛します。

SQLDatabase > 概要 > サーバー名を選択します。

f:id:fmty_keita:20190503002410p:plain

設定 > フェールオーバーグループを選択します

f:id:fmty_keita:20190503002631p:plain

グループの追加を選択します

f:id:fmty_keita:20190503002724p:plain

フェールオーバー先の設定を行います

フェールオーバーグループ名(この名前が接続文字列となります)を入力し、レプリケーション先のサーバーを作成します。既存のサーバーがあれば選択しますが、今回は新規に作成します。

レプリケーション先は東南アジアにしてみました。

f:id:fmty_keita:20190503002942p:plain

機能 内容
読み込み/書き込みのフェールオーバーポリシー フェールオーバーを自動で行うかを選択します
猶予時間 フェールオーバーを行うまでの猶予時間です

設定終わり

f:id:fmty_keita:20190503004451p:plain

f:id:fmty_keita:20190503004730p:plain

以上で設定は完了です。簡単。 尚、サーバーファイヤウォールの設定はセカンダリサーバーにも同様の設定が必要です

検証

フェールオーバーグループの接続文字列で接続し、サーバー名を確認。

プライマリサーバー名になっています。

f:id:fmty_keita:20190503005609p:plain

強制フェールオーバーを行い、再度サーバー名を確認

先程設定したフェールオーバー先のサーバー名になっており、フェールオーバーに成功したことが確認できました。

f:id:fmty_keita:20190503005838p:plain

読み取り専用

尚、このアクティブGEOレプリケーションは、「読み取り専用リスナーポイント」で接続すれば通常時でもセカンダリサーバーを読み取り専用サーバーとして利用することができます。

多少のタイムラグがあるため、リアルタイム性を求めないような前日までの集計や月間バッチ処理などであれば負荷分散用サーバーとして利用することもできます。

便利ですね。

宿題

  • サーバーファイヤウォールの設定を共通化できないのか?
  • フェールオーバーの猶予時間が理解できていない

NSG(ネットワークセキュリティグループ)の設定テスト

作成したVMやvnetにNSG(ネットワークセキュリティグループ)を設定してアクセス設定を行ってみました。

NSGVM毎のネットワークインターフェースと、サブネット単位で設定できます。 評価順はサブネット>VMの順に評価されます。

基本構成

リソース IPアドレス
社内端末 192.168.0.0
仮想マシンA 172.16.1.200
仮想マシンB 172.16.2.4

ネットワークインターフェースに設定

ひとまず仮想マシンBのネットワークインターフェースに、172.16.1.0/24からの接続をすべて遮断してみました。

f:id:fmty_keita:20190502185321p:plain

サブネットに設定

仮想ネットワーク > サブネット > ネットワークセキュリティグループを設定

f:id:fmty_keita:20190502190008p:plain

結果

社内端末(192.168.0.1 ) → 仮想マシンB(172.16.2.4)

正常に接続できます

f:id:fmty_keita:20190502185428p:plain

仮想マシンA(172.16.1.200) → 仮想マシンB(172.16.2.4)

設定したとおりに172.16.1.0/24からの通信が遮断されます。

f:id:fmty_keita:20190502185537p:plain

これで細かなFW設定も行えそうです

Azureのサポートについて調べてみた(ざっくり

ふと、Azureのサポート契約について調べてなかったことを思い出したのでGoogle検索レベルだけど調べておいた

azure.microsoft.com

BASIC DEVELOPER STANDARD PROFESSIONAL DIRECT PREMIER
適用範囲 すべての Microsoft Azure アカウントで利用可能 試用環境および非運用環境 運用ワークロード環境 ビジネス上重要な用途での利用 複数製品で多用
テクニカル サポート 利用できません 営業時間内におけるサポート エンジニアへのお問い合わせ (メール) メールと電話によるサポート エンジニアへの 24 時間 365 日のアクセス メールと電話によるサポート エンジニアへの 24 時間 365 日のアクセス メールと電話によるサポート エンジニアへの 24 時間 365 日のアクセス
事業に軽微な影響が及ぶ場合 (重大度 C) 利用できません 8時間以内 8時間以内 4時間以内 4時間以内
事業に部分的な影響が発生する場合 (重大度 B) 利用できません 利用できません 4時間以内 2時間以内 2時間以内
事業に大きな影響が発生する場合 (重大度 A) 利用できません 利用できません 1時間以内 1時間以内 1時間または15 分以内 (Azure Rapid Response または Azure Event Management を使用)
アーキテクチャ サポート 利用できません 一般的なガイダンス 一般的なガイダンス ProDirect Delivery Manager が配信するベスト プラクティスに基づいたアーキテクチャ ガイダンス Microsoft Azure テクニカル スペシャリストが提供するお客様に特化したアーキテクチャ サポート。設計レビュー、パフォーマンス チューニング、構成や実装の支援など。
オペレーション サポート 利用できません 利用できません 利用できません オンボード サービス、サービス レビュー、Azure Advisor コンサルテーション テクニカル アカウント マネージャーによるサービス レビューとレポート
レーニン 利用できません 利用できません 利用できません Azure エンジニアリングによる Web セミナー Azure エンジニアリングによる Web セミナー、オンデマンド トレーニン
事前対応型ガイダンス 利用できません 利用できません 利用できません ProDirect Delivery Manager 指定のテクニカル アカウント マネージャー
価格 無償 ¥3,248/月 ¥11,200/月2 ¥112,000/月 お問い合わせ

ふとした疑問

→これはアカウント単位でオーケー

AzureのサブネットにVirtual Machines(Win+SQLServer)を追加

先日から作成してるVNET内にVMを追加してみました。

fmty.hateblo.jp

構成

基本はデフォルトのまま進めばOK。VNET内からのアクセスに限定するため、パブリックに公開する設定はすべてオフにします。

項目 設定 備考
OSイメージ SQL Server 2016 SP1 Standard on Windows Server 2016 FreeやBYOLは選ばない
パブリック受信ポート なし
仮想ネットワーク (前に作成したVNET)
サブネット (前に作成したサブネット)
SQL認証 有効化 Windows認証は後日

静的IPアドレス設定

デフォルトだとVM起動時にサブネット内のIPアドレスが動的に割り当てられるため、IPアドレスを静的に固定します

仮想マシン > 設定 > ネットワーク > ネットワークインターフェースを選択 > IP構成 > 静的IPアドレス を入力

f:id:fmty_keita:20190430222352p:plain

結果

割り当てたローカルIPアドレスでRDPとSSMSの接続が確認できました。

f:id:fmty_keita:20190430222716p:plain

f:id:fmty_keita:20190430222833p:plain

コスト(追記

リソース コスト 備考
Standard HDD 128 GiB ¥659.46/月 S10
Windows+SQLServer ¥39,025.28/月 B2S

f:id:fmty_keita:20190501232652p:plain

Standard HDD Managed Disks の料金は、トランザクション 10,000 回あたり ¥0.056 です。読み取り、書き込み、削除などのストレージに対するすべての種類の操作は、トランザクションとしてカウントされます。

SLA(追記

Virtual Machines の SLA は、構成によって異なる点に注意。

デプロイ方法 SLA
同じ Azure リージョン内の 2 つ以上の可用性ゾーンにまたがりデプロイした場合 99.99%
可用性セットにデプロイした 2 つ以上のインスタンスがある場合 99.95%
Premium Storage を使用する単一インスタンス仮想マシン 99.9%
Standard HDD等の Premium Storage 以外の場合 情報なし

未検証

サブネット内のIPアドレスの動的割り当て範囲とVM起動時の割り当てを重複しないようにするにはどうすれば?

Microsoft AzureとYAMAHA RTX810でVPN(IPsec IKEv2)接続する

Microsoft Azureの仮想ネットワークとYAMAHA RTX810でサイト対サイトVPN(IPsec IKEv2)を構築してみたテスト

結果

この手順通りにやったら成功しました

network.yamaha.com

network.yamaha.com

接続エラーがでた

再構築中に接続できないエラーになった。

仮想ネットワーク ゲートウェイのリセットを試しても解決しなかったので、VPNトラブルシューティングを実行してみた。 (仮想ネットワーク ゲートウェイ->サポート + トラブルシューティング

リソース:仮想ネットワーク ゲートウェイ
■状態
概要:Your VPN connectivity is impacted because the S2S VPN tunnels are disconnected
詳細:The S2S VPN tunnels could not connect because of IKE or connectivity issues
■アクション
Check health of each individual connection to get more details.  
Contact support
If your VPN gateway isn't up and running by the expected resolution time,  contact support.

リソース:接続
■状態
概要:The VPN connection can’t be established due to pre-shared keys mismatch
詳細:If the pre-shared keys do not match, the IKE authentication will fail and the VPN connection cannot establish
■アクション
Verify the pre-shared
Verify the pre-shared keys are the same on both on premises VPN device and Azure VPN gateway.  詳細情報.
Contact support
If you are experiencing problems you believe are caused by Azure,  contact support.

とりあえずpre-shared keys mismatchとあるので、事前共有キーを確認してみたが当然のことながら一致してる。 何度かAzure側を再構築してみるものの解決しない。

ルーター側のコマンドが間違えていた模様。

以下はYAMAHAのサイトのサンプルコマンドの抜粋。基本はこの通りに入力するんだけど、手元の環境だとtunnelがすでに1と2を使っているのでtunnel 3として打ちかえていく必要があった。いくつかのコマンドで設定をミスってた。

ちゃんとコマンド確認して打ち直して解決。よかった。

tunnel select 1
ipsec tunnel 1
ipsec sa policy 1 1 esp aes256-cbc sha256-hmac anti-replay-check=off
ipsec ike version 1 2
ipsec ike duration child-sa 1 27000
ipsec ike duration ike-sa 1 28800
ipsec ike group 1 modp1024
ipsec ike keepalive log 1 off
ipsec ike keepalive use 1 on rfc4306
ipsec ike local address 1 192.168.100.1
ipsec ike local name 1 (ルーターの固定グローバルIPアドレス) ipv4-addr
ipsec ike nat-traversal 1 on
ipsec ike message-id-control 1 on
ipsec ike child-exchange type 1 2
ipsec ike pre-shared-key 1 text (事前共有鍵)
ipsec ike remote address 1 (Microsoft AzureのゲートウェイIPアドレス)
ipsec ike remote name 1 (Microsoft AzureのゲートウェイIPアドレス) ipv4-addr
ipsec ike negotiation receive 1 off
ip tunnel tcp mss limit auto
tunnel enable 1
ipsec auto refresh on

コスト(追記)

技術的な検証だけでなく、必ずコスト面も意識しておきたい

リソース コスト 備考
VPN Gateway(BASIC) ~¥2,943.36/月 S2S:MAX10、P2S:MAX30
VPN Gateway(VpnGw1) ~¥15,534.40/月 IKEv2ならこちら。S2S:MAX30、P2S:MAX250。BASIC以上の接続数は追加料金
ローカル ネットワーク ゲートウェイ なし
パブリック IP アドレス(動的) ¥0.4032/時間 月額 300円
仮想ネットワーク ¥1.12/GB 送受信それぞれに発生
帯域(5 GB - 10 TB/月) ¥13.44/GB 受信のみ課金(最初の5G無償)、Azureへの送信:無料

予算を考えるとIKEv1の方がいいかもしれない。

SLA(追記の追記)

コストだけでなくSLAも意識する必要があることに気付いた(遅い

リソース SLA 備考
VPN Gateway(BASIC) 99.9%
VPN Gateway(Standard以上) 99.95%
ローカル ネットワーク ゲートウェイ なし 情報なし
パブリック IP アドレス なし 情報なし
仮想ネットワーク なし 情報なし
帯域(5 GB - 10 TB/月) なし 情報なし

Global Azure Bootcamp 2019@Osaka に参加してきました

jazug.connpass.com

Global Azure Bootcamp とは世界中の Azure コミュニティが世界180ヶ所以上で一斉に開催するMicrosoft Azureのコミュニティイベントです。

GW初日、大阪福島のマイクロソフト関西で開催された「Global Azure Bootcamp」に参加してきました。

大阪はセッション形式ではなくハンズオン形式だったため、前々から試したかったAzureとLANのサイト対サイトVPNの構築をもくもくしてきました。

完全にもくもく会だったので他の方が何をされていたのかもさっぱりわかりませんし、別にもくもくするだけならMSに行かなくてもいいのでは?という意見もわかるのですが、なんとなく場所が変わると気持ちも変わるということで。

ただ、LAN内にL2TP-VPNで接続してルーターの設定を触るという少しリスキーな設定をしていたので、操作ミスってVPNが切れたら素直にMicrosoft Learnを試すつもりでした。

結果

※再構築は成功しました

感想

ほんとにもくもくしていただけなので、特に感想らしいものもありませんが、家や会社でもくもくするより、世界的なイベントという名目で集まってもくもくした方が捗る気がしましたw

来年は飛び込みLTできるようになりたい。

写真とか

「Azure定番システム設計・実装・運用ガイド」第一章 Azureの基本と特徴

本書は日本マイクロソフトのAzureサポートチームの現役のサポートエンジニアが、日常のサポート業務から得たノウハウをAzure利用者の皆さんに伝授する書籍です。既存環境をAzureに移行する実践的なシナリオに沿って、なぜそのサービスを使う必要があるのか、どのようなことに注意して構成する必要があるのかといった、ベストプラクティスを解説します。巻頭には序文として、本書の背景となる、既存のシステム資産のクラウド化のポイントを、“赤間本”の赤間信幸氏が特別寄稿しています。

Azureの勉強のために良書と評判の「Azure定番システム設計・実装・運用ガイド」を読み進めています。

それなりにボリュームがあるので、章ごとに気になった点や自分用のメモをまとめていきたい。

1.1 Azureとは

  • Microsoftが提供しているクラウドサービスですよーとかAWSや他のクラウドサービス全般にいえる説明とか諸々。
  • 「準拠法を日本を選択できる」という特徴が挙がっていたが、これはAWSも2018年に対応済み。
  • AWSの大阪リージョンは限定機能だけど、Azureの西日本リージョンは一般リージョンとして利用できる(2019年4月に東日本リージョンで可用性ゾーンが利用できるようになったので少し差がついた)

1.2 世界的なサービス展開

1.3 IaasとPaas

代表的なIaaS

Iaas 機能
Virtual Machine (VM) Hyper-Vのディスクイメージをアップロードしたり、構成済みのOSイメージから仮想マシンが構築できる
Azure Storage データを保管する際のストレージサービス。ファイルやBLOBなどがある
仮想ネットワーク(VNET) Azure内に専用のプライベートネットワークを構築できる。VPNゲートウェイを利用してオンプレの環境と接続できる
Azure Load Balancer L4ロードバランサー。フロントエンド用のパブリックロードバランサーとVNET用のインターナルロードバランサーがある
Traffice Manager DNSを利用したトラフィックマネージャー。詳細が掴みきれていない
ExpressRoute プロバイダーが提供されるAzureとの専用線。セキュアで高速。
VPN Gateway AzureとオンプレミスをVPN接続できる。オンプレ=Azureの「サイト間」と、クライアント=Azureの「ポイント間VPN」がある

代表的なPaaS

Paas 機能
Azure SQL Database SQLServerをAzureに対応させたもの
Web App Webアプリケーションをホストできるサービス。マネージドWebサーバー。
Azure CDN コンテンツ配信サービス
Redis Cahe KVSで構成されるキャッシュ

基本的な用語

リソース

仮想マシンやストレージアカウント、仮想ネットワークなど。操作・管理できる要素の最小単位。

リソースグループ

  • リソースはどれか1つのリソースグループに属する
  • リソースグループに属するリソース群は一括でデプロイ、更新、削除される ← ?
  • 権限をまとめて設定できる

名前付け規則

この本の一番素晴らしいなと思ったところはこの名前付け規則のサンプルが都度載っているところ。 Microsoftのドキュメント、英語なんですよね…

docs.microsoft.com

Azureの管理者

管理者の種類 説明
アカウント管理者(必須) 金銭や契約に関する作業をする管理者。リソースの管理者権限はない。
サービス管理者(必須) Azureの各種サービスを利用する管理者。サブスクリプション内すべてのリソースへの管理権限がある
共同管理者 サービス管理者と同様にAzureの各種サービスを利用する管理者。サブスクリプションディレクトリの関連付けは変更できない
ロール管理者 RBAC(Role Based Access Control)でアクセス制限された管理者

コマンドラインツールとSDKAPI

機能 説明
Azure CLI クロスプラットフォームコマンドラインツール 。Bashなどのシェルからも実行できる
Azure PowerShell PowerShellのAzure向けモジュール。PowerShellLinuxMacでも動作する
Azure Cloud Shell AzurePortal(ブラウザー上)で実行するCLIPowerShell
Azure SDK .NETJavaPythonPHPに対応した開発ツールキット
サービス管理いAPI HTTPベースのREST API。「Azureサービス管理API」と「AzureリソースマネージャーAPI」の2種類がある

疑問点とかメモとか

  • Traffice Managerがよくわかっていない。5章で解説があるらしいので楽しみにしてる。
  • ポイント間サイトVPNがあれば拠点に固定IPがいらない?要調査。
  • ExpressRouteを提供しているプロバイダーと価格帯を調べておく
  • Azure SQL Database と SQLServerの機能の違いをおさえておく
  • リソースグループは「一括でデプロイ、更新、削除される」とあるが、「一括で行われる」とは?
  • 共同管理者の「ディレクトリ」とは?
  • サービス管理者と共同管理者のメールアドレスが正しいか確認しておく
  • Azure CLIを実行してみる