Amazon S3のbaculaを介したバックアップ

ご存知のように、すべての人々は2つのタイプに分けられます。まだバックアップを作成しない人と、すでにバックアップを作成する人です。 バックアップを作成し始めたばかりの人にとって、通常発生する最初の質問は、データのアーカイブ方法です。 単純なオプション(空白を手動でカットし、ディレクトリを他のサーバーに完全にアーカイブする)は考慮しません-アーカイブファイルのインデックス作成と検索のための非常に控えめな機能があります。 代わりに、自動バックアップシステム、特にバキュラに注目します。 この記事では、なぜバキュラなのかという問題には触れていません。 主な理由-それは無料ライセンスの下で配布され、多くのプラットフォームで利用可能であり、非常に柔軟性があります。

アーカイブシステムを選択した後の2番目の質問は、バックアップを保存する場所を選択することです。 Baculaでは、ストリーマー、CDを使用して、アーカイブをFIFOデバイスと通常のファイルに書き込むことができます。 ストリーマーは、ハードウェアに対して永続的な物理が存在する企業サーバーで便利です。 アーカイブのファイルの保存は、アーカイブの容量がハードドライブの容量を超えない場合に適しています。さらに、ストレージの信頼性のために、冗長性を備えたRAIDアレイ、またはバックアップ用の複数の物理サーバーを、できれば異なる部屋に作成することが望ましいです。 それ以外の場合、これはすべて最初の火災までです。 ディスクへのカットはホームオプションであり、その主な欠点は、新しいディスクを定期的に貼り付ける必要があることです。 Amazon S3にデータをアーカイブするようにbaculaを構成しました。

Amazon S3は、手頃な価格のAmazonのクラウドベースのファイルストレージであり、インターネットに常時接続されているサーバーのアーカイブに適しています。 これには、ホームコンピューター、オフィスサーバー、およびデータセンターのサイト上のサーバーを使用できます。

それでは、セットアップに取り掛かりましょう。 オフィスのローカルネットワークとデータセンター内の小さなクラスターは、ファームにアーカイブされています。

監督

Baculaは、中央サーバーであるDirectorが中心的な役割を果たすように設計されています。 その機能は、スケジュールに従ってアーカイブシステム全体に関する情報を保存し、必要なタスクを開始し、その実装の結果を記録することです。 bacula-director-mysqlパッケージをオフィスネットワークサーバーにインストールします(Debianで呼び出されます)。

Baculaには優れた構成ドキュメントがあります。 キー設定のみを説明します。 カタログセクションは、アーカイブインデックス、データベース名、名前、およびパスワードが保存されるMySQLサーバーのアドレスを示します。 「メッセージ」セクションに、管理者の電子メールを書き込みます。このメールには、実行結果に関するレポートがダンプされます。

 mailcommand = "/usr/lib/bacula/bsmtp -h smtp.example.com -f \"\(Bacula\) %r\" -s \"Bacula daemon message\" %r" mail = sysadmin@example.com = all, !skipped 

保管

Baculaには分散アーキテクチャがあります。 アーカイブが記録されるストレージメディアが接続されているサーバーは、ストレージと呼ばれます。 Amazon S3とやり取りするのはストレージサーバーです。 私たちのシステムでは、2つのストレージサーバーが必要でした.1つはオフィスにインストールされ、Directorを備えたサーバーに直接インストールされます(オフィスのコンピューターからのすべてのデータはバックアップされます)。 分離の意味は、データセンターとオフィス間の有料トラフィックを促進することではありません。

Amazon AWSに登録し、選択した名前でバケットを作成すると、バケット名、access_keyおよびsecret_keyの詳細が得られます。 次の手順では、s3fsモジュールをfuseに使用して、バケットをサーバーファイルシステムに直接マウントします。 s3fsはDebianディストリビューションの一部ではありません-手動でビルドする必要があります。 何らかの理由で、最新バージョンはすぐには機能しませんでした(ファイルの削除後に何らかのフリーズがあり、ファイルシステムを再マウントする必要がありました)が、バージョン1.16は問題なくすぐに機能しました。 サーバーブートに書き込みます。

 s3fs your-bucket-name /mnt/backup -o allow_other,retries=10,connect_timeout=30,readwrite_timeout=30 

そして、S3パスワードで/ etc / passwd-s3fsファイルを作成します。

 access_key:secret_key 

ファイルシステムがマウントされた後、bacula-sdパッケージをインストールし、baculaにアーカイブファイルをS3に保存するように依頼します。 これを行うには、Storageセクションのbacula-sd.conf構成ファイルで、Nameを指定して簡単に識別できるようにします。たとえば、Name = companyname-office-sd、Maximum Concurrent Jobs = 1で、S3を介した異なるファイルへの同時アクセスがありません。 Directorセクションで、Directorサーバーの名前とランダムなパスワードを書きます。 ストレージセクションでは、デバイス-アーカイブを保存する実際の物理的な場所について説明します。

 Device { Name=S3-companyname-office Media Type=file ArchiveDevice=/mnt/backup/office Label Media=yes; Random Access=yes; AutomaticMount=yes; RemovableMedia=no; AlwaysOpen=no; } 

次に、Directorサーバーに1分間戻り、その構成に新しいストレージセクションを作成します。

 Storage { Name = S3-companyname-office Address = storage.server.domain.name SDPort = 9103 Password = "storage-server-password" Device = S3-companyname-office Media Type = File Maximum Concurrent Jobs = 1 } 

パスワードは、DirectorセクションのStorage configと同じです。

ファイルデーモン

ファイルデーモンは、実際にはバックアップが必要なコンピューターにインストールされるデーモンです。 bacula-fdパッケージは、クラスター内のすべてのコンピューター、貴重なデータがあるオフィスコンピューターにインストールされ、そのbacula-fd.conf構成が構成されます。 Directorセクションでは、Directorサーバーの識別子を記述し、新しいランダムパスワードを作成します。 これで、構成が終了し、再びDirectorサーバーに戻って新しいクライアントを登録します。

Director構成で、新しいセクションを作成します。

 Client { Name = server-name-fd Address = this.server.host.name FDPort = 9102 Catalog = MyCatalog Password = "file-server-password" Maximum Concurrent Jobs = 1 AutoPrune = yes Job Retention = 365 days } 

パスワードは、DirectorセクションのFile Daemon構成と同じです。

重要なパラメータは、ジョブの保持です。 この時間が経過すると、アーカイブインデックスから古いデータが削除されます。 この時間が長ければ長いほど、古いアーカイブファイルは上書きされなくなり、Amazon S3に支払うお金も増えます。 小さく、安価なバックアップにはコストがかかりますが、アーカイブの深さも少なくなります。 また、ジョブの保持よりも頻繁にフルアーカイブを行うことを確認してください。そうしないと、古いデータが既に削除され、新しいデータがまだアーカイブされていない場合があります。

スペースを解放する

保持期間が終了した後、インデックスへのリンクがインデックスから削除された場合でも、データは物理的にアーカイブから削除されないことに注意してください。 インデックスから削除するということは、単に古いファイルの代わりに新しいファイルを書き込むことができることを意味します。 ディスク容量は解放されないため、インデックス全体を消去しても、お支払いは少なくなりません。 物理的には、インデックスにリンクが残っていないことを確認してファイルを手動で削除するか、解放されたボリュームを自動的に切り捨てることができるバキュラの最新バージョンをインストールできます。 実際には、これが必要になることはめったになく、この機会を利用しません。

ファイアウォール設定

動作中、baculaは3種類のTCP接続を必要とします。Directorからポート9103のストレージ、Directorからポート9102のFile Daemon、File Daemonからポート9103のStorageです。これらのすべての方向で、ファイアウォールは開いている必要があります。 Storage and File DaemonのAddressパラメーターで規定されている、指定された方向で利用可能になります。 特に、ローカルネットワーク内に突然ストレージがある場合、アーカイブされるDirectorおよびFile Daemonも同じネットワーク内になければなりません。 突然何らかの理由でストレージをネットワーク内に保持する必要がある場合、対応するポートがネットワーク内に転送されるようにルーティングを構成する必要があります。

s3fsの機能

ファイルに書き込むとき、s3fsはファイルの以前のバージョン全体をコンピューターに読み取り、すべての変更はローカルコピーで行われ、ファイルを閉じた後、S3に完全にアップロードされます。 つまり、サイズが500メガバイトのアーカイブファイルに数バイトを追加しても、ギガバイトがネットワーク経由で転送されることになります。 Amazon S3へのトラフィックは課金されるため、s3fsのこの機能を忘れないでください。 ダウンロードとアップロードが小さくなるように、ファイルサイズをあまり大きくしないでください。 各ストレージサーバーに3つのプールがあります-フルバックアップ(最大ボリュームバイト= 500000000、ボリューム保持= 12か月)、差分バックアップ(最大ボリュームバイト= 300000000、ボリューム保持= 7か月)および増分-backups(最大ボリュームバイト= 100000000、ボリューム保持= 2か月)。 この例では、少なくとも2か月に1回(1か月)差分バックアップを実行する必要があります。そうしないと、増分バックアップが既に削除され、新しい差分バックアップが存在しない場合があることに注意してください。 同様に、フルバックアップは少なくとも7か月に1回実行する必要があります(6つあります)。

さらに、ローカルコピーを保存する場所が必要なので、常にファイルシステム上に置く必要があります。 ローカルコピーを追加する場所は、s3fsをマウントするときにuse_cacheオプションで指定します。 デフォルトでは、これはルートFSです。 同時に開いているファイルが多いほど、より多くのスペースが必要になります。 したがって、1つのストレージサーバー上の最大同時ジョブ数(多くのファイルが開いたままにならないようにする)と最大ボリュームバイトの両方を制限します。 場所が突然なくなると、s3fsはフリーズし、場所が解放されるのを待ちます。

発行価格

ストレージ価格の範囲は、1か月あたり1ギガバイトあたり0.037ドル(99.99%の信頼性が低下した大容量ストレージボリューム)から1か月あたり1ギガバイトあたり0.14ドル(標準信頼性が99.999999999%の小規模ストレージボリューム)です。 標準の信頼性を選択し、約1テラバイトのアーカイブを保存します。このコストは(トラフィックのコストと合わせて)月額約180ドルです。

安全性

短いセキュリティチェックリストを次に示します。

参照資料

Source: https://habr.com/ru/post/J111555/


All Articles