Ubuntu MAAS 環境構築 バックアップ&リストア編

MAASをインフラの中心に据えるに当たって、既存環境を大きく変化させていく必要がある。DHCPは入れ替えたんだけど、DNSはまだだし。冗長化も先延ばし。LXCのコンテナ上に作ってあるので、一度構築してしまえば作り直す必要はなさそうなんだけど、何があるかわからないのでバックアップと再構築くらいはできるようにしておきたい。再構築手順は公式にあるので、それを参考にする。そのドキュメントを読んだ限りでは、どうやらデータベースのバックアップさえ取っておけば大丈夫な模様。

しばらくデータベースを触ってないことを思い出しつつ覗いてみるとMAASのDBはPostgreSQLのようだ。うーん、輪をかけて触るの久々だな。まずはサービスを停止してから、PostgreSQLの管理者ユーザーであるpostgresにsuして、pg_dumpを使ってバックアップを取得する。rootでも出来るような気もするけど、postgres力が著しく落ちてて細かいことを思い出せない。pg_dumpのオプションもよくわからないのでドキュメント通りに実行しておく。具体的には以下のようなコマンド。

sudo ssh maas
systemctl stop maas-regiond maas-rackd
su - postgres
mkdir -p /backup
pg_dump --format=d --file=/backup --compress=0 maasdb
exit
scp -r /backup ns:/

取得したバックアップはどこか適当なサーバへ退避しておく。このバックアップを使って同じサーバを再構築していくので、現maasサーバはshutdownしておく。別のホスト上のLXCで同名のmaasサーバを作ってしまう。Ubuntu 18.04のコンテナが出来たらログインして、いつも通りにMAASをインストールする。起動を確認したら一旦停止してリストアの準備をする。ちなみにMAASと一緒にインストールしているパッケージはAMTの処理に必要なもの。使っていない人は不要です。jqは便利だから入れておくw

準備が出来たところで、さきほどのバックアップを持ってきて、PostgreSQLにリストアする。あとはregiondとrackdを起動すれば、以前と同じMAASサーバが動き出すはず。具体的には以下のような操作。

scp -r ns1:/backup /
su - postgres
dropdb maasdb
createdb maasdb
pg_restore --dbname=maasdb --single-transaction /backup
exit
systemctl start maas-regiond maas-rackd
systemctl status maas-regiond maas-rackd

おっしゃ、無事起動!と思いきや、regiondが動かない。よく見ると以下のようなエラーを吐いている。

The secret stored in the database does not match the secret stored on the filesystem at /var/lib/maas/secret.

新サーバを停止して、旧サーバーを起動。該当するファイルを確認すると、確かに鍵ファイルのようなものがある。これをまた別のサーバにコピーした上で、旧サーバを停止、新サーバを起動する。新サーバ上にこの鍵ファイルを持ってきてからregiondを起動してみると・・・今度こそ起動した。これでバックアップ&リストアも確立。鍵ファイルも一緒にバックアップしておこう。cloud-initの初期化処理でpreseeds周りのファイルを編集した場合は、そこもバックアップ対象になるね。具体的には次回にでも。

sudo ssh maas
scp ns1:/backup/secret /var/lib/maas
systemctl start maas-regiond maas-rackd
systemctl status maas-regiond maas-rackd

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)