SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for the ‘Azure Stack HCI’ Category

AVD for Azure Stack HCI のセッションホスト用マスターイメージを作成する際の参考情報

leave a comment

基本的には AVD for Azure と同じなのですが、セッションホストのマスターイメージを作成する際に参考する情報をまとめておきたいと思います。(ブラウザで開いたままのタブを整理したかったということもあります)

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 13th, 2023 at 11:46 pm

Posted in Azure Stack HCI

Tagged with

Azure Stack HCI 上で Marketplace の Windows Client OS を展開した際のライセンス認証について

leave a comment

プレビュー機能となりますが、Azure Stack HCI では次の 2 つの機能を使用して、Azure Marketplace で提供されている Windows Client OS のイメージ (Multi Session 対応の Windows 10 / 11) を展開することが可能です。

Windows Client OS のイメージを実際に展開すると、環境がわかるのですが、Marketplace で提供されているこれらの OS イメージでは [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform] を確認しても KMS の設定はされておらず、それ以外の方法を使用して認証が行われています。

本投稿では Azure Stack HCI 上に展開した Marketplace の Windows Client OS のライセンス認証について情報をまとめておきたいと思います。

基本的な考え方としては Windows OS のアクティブ化 の次の記載が該当します。

Windows VM は、Azure Stack HCI で使用する前にライセンス認証を行い、アクティブ化する必要があります。

マルチセッション OS VM (Windows 10、Windows 11、またはそれ以降) をアクティブ化するには、VM の作成後に VM で Azure 特典を有効にします。 ホスト コンピューターでも Azure 特典が有効になっていることを確認します。 詳細については、「Azure Stack HCI での Azure 特典」を参照してください。

注意

Azure 特典が必要な VM ごとにアクセスを手動で有効にする必要があります。

他のすべての OS イメージ (Windows Server やシングル セッション OS など) については、Azure 特典は必要ありません。 既存のアクティブ化方法を引き続き使用してください。 詳細については、Azure Stack HCI での Windows Server VM のアクティブ化に関するページを参照してください。

 

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 11th, 2023 at 9:29 pm

Posted in Azure Stack HCI

Tagged with

Azure Stack HCI で評価版の Windows Server をベースにしてサブスクリプションで Windows Server を利用する

leave a comment

Azure Stack HCI 上で Windows Server を実行する場合、Windows Server サブスクリプション という利用形態で Windows Server OS を実行することができ、詳細については次のドキュメントで解説が行われています。

価格については Azure Stack HCI の価格 に記載されており、Azure Stack HCI のホスト OS の物理コアによる月額コストとなり、サブスクリプションモデルで、Windows Server OS の仮想マシンを実行する場合は、実行している仮想マシン単位のコストを考慮しなくてもよくなります。

image

ライセンス オプションの比較 に、次のように記載されていますが、CAL についても不要となり、シンプルな考え方で Windows Server を使用することができるようになります。

Windows Server サブスクリプションについても Azure Stack HCI の 60 日間の評価内容に含まれており、評価期間内であれば、コストを発生させることなく検証をすることができます。

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 4th, 2023 at 1:28 pm

Posted in Azure Stack HCI

Tagged with

Azure Virtual Desktop for Azure Stack HCI の物理検証環境を構築してみる

leave a comment

Azure Virtual Desktop (AVD) for Azure Stack HCI の検証環境については、Announcing Jumpstart HCIBox でアナウンスされた、Nested Hyper-V の環境を使用して構築することができます。

Azure Arc や Azure Stack HCI の評価環境ですが、Nested 環境として作るのもよいのですが、物理環境で構築したほうが、より実運用に近くなるのではないでしょうか。

ということで、自宅で AVD for Azure Stack HCI の検証環境を、物理環境で作った際のメモを。

Read the rest of this entry »

Written by Masayuki.Ozawa

11月 23rd, 2022 at 5:23 pm

Azure Stack HCI 上で SQL Server 2012 を稼働させた場合の ESU の登録方法

leave a comment

SQL Server 2012 は、2022/7/12 にサポートが終了し、現在は、拡張セキュリティ更新プログラム (ESU) でのみ Microsoft からサポートされるソフトウェアとなりました。

SQL Server の ESU については SQL Server 用の延長セキュリティ更新プログラムとは で情報がまとめられており、Azure Stack HCI 上で動作させた場合の特典についても本情報で次のように記載されています。(拡張セキュリティ更新プログラム (ESU) について でも情報がまとめられています)

Azure サービス。 オンプレミス サーバーを次のいずれかの Azure サービスに移行する場合は無料であり、既定で有効になります。

Azure Stack HCI で Azure 特典 を使用している場合、Azure サービスでの動作となり、ESU を特典として利用することができるため、Windows Server / SQL Server の ESU 提供を無償で受けることが可能となります。

当ブログでも、Windows Server 向けの ESU については、次の投稿で検証を実施していました。

SQL Server 向けについては SQL Server 2012 対応した内容の検証ができていなかったのですが、SR で問い合わせをさせていただきながら情報を把握することができたので、本投稿でまとめておきたいと思います。

ESU では、次の二つの内容が提供されています。

  • セキュリティ更新プログラムの提供
  • 適切な Microsoft のサポートプランを介した SQL Server 2012 のテクニカルサポートの提供

現状セキュリティ更新プログラムは提供されていないため、本投稿で確認している内容については、セキュリティ更新プログラムの提供を受けるための事前準備までとなります。

Read the rest of this entry »

Written by Masayuki.Ozawa

8月 3rd, 2022 at 4:08 pm

Azure Stack HCI 単一ノードクラスターの評価環境を作成して ESU の検証環境を作成する

leave a comment

ライフサイクルサポートが終了した、Windows Server / SQL Server については、2008 以降は ESU (拡張セキュリティ更新プログラム) が提供されます。

ESU は有償のプログラムですが、Windows Server 2012、2012 R2、および SQL Server 2012 のサポート終了に備える で次のように記載されている通り、Azure のサービスと組み合わせることで無償で提供を受けることができます。

無料の拡張セキュリティ更新プログラムは、Azure Virtual Machines、Azure 専用ホスト、Azure VMWare Solution、Azure Nutanix Solution、Azure Stack Hub/Edge/HCI などの Azure のお客様が利用できます。

今回、検証で使用する Azure Stack HCI も対象となっており、Azure Stack HCI 上で動作している仮想マシンについても無償で ESU を受けることができる環境となります。

Build 2022 で Azure Stack HCI 単一ノードクラスターの一般提供 (GA) がアナウンスされました。

以前、別の評価に使用していた NUC8v7PNH が 1 台空いたので、この Azure Stack HCI 単一ノードの評価用としてセットアップして、ESU の適用を行うことろまで確認できましたので、情報をまとめておきたいと思います。

ESU については、次のドキュメントを参考にするとよいかと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

7月 5th, 2022 at 10:23 pm

Posted in Azure Stack HCI

Tagged with

CPU 要件を満たしていているが Nested Hyper-V (入れ子になった仮想化) が有効化できない場合の対応

leave a comment

検証用で使用している Intel NUC Gen11 (NUC11TNHv70L) の CPU は、Core i7-1185G7 が搭載されており、VT-x が使用できますので、Nested Hyper-V (入れ子になった仮想化) を使用することができる CPU となっています。

Nested Hyper-V の有効化については、入れ子になった仮想化による仮想マシンでの Hyper-V の実行 で公開されており、今回使用している NUC のような物理ハードウェア上にインストールした仮想マシンで実行するのであれば、

  • Nested Hyper-V を有効にしたい仮想マシンが停止した状態で、Nested Hyper-V を有効化
    • Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
  • Nested Hyper-V を有効にしたい仮想マシンで MAC アドレスのスプーフィングを有効化する
    • Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On

ことで、Nested Hyper-V を使用することができます。

しかし、今回使用している Gen 11 の NUC では、上記の対応を行っても Nested Hyper-V を有効化することができませんでした。

Twitter でつぶやいたところ次のようなアドバイスをいただき、教えていただいた方法を使用することで Nested Hyper-V を有効化することができました。

今後も何回か同じ事象でハマりそうなので、対応方法を残しておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 18th, 2021 at 8:40 pm

AKS on Azure Stack HCI の v1.21.2 の k8s でコントロールプレーンノードの再起動後に k8s が起動しない

leave a comment

タイトルの通りですが、AKS on Azure Stack HCI の k8s を v1.21.2 で展開した後に、コントロールプレーンノードを再起動した後に k8s が起動しないという事象が発生しました。

「systemctl status kubelet」で状態を確認してみると、次のようなエラーが発生し、kubelet が起動していませんでした。

Nov 30 11:35:13 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:13.936688     741 kuberuntime_sandbox.go:68] "Failed to create sandbox for pod" err="rpc error: code = Unknown desc = failed to get sandbox image \"ecpacr.azurecr.io/pause:3.2\": failed to pull image \"ec
pacr.azurecr.io/pause:3.2\": failed to pull and unpack image \"ecpacr.azurecr.io/pause:3.2\": failed to resolve reference \"ecpacr.azurecr.io/pause:3.2\": failed to authorize: failed to fetch anonymous token: unexpected status: 401 Unauthorized" pod="kube-system
/etcd-moc-lrr9qh1ew26"
Nov 30 11:35:13 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:13.936713     741 kuberuntime_manager.go:790] "CreatePodSandbox for pod failed" err="rpc error: code = Unknown desc = failed to get sandbox image \"ecpacr.azurecr.io/pause:3.2\": failed to pull image \"ec
pacr.azurecr.io/pause:3.2\": failed to pull and unpack image \"ecpacr.azurecr.io/pause:3.2\": failed to resolve reference \"ecpacr.azurecr.io/pause:3.2\": failed to authorize: failed to fetch anonymous token: unexpected status: 401 Unauthorized" pod="kube-system
/etcd-moc-lrr9qh1ew26"
Nov 30 11:35:13 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:13.936764     741 pod_workers.go:190] "Error syncing pod, skipping" err="failed to \"CreatePodSandbox\" for \"etcd-moc-lrr9qh1ew26_kube-system(8e85a0583a698c64f4daca0d375decfa)\" with CreatePodSandboxErro
r: \"Failed to create sandbox for pod \\\"etcd-moc-lrr9qh1ew26_kube-system(8e85a0583a698c64f4daca0d375decfa)\\\": rpc error: code = Unknown desc = failed to get sandbox image \\\"ecpacr.azurecr.io/pause:3.2\\\": failed to pull image \\\"ecpacr.azurecr.io/pause:3
.2\\\": failed to pull and unpack image \\\"ecpacr.azurecr.io/pause:3.2\\\": failed to resolve reference \\\"ecpacr.azurecr.io/pause:3.2\\\": failed to authorize: failed to fetch anonymous token: unexpected status: 401 Unauthorized\"" pod="kube-system/etcd-moc-l
rr9qh1ew26" podUID=8e85a0583a698c64f4daca0d375decfa
Nov 30 11:35:13 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:13.981869     741 kubelet.go:2291] "Error getting node" err="node \"moc-lrr9qh1ew26\" not found"
Nov 30 11:35:14 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:14.035070     741 event.go:273] Unable to write event: '&v1.Event{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, ObjectMeta:v1.ObjectMeta{Name:"moc-lrr9qh1ew26.16bc4fcc087e2ba6", GenerateName:"", Namespace
:"default", SelfLink:"", UID:"", ResourceVersion:"", Generation:0, CreationTimestamp:v1.Time{Time:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}}, DeletionTimestamp:(*v1.Time)(nil), DeletionGracePeriodSeconds:(*int64)(nil), Labels:map[string]string(nil),
Annotations:map[string]string(nil), OwnerReferences:[]v1.OwnerReference(nil), Finalizers:[]string(nil), ClusterName:"", ManagedFields:[]v1.ManagedFieldsEntry(nil)}, InvolvedObject:v1.ObjectReference{Kind:"Node", Namespace:"", Name:"moc-lrr9qh1ew26", UID:"moc-lrr
9qh1ew26", APIVersion:"", ResourceVersion:"", FieldPath:""}, Reason:"Starting", Message:"Starting kubelet.", Source:v1.EventSource{Component:"kubelet", Host:"moc-lrr9qh1ew26"}, FirstTimestamp:v1.Time{Time:time.Time{wall:0xc061a0f98b59afa6, ext:11623948584, loc:(
*time.Location)(0x74be600)}}, LastTimestamp:v1.Time{Time:time.Time{wall:0xc061a0f98b59afa6, ext:11623948584, loc:(*time.Location)(0x74be600)}}, Count:1, Type:"Normal", EventTime:v1.MicroTime{Time:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}}, Series:(*v
1.EventSeries)(nil), Action:"", Related:(*v1.ObjectReference)(nil), ReportingController:"", ReportingInstance:""}': 'Post "https://10.5.0.2:6443/api/v1/namespaces/default/events": EOF'(may retry after sleeping)
Nov 30 11:35:14 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:14.082278     741 kubelet.go:2291] "Error getting node" err="node \"moc-lrr9qh1ew26\" not found"
Nov 30 11:35:14 moc-lrr9qh1ew26 kubelet[741]: I1130 11:35:14.104104     741 trace.go:205] Trace[2056973426]: "Reflector ListAndWatch" name:k8s.io/client-go/informers/factory.go:134 (30-Nov-2021 11:35:02.280) (total time: 11824ms):
Nov 30 11:35:14 moc-lrr9qh1ew26 kubelet[741]: Trace[2056973426]: [11.824032031s] [11.824032031s] END
Nov 30 11:35:14 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:14.104137     741 reflector.go:138] k8s.io/client-go/informers/factory.go:134: Failed to watch *v1.RuntimeClass: failed to list *v1.RuntimeClass: an error on the server ("") has prevented the request from
 succeeding (get runtimeclasses.node.k8s.io)
Nov 30 11:35:14 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:14.182788     741 kubelet.go:2291] "Error getting node" err="node \"moc-lrr9qh1ew26\" not found"

 

kubelet の起動のパラメーターを見ると、「–pod-infra-container-image=ecpacr.azurecr.io/pause:3.2」が指定されており、上記のメッセージでも pause コンテナーのイメージのアクセスでエラーが発生しているようでした。

image

Read the rest of this entry »

Written by Masayuki.Ozawa

11月 30th, 2021 at 8:53 pm

Posted in Azure Stack HCI

Tagged with

ACR と Helm と SQL Server のメモ

leave a comment

ACR に格納した Helm のチャートで SQL Server の展開を行おうとした場合のメモ。

AKS on HCI でも一部の展開には Helm が使用されているので、概要はつかんでおかないとと思った次第です。

この辺の情報を取り掛かりにすれば、手を動かすことはできそうです。

Read the rest of this entry »

Written by Masayuki.Ozawa

9月 30th, 2021 at 9:16 am

AKS on Azure Stack HCI (Windows Server 2019) に対して Azure DevOps でパイプラインを実行するためのメモ

leave a comment

AKS on Azure Stack HCI (OS は HCI OS ではなく、Windows Server 2019) に対して、Azure DevOps パイプラインを実行しようと思った際の作業した内容のメモを。

最終的には Azure Arc Enabled Kubernetes の GitOps を使用することになるのかなとは思うのですが、今回はそこまでは試せていません。

Read the rest of this entry »

Written by Masayuki.Ozawa

9月 6th, 2021 at 10:35 pm