Windows Server 2008 以降のクラスターではクライアントアクセスポイント (CAP) で作成されるネットワーク名は Kerberos 認証が有効になっているため Active Directory 上に仮想コンピューターオブジェクト (VCO) としてコンピューターアカウントが作成されます。
# Windows Server 2003 はデフォルトの設定では Kerberos 認証が無効な状態だったので、ネットワーク名のリソースを作成してもコンピューターアカウントは作成されていませんでした。
SQL Server 2008 以降をクラスターインスタンスとしてインストールした場合もコンピューターアカウントが作成されたりするのですが。
# Windows Server 2003 のクラスター上に SQL Server のクラスターインスタンスをインストールした場合も作成されます。
クライアントアクセスポイントを作成する際にちょっとした注意点があるのでまとめてみたいと思います。
■クライアントアクセスポイントを作成する際に使用されるアカウント
クラスター構築時に作成されるクラスター コア リソースのクライアントアクセスポイントが作成される際には以下の要件を満たす必要があります。
クラスターの構築はドメインユーザーのアカウントでログオンをして実行する必要がるのですが、最初の構築のタイミングでクラスターのクライアントアクセスポイントが作成されます。
クライアントアクセスポイントの作成は [操作を実行しているドメインユーザーの権限] を使用して行われるため、作業をしているドメインユーザーがコンピューターアカウントを作成するための条件を満たしている必要があります。
Windows Server 2008 以降ではクラスターのサービス (Cluster Service : ClusSvc) はドメインユーザーではなく Local System で起動されるため、初期の操作に関してはサービスアカウントではなく、操作をしているアカウントが使用されます。
# 2003 以前のクラスターではサービスはドメインユーザーで起動されていました。
通常、ドメインユーザー (正確には [Authenticated Users]) は[ドメインにワークステーションを追加] の権限が付与されています。
[Authenticated Users] は [10 台] (ms-DS-MachineAccountQuota の設定値) までドメインにワークステーションを追加できる (コンピューターアカウントを作成できる) のですが、クラスター構築時はこの権限だけではエラーとなるため、明示的に権限を付与するかコンピューターアカウントを準備する必要があります。
適切な状態になっていない場合はクラスターの構築時に以下の画面から先に進むことができなくなります。
この辺はクラスターの検証でも条件が表示されているのでわかりやすいですね。
クラスターの構築時に指定したクラスター名はクラスター名オブジェクト (CNO) として、クラスターの各種操作のセキュリティコンテキストとして利用がされます。
# ちょっとわかりにくい表現になりますが AD 上には CNO (クラスター名オブジェクト) が VCO (仮想コンピューターオブジェクト) として作成されます。
クラスター上のオブジェクトでいうと、[クラスター コア リソース] の VCO が CNO となります。
それでは、クラスター構築後にクライアント アクセス ポイントを作成した時を考えてみたいと思います。
# SQL Server のクラスターインスタンス作成時に設定されるクライアント アクセス ポイントも考え方は同じです。
特定のクラスター グループに外部からアクセスする場合は、クライアント アクセス ポイントが必要となります。
クライアント アクセス ポイントにはネットワーク名リソースが含まれており、Kerberos 認証が有効になっているため、作成時には AD 上にコンピューターアカウントが作成されます。
このコンピューターアカウントの作成ですが、[CNO のコンピューターアカウント] の権限を使用して作成されます。
また、コンピューターアカウントは [オンラインにしたタイミングで作成] されます。
クラスターのコンピューターアカウントに使用されるユーザーを簡単にまとめると下表のようになるかと。
種類 | 使用されるユーザー |
CNO のコンピューターアカウント | クラスター構築時をする際にログオンしていたドメインユーザー |
CAP のコンピューターアカウント | CNO のコンピューターアカウント |
■CAP を複数作成する際の注意点
CAP のコンピューターアカウントですが前述のとおり、CNO のコンピューターアカウントを使用して作成されます。
通常、CAP を大量に作成することはないと思いますが、10 個以上の CAP を作成する際には注意が必要になります。
以下の画像のように複数の CAP を作成してみます。
CLUS-TEST1 ~ 11 まで 11 の CAP を用意しています。この状態ですべての CAP がオンラインにできるか試してみます。
CLUS-TEST1~10 まではオンラインにすることができましたが CLUS-TEST11 をオンラインにしようとした際には [失敗] となります。
イベントビューアーから以下のエラーが発生していることが確認できます。
CAP をオンラインにしたタイミングでコンピューターアカウントがドメインコントローラー上に作成されますが、CNO のコンピューターアカウントを使用して作成できるコンピューターアカウントについても [Authenticated Users] と同様の制約が適用されるため [10 台] までしかコンピューターアカウントを作成することができません。
2008 以降のクラスターでは CAP は Kerberos 認証が有効の設定となっているため、ドメイン上にコンピューターアカウントが作成された状態でないと、ネットワーク名のリソースはオンラインにすることができず、失敗となります。
10 個以上の CAP を作成する必要がある場合は、以下のどれかの対応をする必要があるかと思います。
# どの方法を使用するかはドメイン運用ポリシーに依存するかと。
- CNO のコンピューターアカウントに [Account Operatos] の権限を付与
- CNO のコンピューターアカウントに [Computers] コンテナーの [コンピューター オブジェクト] 作成の権限を委任する
- [ms-DS-MachineAccountQuota] の設定を変更し 10 台を超える登録を可能にする
- 事前にコンピューターアカウントを作成 (事前に作成する場合は、作成したコンピューターアカウントに CNO のフルコントロールを付与して、コンピューターアカウントは無効の状態にする)
これらの対応のいずれかをすることで、コンピューターアカウントを 10 を超えて作成できるようになります。
CNO と CAP でコンピューターアカウントを作成する際に使用するユーザーが異なっているので、この辺をよく忘れてしまうのですよね…。
一度投稿に残しておけばこれを足掛かりに思い出せそうです。