クラスタを管理するには#
クラスタを形成した後、メンバーの一覧と状態を見るには lxc cluster list
を使用します。
user@host:~$
lxc cluster list
+---------+----------------------------+------------------+--------------+----------------+-------------+--------+-------------------+
| NAME | URL | ROLES | ARCHITECTURE | FAILURE DOMAIN | DESCRIPTION | STATE | MESSAGE |
+---------+----------------------------+------------------+--------------+----------------+-------------+--------+-------------------+
| server1 | https://192.0.2.101:8443 | database-leader | x86_64 | default | | ONLINE | Fully operational |
| | | database | | | | | |
+---------+----------------------------+------------------+--------------+----------------+-------------+--------+-------------------+
| server2 | https://192.0.2.102:8443 | database-standby | aarch64 | default | | ONLINE | Fully operational |
+---------+----------------------------+------------------+--------------+----------------+-------------+--------+-------------------+
| server3 | https://192.0.2.103:8443 | database-standby | aarch64 | default | | ONLINE | Fully operational |
+---------+----------------------------+------------------+--------------+----------------+-------------+--------+-------------------+
ここのクラスタメンバーについてより詳細な情報を見るには、以下のコマンドを実行します。
lxc cluster show <member_name>
クラスタメンバーの状態と使用状況を見るには、以下のコマンドを実行します。
lxc cluster info <member_name>
クラスタを設定するには#
クラスタを設定するには、lxc config
を使用します。
例えば以下のようにします。
lxc config set cluster.max_voters 5
いくつかの サーバ設定 はグローバルで他はローカルであることに注意してください。
グローバル設定はどのクラスタメンバー上でも実行でき、変更は分散データベースを通して他のクラスタメンバーにも伝搬されます。
ローカル設定は設定したサーバ上でのみ (あるいは --target
で指定したサーバ上でのみ) 変更されます。
サーバ設定に加えて、各クラスタメンバーに固有ないくつかのクラスタ設定があります。 利用可能な設定の全てについては クラスタメンバーの設定 を参照してください。
これらの設定を変更するには、lxc cluster set
か lxc cluster edit
を使用します。
例えば以下のようにします。
lxc cluster set server1 scheduler.instance manual
メンバーロールを割り当てる#
クラスタメンバーに メンバーロール を追加または削除するには lxc cluster role
コマンドを使用します。
例えば以下のようにします。
lxc cluster role add server1 event-hub
注釈
LXD で自動で割り当てられないロールのみが追加または削除できます。
クラスタメンバー設定を編集する#
メンバー固有設定、メンバーロール、failure domain とクラスタグループを含むクラスタメンバーのプロパティを編集するには lxc cluster edit
コマンドを使用します。
クラスタメンバーの退避と復元#
既存のクラスタメンバーの全てのインスタンスを空にしたい (例えば再起動が必要なシステムのアップデートを適用するような日常のメンテナンスやハードウェアの変更を行う場合など) ようなケースがあります。
このためには lxc cluster evacuate
コマンドを使用します。
このコマンドは指定したサーバ上の全てのインスタンスを他のクラスタメンバーに移動します。
退避したクラスタメンバーは "evacuated" 状態になり、このメンバー上でインスタンスの作成はできなくなります。
各インスタンスがどのように移動するかは cluster.evacuate
インスタンス設定で制御できます。
インスタンスは boot.host_shutdown_timeout
設定にしたがってクリーンにシャットダウンされます。
退避したサーバが再び利用可能になったときに、サーバを通常の稼働状態に戻すには lxc cluster restore
コマンドを使用します。
このコマンドは退避したインスタンスを一時的に保持していたサーバから戻します。
クラスタメンバーを削除する#
クラスタからメンバーをクリーンに削除するには以下のコマンドを使用します。
lxc cluster remove <member_name>
オンラインでインスタンスが 1 つも存在しないメンバーだけがクリーンに削除できます。
オフラインのクラスタメンバーの強制削除#
クラスタメンバーが恒久的にオフラインになった場合、クラスタメンバーをクラスタから強制削除できます。 メンバーを復旧できないと気づいたらすぐに削除するようにしてください。 クラスタにオフラインのメンバーを残しておくと、クラスタを新しいバージョンにアップグレードする際に問題が起きるかもしれません。
クラスタメンバーを強制削除するには、引き続きオンラインになっているクラスタメンバーの1つで以下のコマンドを入力します。
lxc cluster remove --force <member_name>
注意
クラスタメンバーを強制削除するとメンバーのデータベースが不整合な状態 (例えば、メンバー上のストレージプールが削除されないなど) のままになります。 結果として、後で LXD を再び初期化できなくなり、サーバを完全に再インストールするしかなくなります。
クラスタメンバーをアップグレードする#
クラスタをアップグレードするには、全てのメンバーをアップグレードする必要があります。 全てのメンバーを同じ LXD のバージョンにアップグレードしなければなりません。
注意
オフラインのメンバーがいる場合はクラスタをアップグレードしないでください。 オフラインのメンバーはアップグレードできず、クラスタがブロックした状態になってしまいます。
さらに snap をお使いの場合、アップグレードは自動で実行されますので、問題を避けるためには、オフラインメンバーを直ちに復旧するか削除するほうが良いです。
単一のメンバーをアップグレードするには、単にそのホスト上で LXD パッケージをアップグレードして LXD デーモンを再起動します。 例えば、snap を使用していれば、LXDを現在のチャンネルの最新バージョンとコホートにリフレッシュ(さらにLXDをリロード)します。
sudo snap refresh lxd --cohort="+"
新しいバージョンのデーモンがデータベーススキーマまたは API に変更がある場合、アップグレードされたメンバーは "blocked" 状態に遷移するかも知れません。
この場合、メンバーは LXD API リクエストに応答しなくなります (これはこのメンバー上では lxc
コマンドがもはや使用きなくなることを意味します) が、稼働中のインスタンスは引き続き稼働します。
これはアップグレードされておらず古いバージョンを稼働している他のクラスタメンバーがある場合に発生します。
ブロックされているメンバーがあるかを確認するには、ブロックされていないクラスタメンバー上で lxc cluster list
を実行します。
残りのクラスタメンバーのアップグレードを進めると、それら全てのメンバーが "blocked" 状態になります。 最後のメンバーをアップグレードすると、ブロックされたメンバーは全てのサーバが最新になったことを検知し、ブロックされたメンバーが再び使用可能になります。
クラスタ証明書をアップグレードする#
LXD クラスタ内で全てのサーバ上の API は同じ共有された証明書で応答します。これは通常有効期限が 10 年に設定されたごく普通の自己署名証明書です。
証明書は /var/snap/lxd/common/lxd/cluster.crt
(snap を使用している場合) か /var/lib/lxd/cluster.crt
(それ以外の場合) に保管され、全てのクラスタメンバー上で同じです。
この自己署名証明書を別の証明書、例えば、 ACME サービス経由で得られた有効な証明書 (詳細は TLS サーバ証明書 を参照) に置き換えることができます。
そのためには lxc cluster update-certificate
コマンドを使用します。
このコマンドはクラスタ内の全てのサーバの証明書を置き換えます。