824 Views
February 18, 23
スライド概要
Windows Server & Cloud User Group Japan 第33回勉強会の資料です。
ArcBox の DataOps フレーバーを使用して SQL Managed Instance の PoC / 学習環境を構築する方法について紹介します。
インフラエンジニア
Azure Arc Jumpstart Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築 SCUGJ (wSCUGJ) 勉強会 #33 2023-02-18 Kazuki Takai Windows Server & Cloud User Group Japan
お話しすること • ArcBox の DataOps flavor について • 環境の構築方法 • サンプルシナリオ • 以下はお話ししません • DataOps 以外の flavor の詳細 • 2022年6月(第30回)の勉強会資料をご確認ください
自己紹介 • たかい (Kazuki Takai) • 会社員 (某ISP勤務) • サービス基盤開発、技術開発 • ライセンス関連 • wSCUGJ • 興味分野:統合管理、ID、自動化、セキュリティ、監視・運用 • 趣味:カメラ(風景写真)、ビデオゲーム、旅行(温泉) • Microsoft MVP for Cloud and Datacenter Management
Azure Arc Jumpstart ArcBox とは • Azure Arc のお試し環境を Azure 上に簡単に構築 する仕組みを提供 • Azure VM 上で Nested virtualization を使用して、 オンプレミス相当の環境を疑似的に構成 • PoC やデモ環境、ハンズオンなどでの利用を想定 https://azurearcjumpstart.io/azure_jumpstart_arcbox/
ArcBox の特徴 • お手軽 • 物理的なハードウェアの準備が不要 • 必要なすべてのリソースは、Azure サブスクリプション の中に作成(したリソース上で稼働) • あくまで一時的な検証用 • セキュリティの観点では、目を瞑っていることが多い • Azure サブスクリプションは検証用に(専用に)確保し たほうが良い
ArcBox のフレーバー • ArcBox の構成セットの種類 • 全てを利用可能な環境を生成すると、リソース消費量が膨大 • ロールごとにある程度纏まったシナリオを確認できる環境を構成 • 現在のフレーバーは4種類 • Full • ITPro • DevOps • DataOps
ArcBox のアーキテクチャー (Full / ITPro) https://azurearcjumpstart.io/azure_jumpstart_arcbox/full/ より引用 ITPro
ArcBox のアーキテクチャー (DevOps) https://azurearcjumpstart.io/azure_jumpstart_arcbox/devops/ より引用
ArcBox のアーキテクチャー (DataOps) https://azurearcjumpstart.io/azure_jumpstart_arcbox/dataops/ より引用
どの flavor を使う? 1 2 3 サーバーの管理 Kubernetes の管理と • ITPro flavor CI/CD(GitOps) SQL Managed Instance のオペレーション • DevOps flavor • DataOps flavor
DataOps flavor の構成(仮想マシン) ホスト名 役割 jumpstart.local ドメイン参加 親ホスト (稼働ホスト) OS ArcBox-Client 基盤となる Azure VM ホスト ✔ (Azure) Windows Server 2022 ArcBox-ADDS Azure Stack HCI Node #1 ✔ (Azure) Windows Server 2022 ArcBox-SQL Azure Arc enabled SQL Server ArcBox-Client Windows Server 2019 ArcBox-CAPI-MGMT CAPI MGMT Host (Azure) Ubuntu 20.04 arcbox-capi-data-NNNNcontrol-plane-XXXXX Kubernetes Cluster (CAPI) Control Plane (Azure) Ubuntu 22.04 arcbox-capi-data-NNNNmd-Y-ZZZZZ Kubernetes Cluster (CAPI) Worker Node (Azure) Ubuntu 22.04
DataOps flaver デプロイされるリソース
ArcBox の展開に必要なもの • Azure Subscription • 42 B-series vCPUs and 56 DSv4 vCPUs • テナントとサブスクリプションを操作可能なアカウント • Azure AD に対してサービスプリンシパルを作成可能 • サブスクリプションの IAM 設定を変更可能 • Az CLI と git コマンドが使用可能な環境 • Azure Cloud Shell • Windows Terminal
East US East US 2 Central US West US 2 展開可能な リージョン North Europe West Europe France Central UK South Australia East Japan East Korea Central Southeast Asia
デプロイ処理のフロー https://azurearcjumpstart.io/azure_jumpstart_arcbox/dataops/ より引用
デプロイ手順 1. 前提条件の確認 2. リソースプロバイダーの登録 3. サービスプリンシパルの作成 4. SSH キーペアの作成 5. パラメーターファイルの修正 6. デプロイ 7. デプロイ後スクリプトの実行
前提条件の確認 • Azure CLI のバージョンが 2.40.0 以上であること • az --version • Az CLI にログインしていること • az login • az account show | grep -E '[Nn]ame' | grep -vF '@' • az account set -n "<Subscription Name>" • デプロイ可能な vCPU の空きがあること • B-series 42 コア分 • DSv4 56 コア分
前提条件の確認
vCPU のクォータ・デプロイ可能数の確認
• az vm list-usage --location eastus --query "[?(name.value == ¥`cores¥` ||
name.value == ¥`virtualMachines¥` || name.value ==
¥`standardDSv4Family¥`)].{Name:localName, Current:currentValue,
Limit:limit}" --output table
• az vm list-skus --location eastus --size Standard_D4s --all --output
table
リソースプロバイダーの登録・登録確認 • az provider register --namespace Microsoft.Kubernetes --wait • az provider register --namespace Microsoft.KubernetesConfiguration --wait • az provider register --namespace Microsoft.ExtendedLocation --wait • az provider register --namespace Microsoft.AzureArcData --wait • az provider register --namespace Microsoft.OperationsManagement –wait • az provider list --output=table | grep -E '^Microsoft¥.(Kubernetes(Configuration)*|ExtendedLocation|AzureArcData|Ope rationsManagement)'
サービスプリンシパルの作成 • Owner ロールを持つサービスプリンシパルを作成 • spName="SCUGJ33-Demo-DataOps33" • az ad sp create-for-rbac -n $spName --role "Owner" -scopes /subscriptions/$(az account show --query id -output tsv) appId, password, tenant は使うのでメモ
SSH キーペアの作成 / テンプレート取得 • SSH 公開鍵ペアの作成 • ssh-keygen -t rsa -b 4096 • デプロイに使用するテンプレートを取得 • git clone https://github.com/microsoft/azure_arc.git
デプロイパラメーターファイルの修正 • ARM のパラメータファイルを編集 • cd ./azure_arc/azure_jumpstart_arcbox/ARM/ • vi ./azuredeploy.parameters.json • パラメーターの意味は次項参照
デプロイパラメーターファイルの修正 パラメーター名 設定する値 sshRSAPublicKey SSH 公開鍵を設定(デプロイする Linux 環境用) spnClientId サービスプリンシパルの ID (appId) spnClientSecret サービスプリンシパルのシークレット (password) spnTenantId サービスプリンシパルを作成した Azure AD のテナント ID (tenant) windowsAdminUsername デプロイする Windows VM の管理者アカウント名 windowsAdminPassword 上記管理者アカウントのパスワード logAnalyticsWorkspaceName この環境用に新規にデプロイする Log Analytics ワークスペースの名前 flavor フレーバーを指定(今回は DataOps) deployBastion デプロイする VM へ Bastion 経由で接続を行う場合は true VM の Global IP Address を指定して直接 RDP 接続する場合は false
デプロイパラメーターファイル
リソースグループの作成 • rgName="SCUGJ33-Demo33" • echo $rgName • az group create --name $rgName --location eastus
デプロイ • az deployment group create --resource-group $rgName --template-file azuredeploy.json --parameters azuredeploy.parameters.dataops.json デプロイ完了まで、40分程度かかります また、デプロイ完了後時間を置いたほうが、 Post-Deploy に成功しやすくなります
デプロイ履歴 Post-Deploy スクリプトによるデプロイ 前項の ARM テンプレートによるデプロイ
デプロイ後の自動処理 • デプロイ完了後、ArcBox-Client へログオン • パラメーターとして指定したユーザーとパスワードを使用 • <username>@jumpstart.local でログオンすること • Global IP 経由で接続する場合、NSG の設定変更が必要 • ArcBox-NSG で RDP のインバウンド接続を許可 • ログオンすると PowerShell Script が実行される • 完了するまで待つ(1時間程度) • デスクトップ背景が変更されたら完了
デプロイ完了後、最初に確認すること • リソースグループのデプロイ履歴を確認 • Azure Portal ⇒ リソースグループ ⇒ デプロイ • 全てのデプロイが成功していることを確認 割と失敗するので、必ず確認することを推奨
デプロイに失敗している例
例えば何ができるか • SQL Stress ツールを使用したロードテスト • 各種運用管理ツールや監視ツール経由でのモニタリング・検知 • Azure Data Studio からの接続や操作 • Grafana を使用したメトリック情報の表示 • BookStore サンプルアプリケーションからの DB アクセス • High Availability • Point-in-time Restore • DR (サイト間 Failover)
Demo
デプロイ完了後のデスクトップ
SQLMI Endpoints テキストファイル • デプロイ完了後、ArcBox-Client のデスクトップに SQLMI Endpoints という名前のテキストファイルが 生成される • 各種エンドポイントの情報(FQDN)や、アカウント 情報などが記載されている
Azure Data Studio による接続確認 • デプロイ完了後、ArcBox-Client のデスクトップに SQLMI Endpoints という名前のテキストファイルが 生成される • 各種エンドポイントの情報(FQDN)や、アカウント 情報などが記載されている
DNS 名の登録確認 • デプロイ完了後、ArcBox-Client のデスクトップに SQLMI Endpoints という名前のテキストファイルが 生成される • 各種エンドポイントの情報(FQDN)や、アカウント 情報などが記載されている
SQL Query ストレスツール • SqlQueryStress ツール • インストール済み • デスクトップのショートカットから起動 • 各種データベースインスタンスに接続し、負荷をかける ことが可能 • モニタリングツールの動作・表示確認等で使用可能
SQL Query ストレスツール 1. Database ボダンを押して接続設定画面を開く 2. CAPI external endpoints DNS name for AD Authentications のエンドポイントをサーバーと して指定 3. Default Database に AdoventureWorks2019 を指定 4. Test Connection をクリックし、接続に成功することを確認 5. 以下のクエリを貼り付け • exec [dbo].[uspGetEmployeeManagers] @BusinessEntityID = 8 6. ストレスパターンとして以下を設定 • Number of Iterations : 100000 • Number of Threads : 5 • Delay between queries (ms) : 1 7. GO をクリック
ハマるかもしれないポイント • Cloud Shell で az ad コマンドを実行するとエラーになる • Failed to connect to MSI. Please make sure MSI is configured correctly. Get Token request returned: <Response [400]> • おそらくバグです • (本来必要ないですが)明示的に az login してください
まとめ • ArcBox の DataOps flavor を使うとお手軽に PoC や学習のための Arc 対応 SQL MI 環境を作成可能 • ハードウェアが無くてもお試しできるので便利 ※お金はかかります • Azure デプロイ後の初期構成に結構時間がかかる ので注意
参考資料 • Azure Arc Jumpstart • https://azurearcjumpstart.io/ • Azure Arc Jumpstart ArcBox – DataOps flavor • https://azurearcjumpstart.io/azure_jumpstart_arcbox/ dataops/