[SCCM/MECM]配布ポイントの優先度を上げて帯域の圧迫を軽減しよう!
MECM管理下の配布ポイントの優先度を上げることで、帯域を圧迫している配布ポイントの負担を減らせないか実際に検証してみました。
最初に
本記事の検証はあくまで弊社の検証環境で行ったものであり、本番環境で実施する際の挙動についての保証は致しかねます。ご了承ください。
気になる依頼がやって来た
先日弊社サポートにこんな依頼がありました。
境界グループに配布ポイントサーバとサイトサーバ(配布ポイントの役割追加済み)を関連付けしているが、 サイトサーバからのコンテンツの取得の割合が多くなっている。 配布ポイントサーバとサイトサーバ間で優先度をつけて、 サイトサーバからクライアントのコンテンツ取得率を下げられないか。
もし配布ポイントの優先度を上げることが出来れば帯域を圧迫している配布ポイントの負担を減らすなど運用に細かな調整ができるかもしれません。
「こ、これは気になる! 」
ということで配布ポイントの優先度の変更方法について調べてみました!
優先度はどこで確認できるのか
そもそも配布ポイントの優先度はどこで確認できるのでしょう?
それは…
プライマリサイトサーバのWMIのSMS_DistributionPointInfoクラス内「Priority」の値です!
WMI(Windows Management Instrumentation): 使用しているコンピュータの様々な情報を格納するデータベースを指します。 システム情報を取得する際に使用します。
配布ポイントの優先度を確認する方法
SMS_DistributionPointInfoクラスのPriorityの値は以下の方法で確認することができます。
1.「Win+R」で「ファイル名を指定して実行」を呼び出し、「wbemtest」と入力後、 [OK]をクリックします。
2.「Windows Management Instrumentationテスト」ウィンドウで、 [接続]をクリックします。
3.[名前空間]に「root\sms\site_サイトコード」を入力し、 [接続]をクリックします。
4.[クエリ]をクリックします。
5.「select * from SMS_DistributionPointInfo」を入力し、 [適用]をクリックします。
6.優先度を確認したい配布ポイントをダブルクリックします。( 今回は「SUPPORT-DP.support,com」を選択してみます。)
7.画面真ん中のウィンドウ内から「Priority」を確認してください。
Priorityの値はあくまでも「優先度」
Priorityの値は規定では「200」で設定されていて、 数値が低ければ低いほど優先度が上がります。
ただし注意しなければいけないのが、 Priorityの値はあくまでも「優先度」です。
Priorityの値が低い配布ポイントがビジー状態の場合や、 そもそも通信が行えない場合には他に関連付けられたポイントを勝手に参照してしまいますので注意して下さい。
優先順位を設定値で変更する方法
優先順位の手動変更は不可
……まぁまぁ難しい話は置いておいて優先度はここで修正できそうなことが分かりました。
この数値を手動で変えればちょちょいのちょい!
……あれ?数値を変えたのに再度確認したら元の値に戻ってる?
どうやら手動での変更は受け付けていないようです。
なお仮に手動での変更を受け付けたとしても、WMIは前述の通りコンピュータの様々な情報を格納するデータベースです。 誤って関係ない箇所を変更してしまいコンピュータの挙動がおかしくなるリスクも考えられますので、WMIの操作の際は十分に注意しましょう。
優先順位はPowerShellで変更しよう
WMIの設定値を変更するのは大変なリスクがあることはわかった。
それでも!変えたい配布ポイントの優先度があるんだ!……という方もいると思います。
でも安心してください。
PowerShellを使用することでPriorityの値の変更と変更した値の維持が可能となっています。
下記にPriorityの値を変更するパワーシェルのコマンドレットを用意しました。
このコマンドレットをプライマリサイトサーバ上でWindows Powershell ISEを起動した後、設定箇所の内容を実際の環境に合わせて書き換えて実行することで、優先順位の変更が可能となります。
下記コマンドレット実行の際は設定箇所以外の部分は絶対に変更を行わないようにしてください。
###############設定箇所################ $targetDp=”\\\\優先度変更したい配布ポイントサーバのFQDN” $sdkserver="プライマリサイトサーバのFQDN" $siteCode="サイトコード" $priorityValue = 任意の数値 ################設定箇所ここまで################# ################これより下のコードは書き換えないでください!################# $dp = gwmi -computer $sdkserver -namespace "root\sms\site_$sitecode" -query "select * from SMS_SCI_SysResUse where RoleName = 'SMS Distribution Point' and NetworkOSPath = '$targetDp'" $props = $dp.Props $prop = $props | where {$_.PropertyName -eq "Priority" } Write-Output "Current DistributionPoint Priority = " $prop.Value $prop.Value = $priorityValue Write-Output "Updating the DistributionPoint Priority to = " $priorityValue $dp.Props = $props $dp.Put()
設定した数値を一覧で確認してみよう
複数の配布ポイントがある場合、どこまで設定したか確認したい場合、現在の設定した値を一覧で比較したいという場合は、下記のコマンドレットを使用します。
-----------------------------コマンドレット開始-------------------------------------- $dpinfo = Get-WmiObject -Query "SELECT NALPath, Priority, SiteCode, TransferRate, Description FROM SMS_DistributionPointInfo" -Namespace "ROOT\SMS\site_サイトコード" -ComputernName "プライマリサイトサーバのFQDN " | select NALPath, Priority, SiteCode, TransferRate $dpinfo | Out-GridView -----------------------------コマンドレット終了--------------------------------------
このコマンドレットを使用すると、このように配布ポイント名を一覧で表示できます。
※優先度変更のコマンドレットおよび配布ポイントの優先度をリストとして表示するコマンドレットは下記のサイトを参考にさせて頂きました。
実際に検証してみた
実際Priorityの値を変更するとどうなるのか検証してみました。
検証環境
検証環境の構成 | MECMサーバ/配布ポイントサーバ/クライアント2台 |
---|---|
MECMサーバOS | Windows Server 2016 |
MECMバージョン | 2107 |
クライアントOS | Windows 10 20H2 |
検証方法
1.MECMサーバから、Chromeのインストーラーを2台のクライアントに展開する。
2.クライアントの「ContentTransferManaget.log」からコンテンツのダウンロード元を確認する。
3.確認終了後、クライアントをチェックポイントを使用して展開前の状態に復元する。
4.1~3を各クライアントに5回ずつ実施する。
5.配布ポイントサーバのPriorityの値を100に変更し、再度1~2を実施する。
検証結果
結果が下記の表となります。
優先度に差をつけなかった場合
優先度に差をつけた場合
表を比較すると、Priorityの値が同一の場合、クライアントはそれぞれ別々の場所からコンテンツのダウンロードしており、プライマリサイトサーバと配布ポイントそれぞれ5回ずつ使用されています。
対して配布ポイントサーバ側のPriorityの値を低く設定すると、配布ポイントからのみ取得しているケースがある事が確認できますね。
この結果から、確かにPriorityの値を低く設定することで配布ポイントサーバの優先度を上げることが可能のようです。
最後に
ブログの最初にも書きましたが配布ポイントに優先度をつけることでより細かな運用が可能となります。
他にもアーザスではMECMの構築から運用までサポートしています。お気軽にご相談下さい!