Geo Clusteringのクイックスタート
SUSE Linux Enterprise High Availability Extension 15 SP4

# Geo Clusteringのクイックスタート #

発行日: 2025 年 12 月 11 日

Geoクラスタリングは、グローバルに分散したデータセンター全体でワークロードを保護します。このマニュアルでは、crmシェルで提供されているGeoブートストラップスクリプトを使用して、基本的なGeoクラスタをセットアップする手順を説明します。

著者: Tanja Roth、Thomas Schraitle
改訂履歴: Geo Clusteringのクイックスタート

## 1 概念の概要 #

SUSE® Linux Enterprise High Availability Extensionを基にしたGeoクラスタは、各クラスタサイトが従来のクラスタ内の1つのクラスタノードに対応する「オーバーレイ」クラスタであると考えることができます。オーバーレイクラスタは、ブースクラスタチケットマネージャ(以後「ブース」と呼びます)によって管理されます。Geoクラスタ内のそれぞれの参加クラスタが`boothd`というサービスを実行します。これは、他のサイトで実行されているブースデーモンに接続し、接続性の詳細を交換します。サイト全体でクラスタリソースを高可用性にするため、ブースはチケットと呼ばれるクラスタオブジェクトに依存します。チケットは指定のクラスタサイトの特定のリソースを実行する権利を付与します。ブースはすべてのチケットが一度に1サイトにのみ付与されることを保証します。

2つのブースインスタンス間の通信が途切れる場合、クラスタサイト間のネットワークの障害か、または一方のクラスタサイトの停止が原因と考えられます。この場合、決定(サイト間のリソースのフェールオーバーなど)について合意状態に達するための追加のインスタンス(3つ目のクラスタサイトまたは`アービトレータ`)が必要です。アービトレータは特殊なモードでブースインスタンスを実行する(クラスタ外の)単一マシンです。各Geoクラスタは1つまたは複数のアービトレータを持つことができます。

図 1: 2サイトクラスタ - 2x2ノード+アービトレータ(オプション) #

2サイトGeoクラスタをアービトレータなしで実行することもできます。この場合、Geoクラスタの管理者は手動でチケットを管理する必要があります。チケットを複数のサイトに同時に付与する必要がある場合は、ブースで警告が表示されます。

Geoクラスタの概念とコンポーネント、およびGeoクラスタで採用されているチケット管理の詳細については、Book “管理ガイド”を参照してください。

## 2 使用シナリオ #

以下では、2つのクラスタサイトおよび1つのアービトレータを含む基本的なGeoクラスタを設定します。

- クラスタサイトが`amsterdam`および`berlin`という名前であることを想定しています。

- また、各サイトは2つのノードで構成されていることを想定しています。ノードの`alice`と`bob`は、クラスタ`amsterdam`に属しています。ノードの`charlie`と`doro`は、クラスタ`berlin`に属しています。

- サイト`amsterdam`は、仮想IPアドレス`192.168.201.100`を取得します。

- サイト`berlin`は、仮想IPアドレス`192.168.202.100`を取得します。

- アービトレータにはIPアドレス`192.168.203.100`が設定されていることを想定しています。

続行する前に、次の要件が満たされているかどうか確認してください。

要件 #

2つの既存のクラスタ

  Geoクラスタに結合する既存のクラスタを少なくとも2つ持っている(2つのクラスタを最初に設定する必要がある場合は、Article “インストールおよびセットアップクイックスタート”の手順に従ってください)。

意味のあるクラスタ名

  各クラスタに、その場所を反映した、`/etc/corosync/corosync.conf`に定義されている意味のあるクラスタ名が付いている。

アービトレータ

  既存のクラスタの一部ではなく、アービトレータとして使用される3つ目のマシンを設置している。

各項目の詳細要件については、3項 「要件」も参照してください。

## 3 要件 #

クラスタの一部になるすべてのマシン(クラスタノードおよびアービトレータ)には、少なくとも次のモジュールと拡張機能が含まれている必要があります。

- Basesystem Module 15 SP4

- Server Applications Module 15 SP4

- SUSE Linux Enterprise High Availability Extension 15 SP4

マシンをインストールする際には、`system role`として`HA GEO Node`を選択します。これにより、デフォルトで`Geo Clustering for High Availability (ha_geo)`パターンのパッケージがインストールされる最小限のシステムになります。

ネットワーク要件 #

- 各クラスタサイトに使用される仮想IPはGeoクラスタ間でアクセスできる必要があります。

- ブースインスタンスあたり1つのUDPポートと1つのTCPポートを通じて、サイトにアクセスできる必要があります。すなわち、間に配置されているすべてのファイアウォールとIPsesトンネルをこの要件に合わせて設定する必要があります。

- セットアップに関する他の決定によって、さらに多くのポートを開く必要が生じることがあります(たとえばDRBDやデータベースレプリケーション用など)。

その他の要件と推奨事項 #

- すべてのサイト上のすべてのクラスタノードはクラスタ外のNTPサーバと同期する必要があります。詳細については、SUSE Linux Enterprise Server 15 SP4の『管理ガイド』を参照してください。

  ノードが同期されていない場合、ログファイルまたはクラスタレポートは分析が難しくなります。

- Geoクラスタでは、「奇数」のサイトを使用します。これにより、ネットワーク接続が途切れた場合に、引き続きサイトの過半数が確実に存在するようにします(スプリットブレインシナリオを回避するため)。クラスタサイトの数が偶数の場合は、チケットの自動フェールオーバーを処理するためにアービトレータを使用してください。アービトレータを使用しないときは、チケットを手動でフェールオーバーする必要があります。

- 各サイトのクラスタには、`amsterdam`や`berlin`などの、意味のある名前があります。

  各サイトのクラスタ名はそれぞれの`/etc/corosync/corosync.conf`ファイルで指定されています。

      totem {
          [...]
          cluster_name: amsterdam
          }

  次のcrmshコマンドを実行して名前を変更します。

      root # crm cluster rename NEW_NAME

  `pacemaker`サービスを停止して起動し、変更内容を有効にします。

      root # crm cluster restart

- 1つのクラスタ内に複数のアーキテクチャを混在させることはできません。ただし、Geoクラスタの各メンバーには異なるアーキテクチャを(クラスタサイト用、アービトレータ用といった具合に)割り当てることができます。たとえば、Geoクラスタを3つのメンバー(2つのクラスタサイトと1つのアービトレータ)で構成する場合、一方のクラスタサイトをIBM Z、他方のクラスタサイトをx86、アービトレータをPOWERで実行できます。

## 4 Geoブートストラップスクリプトの概要 #

- `crm cluster geo_init`を使用して、あるクラスタをGeoクラスタの最初のサイトにします。このスクリプトは、クラスタの名前、アービトレータ、1つまたは複数のチケットなどのパラメータを取得し、それらから`/etc/booth/booth.conf`を作成します。ブース設定を現在のクラスタサイトのすべてのノードにコピーします。また、現在のクラスタサイトのブースに必要なクラスタリソースも設定します。

  詳細については、6項 「Geoクラスタの最初のサイトの設定」を参照してください。

- `crm cluster geo_join`を使用して、現在のクラスタを既存のGeoクラスタに追加します。このスクリプトは既存のクラスタサイトからブース設定をコピーし、それを現在のクラスタサイトのすべてのノード上の`/etc/booth/booth.conf`に書き込みます。また、現在のクラスタサイトのブースに必要なクラスタリソースも設定します。

  詳細については、7項 「Geoクラスタへの別のサイトの追加」を参照してください。

- `crm cluster geo_init_arbitrator`を使用して、現在のマシンをGeoクラスタのアービトレータにします。このスクリプトは既存のクラスタサイトからブース設定をコピーし、それを`/etc/booth/booth.conf`に書き込みます。

  詳細については、8項 「アービトレータの追加」を参照してください。

すべてのブートストラップスクリプトは`/var/log/crmsh/crmsh.log`にログを記録します。ブートストラッププロセスの詳細については、ログファイルを確認してください。ブートストラッププロセス中に設定されたオプションは後で変更できます(ブース設定の変更やリソースの変更など)。詳細については、Book “管理ガイド”を参照してください。

## 5 インストール #

SUSE Linux Enterprise High Availability Extensionを使用することで、無制限の距離にまたがってHigh Availabilityクラスタを使用できるようになります。

Geoクラスタを設定するには、次のインストールパターンに含まれているパッケージが必要です。

- `High Availability` (コマンドラインでは`sles_ha`で指定)

- `Geo Clustering for High Availability` (コマンドラインでは`ha_geo`で指定)

両方のパターンを使用できるための条件は、お使いのシステムをSUSEカスタマセンター(またはローカル登録サーバ)に登録済みであること、かつそれぞれのモジュールまたはインストールメディアを拡張として追加済みであることです。拡張をインストールする方法の詳細については、SUSE Linux Enterprise 15 SP4の『導入ガイド』を参照してください。

コマンドラインを通じて両方のパターンからパッケージをインストールするには、Zypperを使用します。

    root # zypper install -t pattern ha_sles ha_geo

重要: すべてのパーティへのソフトウェアパッケージのインストール

High AvailabilityクラスタおよびGeoクラスタに必要なソフトウェアパッケージは、クラスタノードに自動的にコピー「されません」。

- SUSE Linux Enterprise Server 15 SP4と、`ha_sles`パターンおよび`ha_geo`パターンを、Geoクラスタの一部となる「すべての」マシンにインストールします。

- クラスタの一部となるすべてのマシンにパッケージを手動でインストールする代わりに、AutoYaSTを使用して既存のノードのクローンを作成します。詳細については、Book “管理ガイド”, Chapter 3 “High Availability Extensionのインストール”, Section 3.2 “AutoYaSTによる大量インストールと展開”を参照してください。

## 6 Geoクラスタの最初のサイトの設定 #

`crm cluster geo_init`コマンドを使用して、既存のクラスタをGeoクラスタの最初のサイトにします。

手順 1: `crm cluster geo_init`を使用して最初のサイト(`amsterdam`)を設定する #

1. サイトへのアクセスに使用可能なクラスタサイトごとの仮想IPを定義します。この目的のために`192.168.201.100`および`192.168.202.100`を使用することを想定しています。仮想IPをクラスタリソースとして設定する必要はまだありません。これはブートストラップスクリプトによって実行されます。

2. クラスタサイトで特定のリソースを実行する権利を付与する少なくとも1つのチケットの名前を定義します。チケットに依存するリソースを反映する、意味のある名前を使用します(たとえば、`ticket-nfs`)。ブートストラップスクリプトはチケット名のみが必要です。10項 「次のステップ」で説明されるように、後で既存の詳細(リソースのチケット依存関係)を定義できます。

3. 既存のクラスタのノードにログインします(たとえば、クラスタ`amsterdam`のノード`alice`)。

4. `crm cluster geo_init`を実行します。たとえば、次のオプションを使用します。

       root # crm cluster geo_init \
         --clusters1 "amsterdam=192.168.201.100 berlin=192.168.202.100" \
         --tickets2 ticket-nfs \
         --arbitrator3 192.168.203.100

   1 | クラスタサイトの名前(`/etc/corosync/corosync.conf`で定義される)および各クラスタサイトに使用する仮想IPアドレス。この場合、それぞれが1つの仮想IPアドレスを持つ2つのクラスタサイト(`amsterdam`および`berlin`)があります。
   2 | 1つまたは複数のチケットの名前。
   3 | クラスタ外のマシンのホスト名またはIPアドレス。

ブートストラップスクリプトはブース設定ファイルを作成し、それをクラスタサイト間で同期します。また、ブースに必要な基本的なクラスタリソースも作成します。手順 1のステップ 4の結果、次のブース設定およびクラスタリソースが作成されます。

例 1: `crm cluster geo_init`によって作成されたブース設定 #

    # The booth configuration file is "/etc/booth/booth.conf". You need to
    # prepare the same booth configuration file on each arbitrator and
    # each node in the cluster sites where the booth daemon can be launched.

    # "transport" means which transport layer booth daemon will use.
    # Currently only "UDP" is supported.
    transport="UDP"
    port="9929"

    arbitrator="192.168.203.100"
    site="192.168.201.100"
    site="192.168.202.100"
    authfile="/etc/booth/authkey"
    ticket="ticket-nfs"
    expire="600"

例 2: `crm cluster geo_init`によって作成されたクラスタリソース #

    primitive1 booth-ip IPaddr2 \
      params rule #cluster-name eq amsterdam ip=192.168.201.100 \
      params rule #cluster-name eq berlin ip=192.168.202.100 \
    primitive2 booth-site ocf:pacemaker:booth-site \
      meta resource-stickiness=INFINITY \
      params config=booth \
      op monitor interval=10s
    group3 g-booth booth-ip booth-site \
    meta target-role=Stopped4

1 | 各クラスタサイトの仮想IPアドレス。各クラスタサイトで持続的なIPアドレスを必要とするブースデーモンによって要求されます。
2 | ブースデーモンのプリミティブリソース。他のクラスタサイト上のブースデーモンと通信します。デーモンは、サイトの任意のノードで起動できます。リソースを同一ノードに維持するには、可能な場合は、resource-stickinessを`INFINITY`に設定します。
3 | 両方のプリミティブのためのクラスタリソースグループ。この設定では、各ブースデーモンは、デーモンが実行しているノードとは関係なく、個々のIPアドレスで使用できます。
4 | クラスタリソースグループはデフォルトでは開始されません。クラスタリソースの設定を確認(およびセットアップを完了するために必要なリソースを追加)した後で、リソースグループを開始する必要があります。詳細についてはGeoクラスタのセットアップを完了するために必要な手順を参照してください。

## 7 Geoクラスタへの別のサイトの追加 #

Geoクラスタの最初のサイトを初期化した後で、手順 2で説明されるように、2つ目のクラスタを`crm cluster geo_join`を使用して追加します。このスクリプトはすでに設定されているクラスタサイトへのSSHアクセスを必要とします。また、現在のクラスタをGeoクラスタに追加します。

手順 2: `crm cluster geo_join`を使用して2番目のサイト(`berlin`)を追加する #

1. 追加するクラスタサイトのノードにログインします(たとえば、クラスタ`berlin`のノード`charlie`。)

2. `crm cluster geo_join`コマンドを実行します。例:

       root # crm cluster geo_join \
         --cluster-node1 192.168.201.100\
         --clusters2 "amsterdam=192.168.201.100 berlin=192.168.202.100"

   1 | ブース設定のコピー元の場所を指定します。すでに設定されているGeoクラスタサイトのノードのIPアドレスまたはホスト名を使用します。(この例のように)既存のクラスタサイトの仮想IPアドレスを使用することもできます。または、Geoクラスタにすでに設定されているアービトレータのIPアドレスまたはホスト名を使用します。
   2 | クラスタサイトの名前(`/etc/corosync/corosync.conf`で定義される)および各クラスタサイトに使用する仮想IPアドレス。この場合、それぞれが1つの仮想IPアドレスを持つ2つのクラスタサイト(`amsterdam`および`berlin`)があります。

`crm cluster geo_join`コマンドは、ブース設定を1からコピーします。例 1を参照してください。また、ブースに必要なクラスタリソースを作成します(例 2を参照)。

## 8 アービトレータの追加 #

`crm cluster geo_init`と`crm cluster geo_join`を使用して、Geoクラスタのすべてのサイトを設定した後で、`crm cluster geo_init_arbitrator`を使用してアービトレータを設定します。

手順 3: `crm cluster geo_init_arbitrator`を使用したアービトレータの設定 #

1. アービトレータとして使用するマシンにログインします。

2. 次のコマンドを実行します。例:

       root # crm cluster geo_init_arbitrator --cluster-node1 192.168.201.100

   1 | ブース設定のコピー元の場所を指定します。すでに設定されているGeoクラスタサイトのノードのIPアドレスまたはホスト名を使用します。または、(この例のように)既存のクラスタサイトの仮想IPアドレスを使用します。

`crm cluster geo_init_arbitrator`スクリプトは、ブース設定を1からコピーします。例 1を参照してください。また、アービトレータ上でブースサービスを有効化および開始します。このようにして、ブースサービスがクラスタサイトで実行されると、アービトレータはそれらのサイトのブースインスタンスと通信する準備が整います。

## 9 クラスタサイトの監視 #

両方のクラスタサイトのブートストラッププロセス中に作成したリソースおよびチケットを表示するには、Hawk2を使用します。Hawk2 Webインタフェースは、複数の(無関係な)クラスタとGeoクラスタを監視および管理できます。

前提条件 #

- Hawk4のダッシュボードで監視するすべてのクラスタでは、SUSE Linux Enterprise High Availability Extension 15 SP4を実行している必要があります。

- すべてのクラスタノードにあるHawk2の自己署名証明書を独自の証明書(または公式認証局によって署名された証明書)で置き換えていない場合は、「すべての」クラスタの「すべての」ノードで、少なくとも1回はHawk2にログインします。証明書を検証します(または、ブラウザで例外を追加して警告をスキップします)。そうしない場合、Hawk2はクラスタに接続できません。

手順 4: Hawk2ダッシュボードの使用 #

1. Webブラウザを起動し、最初のクラスタサイト`amsterdam`の仮想IPを入力します。

       https://192.168.201.100:7630/

   または、`alice`または`bob`のIPアドレスまたはホスト名を使用します。ブートストラップスクリプトを使用して両方のノードを設定している場合は、`hawk`サービスが両方のノードで実行されるはずです。

2. Hawk2 Webインタフェースにログインします。

3. 左のナビゲーションバーから、ダッシュボードを選択します。

   Hawk2に、現在のクラスタサイトのリソースとノードの概要が表示されます。また、Geoクラスタに設定されているすべてのチケットが表示されます。このビューで使用されるアイコンに関する情報が必要な場合は、凡例をクリックします。

   図 2: 最初のクラスタサイト(`amsterdam`)を表示するHawk2ダッシュボード #

4. 2つ目のクラスタサイトのダッシュボードを追加するには、クラスタの追加をクリックします。

   1. ダッシュボードでクラスタを識別するためのクラスタ名を入力します。この場合は、`berlin`です。

   2. 一方のクラスタノードの完全修飾ホスト名を入力します(この場合、`charlie`または`doro`)。

   3. 追加をクリックします。新たに追加されたクラスタサイトに対して、Hawk2は2つ目のタブにノードやリソースの概要を表示します。

      図 3: 両方のクラスタサイトが表示されたHawk2ダッシュボード #

5. クラスタサイトやその管理に関する詳細を参照するには、サイトのタブに切り替えてチェーンアイコンをクリックします。

   Hawk2はこのサイトのステータスビューを新しいブラウザウィンドウかタブに表示します。この部分のGeoクラスタをそこから管理できます。

## 10 次のステップ #

Geoクラスタリングブートストラップスクリプトを使用すると、テスト目的で使用可能な基本的なGeoクラスタを迅速に設定できます。ただし、結果として生じたGeoクラスタを、運用環境で使用可能な機能するGeoクラスタに移行するには、さらに手順が必要です。Geoクラスタのセットアップを完了するために必要な手順を参照してください。

Geoクラスタのセットアップを完了するために必要な手順 #

クラスタサイト上のブースサービスの開始

  ブートストラッププロセスの後で、アービトレータブースサービスはまだクラスタサイト上のブースサービスと通信できません。クラスタサイト上のブースサービスは、デフォルトでは開始されないためです。

  各クラスタサイト用のブースサービスは、ブースリソースグループ`g-booth`によって管理されます(例2「`crm cluster geo_init`によって作成されたクラスタリソース」を参照)。サイトあたり1つのブースサービスインスタンスを開始するには、各クラスタサイト上でそれぞれのブースリソースグループを開始します。これにより、すべてのブースインスタンスが相互に通信できるようになります。

チケット依存関係と順序の制約の設定

  リソースがGeoクラスタブートストラッププロセス中に作成したチケットに依存するようにするには、制約を設定します。制約ごとに、チケットがクラスタサイトから取り消された場合の各リソースの動作を定義する`loss-policy`を設定します。

  詳細については、Book “Geo Clustering Guide”, Chapter 6 “Configuring cluster resources and constraints”を参照してください。

まずチケットをサイトに付与する

  ブースがGeoクラスタ内の特定のチケットを管理するためには、まずチケットを手動でサイトに「付与」する必要があります。チケットを付与するには、ブースクライアントのコマンドラインツールまたはHawk2のいずれかを使用できます。

  詳細については、Book “Geo Clustering Guide”, Chapter 8 “Managing Geo clusters”を参照してください。

ブートストラップスクリプトは、両方のクラスタサイトで同一のブースリソース、およびアービトレータを含むすべてのサイトで同一のブース設定ファイルを作成します。(運用環境へ移行するため) Geoクラスタセットアップを拡張するときは、多くの場合、ブート設定を微調整し、ブース関連のクラスタリソースの設定を変更します。その後、Geoクラスタの他のサイトへの変更を有効にするため、変更内容を同期する必要があります。

注記: クラスタサイト間での変更の同期

- ブース設定の変更をすべてのクラスタサイト(アービトレータを含む)に同期するには、Csync2を使用します。詳細については、Book “Geo Clustering Guide”, Chapter 5 “Synchronizing configuration files across all sites and arbitrators”を参照してください。

- CIB (クラスタ情報データベース)は、Geoクラスタのクラスタサイト間で自動的に同期されません。つまり、すべてのクラスタサイトで必要なリソース設定の変更を他のサイトに手動で転送する必要があります。これを行うには、各リソースをタグ付けし、それらを現在のCIBからエクスポートして、他のクラスタサイト上のCIBにインポートします。詳細については、Book “Geo Clustering Guide”, Chapter 6 “Configuring cluster resources and constraints”, Section 6.4 “Transferring the resource configuration to other cluster sites”を参照してください。

## 11 詳細の参照先 #

- 本製品の他のマニュアルは、https://documentation.suse.com/sle-ha/で入手できます。設定および管理タスクの詳細については、包括的な『Geo Clusteringガイド』を参照してください。

- DRBDを介したGeoクラスタ間のデータレプリケーションに関する詳細については、次の『SUSE Best Practices』ドキュメントを参照してください。

## 12 法的規制の通知 #

Copyright © 2006– 2025 SUSE LLC and contributors.All rights reserved.

この文書は、GNUフリー文書ライセンスのバージョン1.2または(オプションとして)バージョン1.3の条項に従って、複製、配布、および/または改変が許可されています。ただし、この著作権表示およびライセンスは変更せずに記載すること。ライセンスバージョン1.2のコピーは、「GNUフリー文書ライセンス」セクションに含まれています。

SUSEの商標については、http://www.suse.com/company/legal/を参照してください。その他の第三者のすべての商標は、各社の所有に帰属します。商標記号(®、 ™など)は、SUSEおよび関連会社の商標を示します。アスタリスク(*)は、第三者の商標を示します。

本書のすべての情報は、細心の注意を払って編集されています。しかし、このことは絶対に正確であることを保証するものではありません。SUSE LLC、その関係者、著者、翻訳者のいずれも誤りまたはその結果に対して一切責任を負いかねます。

# A GNU licenses #

This appendix contains the GNU Free Documentation License version 1.2.

## GNU Free Documentation License #

Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

##### 0. PREAMBLE #

The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or non-commercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

##### 1. APPLICABILITY AND DEFINITIONS #

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

##### 2. VERBATIM COPYING #

You may copy and distribute the Document in any medium, either commercially or non-commercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

##### 3. COPYING IN QUANTITY #

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

##### 4. MODIFICATIONS #

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

3. State on the Title page the name of the publisher of the Modified Version, as the publisher.

4. Preserve all the copyright notices of the Document.

5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

8. Include an unaltered copy of this License.

9. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

11. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

13. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.

14. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.

15. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

##### 5. COMBINING DOCUMENTS #

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".

##### 6. COLLECTIONS OF DOCUMENTS #

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

##### 7. AGGREGATION WITH INDEPENDENT WORKS #

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

##### 8. TRANSLATION #

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

##### 9. TERMINATION #

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

##### 10. FUTURE REVISIONS OF THIS LICENSE #

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See https://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

##### ADDENDUM: How to use this License for your documents #

    Copyright (c) YEAR YOUR NAME.
    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.2
    or any later version published by the Free Software Foundation;
    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
    A copy of the license is included in the section entitled “GNU
    Free Documentation License”.

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with...Texts.” line with this:

    with the Invariant Sections being LIST THEIR TITLES, with the
    Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.