別のバックアップ-スクリプトよりも、システムよりも簡単

多くのバックアップシステムがありますが、サービス対象のサーバーがさまざまな地域やクライアントに分散していて、オペレーティングシステムを使用して管理する必要がある場合はどうでしょうか。







こんにちは、Habr

私の名前はナタリアです。私はNPOCristaのアプリケーション管理者グループのチームリーダーです。私たちは、当社のプロジェクトグループのOpsです。私たちにはかなり独特な状況があります。私たちは、会社のサーバーとクライアントの敷地内にあるサーバーの両方にソフトウェアをインストールして保守しています。この場合、サーバー全体をバックアップする必要はありません。重要なのは「必須データ」、つまりファイルシステムのDBMSと個々のディレクトリだけです。もちろん、顧客は独自のバックアップ手順を持っている(または持っていない)ため、バックアップを保存するための何らかの外部ストレージを提供することがよくあります。この場合、バックアップを作成した後、外部ストレージへの送信を提供します。



しばらくの間、バックアップの目的でbashスクリプトを使用しましたが、オプションが増えるにつれて、このスクリプトの複雑さは比例して増大し、ある時点で「それを地面に破壊してから....」必要になりました。



既製のソリューションは、バックアップを分散化する必要があるため、クライアントにローカルにバックアップを保存する義務があるため、セットアップの複雑さ、インポートの置換、アクセス制限など、さまざまな理由で機能しませんでした。



自分で何かを書くほうが簡単だと私たちには思えました。同時に、私は次のN年間の状況に十分であるが、範囲の潜在的な拡大の可能性がある何かを手に入れたかった。



問題の条件は次のとおりです。



  1. 基本的なバックアップインスタンスは自律的で、ローカルで機能します
  2. 常にクライアントのネットワーク内にバックアップとログを保存する
  3. – «»
  4. Linux, ,
  5. ssh,
  6. ( ) ,


ここで得られたものを見ることができます:github.com/javister/krista-backup

ソフトウェアはpython3で書かれています。Debian、Ubuntu、CentOS、AstraLinux1.6で動作します。



ドキュメントは、リポジトリのdocsディレクトリにあります。



システムで使用される基本概念:

アクション-1つのアトミック操作(データベースバックアップ、ディレクトリバックアップ、ディレクトリAからディレクトリBへの転送など)を実装するアクション。既存のアクションはコア/アクションディレクトリ

タスクにあります-タスク、1つの論理的な「バックアップタスク」

スケジュールを説明する一連のアクション-スケジュール、タスク実行時間をオプションで示すタスクセット



バックアップ構成はyamlファイルに保存されます。一般的な構成構造:



  • 一般設定
  • セクションアクション:このサーバーで使用されるアクションの説明
  • スケジュールセクション:すべてのタスク(一連のアクション)の説明と、そのような起動が必要な場合は、クラウンによる起動のスケジュール


構成の例はここに



ありますアプリケーションが現時点でできること:



  • 主な操作は次のとおりです。pg_dumpを介したPostgreSQLバックアップ、tarを介したファイルシステムディレクトリのバックアップ。外部ストレージを使用した操作。ディレクトリ間のrsync; バックアップのローテーション(古いコピーの削除)
  • 外部スクリプトを呼び出す
  • 単一のタスクの手動実行



    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • crontabで個別のタスクまたはスケジュール全体を追加(または削除)できます



    /opt/KristaBackup/KristaBackup.py enable all
  • バックアップ結果に基づいてトリガーファイルを生成します。この機能は、バックアップを監視するためにZabbixと組み合わせて使用​​すると便利です。
  • webapiまたはwebモードでバックグラウンドで動作できます



    /opt/KristaBackup/KristaBackup.py web start [--api]


モード間の違い:webapiには適切なWebインターフェイスがありませんが、アプリケーションは別のインスタンスからの要求に応答します。 Webモードの場合、フラスコといくつかの追加パッケージをインストールする必要がありますが、これは、認定されたAstraLinux SEなど、どこでも受け入れられるわけではありません。



Webインターフェイスを介して、接続されたサーバーのバックアップのステータスとログを表示できます。「Webインスタンス」は、APIを介して「バックアップインスタンス」からデータを要求します。 Webへのアクセスには許可が必要ですが、webapiへのアクセスには必要ありません。







誤って渡されたバックアップのログは、警告-黄色、エラー-赤の色でマークされます。











管理者がパラメータに関するチートシートを必要とせず、サーバーオペレーティングシステムが同種である場合は、ファイルをコンパイルして既製のパッケージを配布できます。



このユーティリティは主にAnsibleを通じて配布され、最初に重要度の低いサーバーに展開され、テスト後に他のすべてのサーバーに展開されます。



その結果、コンパクトなスタンドアロンのコピーユーティリティが得られ、自動化が容易で、経験の浅い管理者でも使用できます。それは私たちにとって便利です-多分それはあなたにとって役立つでしょう?



All Articles