SLES 従量課金制の登録のトラブルシューティング


このドキュメントでは、従量課金制(PAYG)の SUSE Linux Enterprise Server(SLES)を実行している Compute Engine 仮想マシン(VM)インスタンスを SUSE サブスクリプション管理ツール(SMT)リポジトリに接続するときに発生する可能性のある問題を解決する方法について説明します。

始める前に

  • VM にサービス アカウントが関連付けられていることを確認します。
  • VM から Service Metadata API にアクセスできることを確認します。
  • sc-repocheck ツールを使用すると、問題を自動的にトラブルシューティングできます。
  • SUSE PAYG のトラブルシューティングガイドで説明されている手順を確認します。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

ネットワークに関する問題

解決できないドメイン名

VM が smt-gce.susecloud.net SMT サーバーに接続できない場合、次の問題が発生することがあります。

SUSEConnect error: SocketError: getaddrinfo: Name or service not known
ping: unknown host smt-gce.susecloud.net

これらの問題のよくある原因としては、SMT サーバーのドメイン名 smt-gce.susecloud.net が正しく解決されないことです。このドメインはグローバルに解決できないため、VM リージョンに沿って IP アドレスを設定する必要があります。手順は次のとおりです。

/etc/hosts ファイルを調べて、smt-gce.susecloud.net ドメインのエントリが含まれていることを確認します。

cat /etc/hosts | grep -i smt

出力は次のようになりますが、IP アドレスは異なる場合があります。

# Added by SMT registration do not remove, retain comment as well
108.59.80.221   smt-gce.susecloud.net   smt-gce

/etc/hosts ファイルに前述の例と同じ行が含まれていない場合は、次のようにします。

  1. SUSE SMT の IP アドレスのリストで、VM のリージョンに対応する IP アドレスを探します。

  2. ファイルを編集して、SUSE SMT の IP アドレスとその他の情報を追加します。

ネットワークが利用できない

VM が Compute Engine 更新サーバーのドメイン名を解決できる場合でも、ネットワークが利用できないために、次のエラーが発生することがあります。

Unexpected exception.
Not ready to read within timeout.
Repository 'SLE-Module-Adv-Systems-Management12-Pool' is invalid.
Repository 'SLE-Module-Adv-Systems-Management12-Updates' is invalid.

調査中に見つかることがある /var/log/cloudregister ログファイルのエラーの例を次に示します。

WARNING:Unable to remove client registration from server
WARNING:HTTPSConnectionPool(host='smt-gce.susecloud.net', port=443): Max retries exceeded with url: /connect/systems (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 110] Connection timed out',))
INFO:Region server arguments: ?regionHint=europe-central2
ERROR:No response from: [('34.118.112.80', None), ('34.116.251.218', None), ('34.116.224.144', None)]

問題の原因を詳しく調べるには、ネットワーク接続テストを行います。次の例は、cURL を使用して HTTPS 接続をテストする方法を示しています。

curl -sSI -m 5 -o /dev/null \
  -w 'Response code (>0 is OK): %{http_code}\n' \
  'https://smt-gce.susecloud.net'

コマンドの出力には、HTTP レスポンス コードまたはエラー メッセージが含まれます。一般的なレスポンスとエラーは次のとおりです。

  • 正常なレスポンス:

    Response code (>0 is OK): 200
    
  • リクエスト タイムアウト エラー:

    Response code (>0 is OK): 000
    curl: (28) Connection timed out after 5001 milliseconds
    
  • 解決できないドメインエラー:

    Response code (>0 is OK): 000
    curl: (6) Could not resolve host: smt-gce.susecloud.net
    

厳格なホスト ファイアウォール ルールなどの特定のシナリオでは、smt-gce.susecloud.net ドメインに関連付けられたデフォルトの IP アドレスを使用できない場合があります。問題が現在の IP アドレスのみに関連していることを確認するには、代替リージョン サーバーでネットワーク接続テストを実行します。次の手順に沿って、リージョン サーバーのリストを取得します。

ウェブ UI

SUSE WebUI に移動して、リージョン アップデート サーバーのリストを取得します。

CLI

pint ツールを使用して、CLI でリージョン アップデート サーバーのリストを取得します。

  1. 必要なパッケージをインストールします

    sudo zypper install python3-susepubliccloudinfo
    
  2. 特定のリージョンで次のコマンドを使用します。

    pint google servers --region us-central1
    
  3. 成功の出力には、XML 形式のエントリのリストが含まれます。

    <?xml version='1.0' encoding='UTF-8'?>
    <servers>
      <server ip="146.148.73.14" name="" region="us-central1" type="regionserver-sles"/>
      <server ip="162.222.182.90" name="" region="us-central1" type="regionserver-sap"/>
      <server ip="108.59.80.221" name="smt-gce.susecloud.net" region="us-central1" type="smt"/>
      <server ip="108.59.85.41" name="smt-gce.susecloud.net" region="us-central1" type="smt"/>
      <server ip="108.59.80.58" name="smt-gce.susecloud.net" region="us-central1" type="smt"/>
    </servers>
    

Google Cloud の SUSE サーバー IP の全リストを確認するには、次のドキュメントを表示します。

VM の構成ミスが原因で、ネットワークが利用できない可能性があります。問題が発生した場合は、ネットワーク診断を実行して根本原因を特定する必要があります。

登録エラー

Cloud NAT にプライベート IP アドレスを持つ VM がある場合、次のエラーが発生することがあります。

ERROR:  Registration failed: Registering system to registration proxy https://smt-gce.susecloud.net
command '/usr/bin/zypper --non-interactive refs Python_3_Module_x86_64' failed
Error: zypper returned 4 with 'Problem retrieving the repository index file for service 'Python_3_Module_x86_64':
Timeout exceeded when accessing 'https://smt-gce.susecloud.net/services/2045/repo/repoindex.xml?credentials=Python_3_Module_x86_64'.

この問題を解決するには、Cloud NAT の構成を調べて、VM インスタンスあたりの最小ポート数のパラメータが 160 以上に設定されていることを確認します。

詳細については、SUSE のサポートに関する公開情報で、Cloud NAT の背後にある Compute Engine インスタンスの登録と zypper の失敗をご覧ください。

応答なし

VM で更新サーバーやリージョン サーバーとの通信に問題が発生すると、次のエラーが発生することがあります。

  • SUSEConnect error:

    SUSEConnect error: Errno::ETIMEDOUT: Connection timed out - connect(2) for "smt-gce.susecloud.net" port 443
    
  • zypper error:

    Error retrieving metadata for 'SLE-Module-Adv-Systems-Management12-Pool':
    Not ready to read within timeout.
    ...
    

これらのエラーは、更新サーバーとリージョン サーバーからのレスポンスがない場合に発生します。これを確認するには、/var/log/cloudregister ログで同様の内容を探します。

INFO:Region server arguments: ?regionHint=europe-central2
INFO:Using API: regionInfo
INFO:Region server arguments: ?regionHint=europe-central2
INFO:Getting update server information, attempt 1
INFO:   Using region server: 130.211.242.136
ERROR:  No response from: 130.211.242.136
INFO:   Using region server: 35.187.193.56
ERROR:  No response from: 35.187.193.56
INFO:   Using region server: 162.222.182.90
ERROR:  No response from: 162.222.182.90
INFO:   Using region server: 130.211.88.88
ERROR:  No response from: 130.211.88.88
ERROR:  None of the servers responded
ERROR:  Attempted: [IPv4Address('130.211.242.136'), IPv4Address('35.187.193.56'), IPv4Address('162.222.182.90'), IPv4Address('130.211.88.88')]
...
...
...
ERROR:Request not answered by any server after 3 attempts
ERROR:Exiting without registration

この問題を解決するには、次の対処方法をいくつか試してください。

  • VM に外部 IP アドレスがあること、または Virtual Private Cloud サブネットが NAT(Cloud NAT またはカスタム ソリューション)を使用していることを確認します。

  • 公共のインターネット アクセスを制限する、オンプレミス ネットワーク経由でトラフィックをルーティングするなど、デフォルトのネットワーク ルーティング ルールを変更した場合は、Compute Engine のデフォルト ゲートウェイ経由で SMT IP のルートを手動で追加します。手順は次のとおりです。

    1. Google Cloud コンソールの [ルート] ページに移動します。

      [ルート] ページに移動

    2. [ルート管理] タブで、SUSE SMT の IP アドレスを含むルートを探し、Compute Engine のデフォルト ゲートウェイがネクストホップとして設定されていることを確認します。

    3. ルートが表示されない場合は、[ルートの作成] をクリックし、必要な情報を入力して追加できます。

  • 追加の中間ネットワーク ソフトウェア(例: ファイアウォール、カスタム NAT)などで内部パススルー ネットワーク ロードバランサを使用している場合は、ロードバランサが VM トラフィックのネクストホップとして使用されていることを確認します。手順は次のとおりです。

    1. Google Cloud コンソールの [VM インスタンス] ページに移動します。

      [VM インスタンス] ページに移動

    2. 確認する VM の名前をクリックします。[VM の詳細] ページが開きます。

    3. [ネットワーク インターフェース] セクションで、[詳細を表示] をクリックします。

    4. [ファイアウォールとルートの詳細] セクションで、目的の IP アドレス範囲へのパスを定義するルートを見つけます。

    5. ルートの名前をクリックし、内部パススルー ネットワーク ロードバランサまたはその IP アドレスがネクストホップとして設定されていることを確認します。

    目的の IP アドレス範囲へのパスを定義するルートがない場合、またはルートのネクストホップが内部パススルー ネットワーク ロードバランサと異なる場合は、内部パススルー ネットワーク ロードバランサをネクストホップとして設定します

  • 内部パススルー ネットワーク ロードバランサを使用している場合は、VM と同じリージョンにあることを確認します。

    1. Google Cloud コンソールの [VM インスタンス] ページに移動します。

      [VM インスタンス] ページに移動

    2. 確認する VM を見つけて、リージョンをメモします。

    3. Google Cloud コンソールの [ロード バランシング] ページに移動します。

      [ロード バランシング] ページに移動

    4. 使用されている内部パススルー ネットワーク ロードバランサを見つけて、VM と同じリージョンにあるかどうかを確認します。

    5. VM と内部パススルー ネットワーク ロードバランサが同じリージョンにない場合は、グローバル アクセスを有効にします。

OS の構成に関する問題

登録ステータスが不明

従量課金制(PAYG)の SUSE Linux Enterprise Server(SLES)が登録されているかどうかがわからない場合は、次のコマンドを実行します。

sudo SUSEConnect --status-text

出力には、SUSE Linux Enterprise Server などの SUSE プロダクトのバージョンと登録ステータスが含まれます。

Installed Products:
------------------------------------------

  SUSE Linux Enterprise Server 12 SP5
  (SLES/12.5/x86_64)

  Registered

------------------------------------------
...

ステータスが Not Registered の場合は、再登録プロセスから始めて、問題を解決します。

ベース プロダクト リンクが誤った商品ファイルを指している場合、次のエラーが発生することがあります。

ERROR:Unable to obtain product information from server "108.59.85.41,None"
        Unprocessable Entity
        {"type":"error","error":"Unmet product dependencies, activate one of these products first: SUSE Linux Enterprise Server 12 x86_64...
        ...
Unable to register modules, exiting.

このエラーは、シンボリック リンク /etc/products.d/baseproduct が指す先が誤ったプロダクト ファイル(sle-module-toolchain.prod)になっているために発生します。

この問題を解決するには、次のようにして、適切なベース プロダクト ファイルを指すように /etc/products.d/baseproduct のシンボリック リンクを更新します。

  1. /etc/products.d ディレクトリに移動します

      cd /etc/products.d
    
  2. SLES for SAP がインストールされている場合は、SLES.prodSLES_SAP.prod に置き換えて、次のコマンドを実行します。

      sudo ln -sf SLES.prod baseproduct
    

インスタンス ID 情報が利用できない

VM のインスタンス ID 情報が利用できない場合、次のエラーが発生することがあります。

ERROR:Data collected from stderr for instance data collection "b'Unable to access instance identity information\n'"

ID トークンのインスタンス メタデータにアクセスするには、すべての VM がサービス アカウントに関連付けられている必要があります。

詳しくは、Public Cloud Infrastructure の更新をご覧ください。

VM がこの状況に該当していることを確認するには、VM で次のコマンドを実行します。

curl -s -H 'Metadata-Flavor: Google' \
  'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=test'

ID トークンを含む正常なレスポンスの例:

eyJhbGciOiJSUzI1NiIsImtpZCI6IjkzOTd0MDQxSHQ2NDNxNzkzUjY1MDIwNzEyMjZPNnppaTdqNTl3eTciLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJ0ZXN0IiwiYXpwIjoiMjY1MDIwMDUyMzgzMjYyNTk0ODU2IiwiZXhwIjoxNjgzNzEyNTQzLCJpYXQiOjE2ODM3MTI4NjQsImlzcyI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbSIsInN1YiI6IjQ1NjA2MzQ5MDg5Mzc0Njg3ODI5NyJ9.EpzQ3NZ8mKStdpH10fL34qsKG0rjQEflzvLJLm2tVNX4xBJAkMhi8lcs5InUEY-QMK3njgbzdzNtD1fXoIfKoeWsqkA8vG3NkBz5zqRrtaB2STcO14H5tjIdTBsrCtET447tRXlGG5cvgMcWnRDZG92-jUZEpWki_Ri4T69X5-bBWkfE2Thm3oSUW4fScdeVOEmOgWnzD2jeVqQ_2YniywvpkT-rLzKfN-5AgN66zgBfXqJVTC90KFMebfiaOoL7z6ZSM9AjZGf45QEMZjxjd-Xzyee6ZWK8s0RE3hJlytb3zYcLt3tJwQ1WhnrC2ToJ-ZmKxxK3xKDLCvCQ6Ny5to

返されたメタデータがトークンではなく、次のようなエラー メッセージが表示される場合、VM は影響を受けます。

{
  "error": "invalid_request",
  "error_description": "Service account not enabled on this instance"
}

この問題を解決するには、次の操作を行います。

  1. VM を停止します。

    gcloud compute instances stop VM_NAME
    
  2. VM にサービス アカウントを追加します。

    gcloud compute instances set-service-account VM_NAME \
      --service account SERVICE_ACCOUNT \
      --no-scopes
    
  3. VM を起動します。

    gcloud compute instances start VM_NAME
    
  4. 不足しているサービス アカウントを追加した後、VM から次のコマンドを実行して SLES を再登録します。

    sudo registercloudguest --force-new
    

    詳しくは、再登録のセクションをご覧ください。

プロキシの背後の登録

VM が任意の種類のプロキシ ソフトウェアを利用するように構成されている場合、問題が発生することがあります。次の例は、HTTP プロキシ経由で SLES を登録する方法を示しています。

ERROR: Baseproduct registration failed
ERROR: Registering system to registration proxy https://smt-gce.susecloud.net

Announcing system to https://smt-gce.susecloud.net ...
SUSEConnect error: Net::HTTPFatalError: 503 "Service Unavailable"

Compute Engine 上の SUSE は、元の通信を変更する中間者(中間者(MITM)や非透過タイプなど)を介して行われる場合、オペレーティング システム登録の公式サポートを提供しません。

この問題を解決するための公式の解決策は、Cloud NAT を設定し、それを経由して VM トラフィックを転送することです。

一般的な回避策

再登録

場合によっては、再登録のアプローチを使用して登録の問題を回避できます。

強制的に新規登録するには、次のコマンドを使用します。

sudo registercloudguest --force-new

成功すると、次の行が出力されます。

Registration succeeded

再登録プロセスの詳細については、/var/log/cloudregisterをご覧ください。

成功例

INFO:Forced new registration
INFO:Clean current registration server: ('108.59.80.221', None)
...
INFO:Starting new HTTP connection (1): 169.254.169.254
INFO:Region server arguments: ?regionHint=us-central1
INFO:Using region server: 130.211.242.136
INFO:Starting new HTTPS connection (1): 130.211.242.136
INFO:Starting new HTTPS connection (1): 108.59.80.58
INFO:Modified /etc/hosts, added: 108.59.80.58   smt-gce.susecloud.net   smt-gce
...
INFO:Starting new HTTPS connection (1): 108.59.80.58
DEBUG:"GET /api/health/status HTTP/1.1" 200 None
INFO:Current update server will be used: "('108.59.80.58', None)"
INFO:Starting new HTTPS connection (1): smt-gce.susecloud.net
DEBUG:"POST /connect/systems/products/migrations HTTP/1.1" 422 None
INFO:Registration: /usr/sbin/SUSEConnect --url https://smt-gce.susecloud.net --product sle-module-containers/12/x86_64 --instance-data /var/lib/cloudregister/9c982106-78de-48fe-a662-20383da4c760

失敗例

INFO:Forced new registration
INFO:Using API: regionInfo
INFO:Starting new HTTP connection (1): 169.254.169.254
INFO:Region server arguments: ?regionHint=us-central1
INFO:Using region server: 130.211.242.136
INFO:Starting new HTTPS connection (1): 130.211.242.136
ERROR:No response from: 130.211.242.136
INFO:Using region server: 130.211.88.88
INFO:Starting new HTTPS connection (1): 130.211.88.88
ERROR:No response from: 130.211.88.88
INFO:Using region server: 146.148.73.14
INFO:Starting new HTTPS connection (1): 146.148.73.14
ERROR:No response from: 146.148.73.14
ERROR:None of the servers responded
ERROR:  Attempted: ['130.211.242.136', '130.211.88.88', '146.148.73.14']
ERROR:Exiting without registration

登録解除

メジャー リリース アップグレードなど、システムがすでに SUMA に登録されているために、次のエラーが発生することがあります。

Can't get available migrations from server: SUSE::Connect::ApiError: The requested products 'SUSE Manager Client Tools for SLE 12 x86_64' are not activated on the system.
This system is managed by SUSE manager.

次の手順で問題を解決します。

  1. モジュールと拡張機能の削除ガイドの説明に沿って、SUSE Manager クライアント ツール モジュールを削除します。

  2. SUSE Manager クライアントを登録解除する方法のガイドに沿って、SUMA から登録を解除します。

  3. VM から次のコマンドを実行して、古い登録をクリーンアップします。

      sudo SUSEConnect --cleanup && \
        sudo registercloudguest --clean && \
        sudo rm -f /etc/SUSEConnect && \
        sudo rm -f /etc/zypp/{repos,services,credentials}.d/* && \
        sudo rm -f /var/lib/cloudregister/* && \
        sudo rm -rf /var/cache/zypp/* && \
        sudo rm -rf /var/cache/cloudregister/* && \
        sudo sed -i '/^# Added by SMT reg/,+1d' /etc/hosts
    
  4. 次のコマンドを実行してシステムを再度登録します。

      sudo registercloudguest --force-new
    

    詳しくは、再登録のセクションをご覧ください。

  5. 登録プロセスが完了したら、サービスとリポジトリを更新し、SMT サーバーから提供されるシステム用に想定されているリポジトリがすべて存在することを確認します。

      sudo zypper ref -s && \
        sudo zypper ls && \
        sudo zypper lr -U