Kubernetes Operator を使用してデータベースを制御する

宣伝後に続きます。

Kubernetes でデータベースなどのステートフル アプリケーションを管理するのは困難な場合があります。オペレーターは実践的な知識をソリューションとしてグループ化し、管理タスクを自動化します。

MySQL オペレーターを使用すると、本番環境に対応した MySQL クラスターのデプロイメントと拡張が簡素化されます。また、データベースをホストするポッドを複製することで高可用性を実現し、バックアップとリカバリを可能にします。

InnoDB クラスター

宣伝後に続きます。

Haroon Khan は、高性能アプリケーションをサポートするデータベースを作成および保守するデータ プロフェッショナルです。彼は、MySQL、Microsoft SQL Server、DB2、オープンソース ツールなど、さまざまなテクノロジーに関して 10 年以上の経験があります。

彼は、企業が広範なデータ要件を処理できる最新のデータ アーキテクチャを導入できるよう支援することに情熱を注いでいます。 InnoDB Cluster はこの取り組みにおいて重要なコンポーネントであり、書き込みのスケーラビリティの向上を実現します。ただし、そのさまざまなコンポーネントに慣れる必要がある場合、実装は困難になる可能性があります。

宣伝後に続きます。

さらに、トポロジを管理するために複数のツールが必要になる場合があります。各テクノロジーの開発/統合/テストに時間を投資したくない場合、このソリューションはアプリケーションには適さない可能性があります。ここで Haroon の Kubernetes コンパスが威力を発揮します。

彼は、InnoDB Cluster を使用した MySQL のスケーリングは、その複雑さのスケーリングとは別のものであるべきだと考えています。だからこそ、彼は MySQL Operator Kubernetes との統合を提唱しています。この強力な組み合わせにより、InnoDB Cluster のパワーと Kubernetes の優雅さが組み合わされ、管理とオーケストレーションが一気に簡素化されます。

発表

インスタンスが再起動されると、そのインスタンスはグループから離脱するため、デフォルトのレプリカ セットに追加し直すためにグループに再参加する必要があります。サンプルに再参加するには、URI をパラメーターとして受け取るcluster.rejoinInstance() コマンドを使用できます。このコマンドにより、インスタンスがオンラインになり、グループに追加できることが保証されます。

また、あなたがスプリット ブレインではないかどうかもチェックされます (実行された GTID を、他の ONLINE メンバーの実行/パージされた GTID と比較します)。インスタンスに到達できない場合、コマンドは失敗する可能性がありますが、後で再試行できます。

ポッドの中断予算

宣伝後に続きます。

ポッド停止バジェット (PDB) は、コレクション内で常にアクティブでなければならないポッドの最小数または割合を指定します。これは、クォーラムベースのアプリケーションや Web フロントエンドなど、高可用性を必要とするアプリケーションを処理する場合に貴重なツールです。

ポッド停止バジェットは、一部のポッド インスタンスを同時に空にすることによって、ノード操作によってサービスが低下するだけであることを保証するのに役立ちます。これらは、水平ポッド オートスケーラーと連携して、不必要なデプロイメントのダウンタイムから保護します。

PDB を使用するには、アプリケーションに必要な可用性を定義する YAML ファイルを作成する必要があります。 PodDisruptionBudgetStatus オブジェクトを定義して、PDB の現在のステータスを追跡することもできます。 PDB のステータスが実際の状態より遅れる可能性があるため、これは状況の変化に対処する場合に役立ちます。

ポッド停止バジェットは、クラスターのアップグレードが行われている間、可用性を維持する必要があるアプリケーションに役立ちます。たとえば、電気通信会社は、システムのメンテナンス中やパッチ適用中も VoIP サービスを確実に利用できるようにしたい場合があります。

これにより、通信会社は可用性を犠牲にすることなくエンドユーザー エクスペリエンスを向上できる機能を実装できるようになります。 PodDisruptionBudget は、可用性とシステムのアップグレードおよびメンテナンスのバランスをとらなければならない SaaS (Software-as-a-Service) プロバイダーにも役立ちます。これは、SaaS プロバイダーが新しい機能をリリースしたり、サービスの更新を展開したりしながら可用性を維持する必要がある場合に特に当てはまります。

レプリカセット

ReplicationSet は、指定された数のポッド レプリカを保持する Kubernetes コントロール オブジェクトです。これらは、単純なスケーラビリティのニーズの処理に優れており、高可用性と復元力の確保に役立ちます。

ReplicaSet は、ポッドの障害やポッドの手動削除、ポッドを置き換える新しいポッドの作成、システムを望ましい状態に戻すための余分なレプリカの終了など、望ましい状態への変更を処理することもできます。

ReplicaSet は、レプリカの数とポッド モデルの仕様を含む YAML マニフェスト ファイルで構成されます。また、管理するポッドを識別および選択するためのポッド ラベルの使用もサポートしています。

たとえば、ReplicationSet は、(フロントエンド) のラベル層と (本番) の環境を持つすべてのポッドを取得できます。 ReplicationSet は、oplog またはプライマリ書き込み懸念ログを確認することで、望ましい状態への変更を追跡することもできます。

レプリカ セット内のプライマリに障害が発生した場合、新しいプライマリになることを選択したセカンダリは、ログに記録された操作をデータセットに適用することによって自身を更新します。さらに、ReplicaSet は読み取りクエリをミラーリングすることで、対象となるセカンダリ レプリカのキャッシュを事前にウォームアップできます。

これにより、一次停止後または計画メンテナンス中の一次選挙の影響が軽減されます。 ReplicaSet を複数のノードおよび可用性ゾーンにまたがってデプロイして、冗長性を向上させることもできます。

バックアップ

Kubernetes でステートフル データベースを実行するためのソリューションは数多くありますが、そのほとんどはバックアップやアップグレードなどの 2 日目の機能を必要とします。

Kubernetes Operator は、データベースのデプロイ、スケーリング、更新などの複雑なドメイン固有の操作を自動化および簡素化することで、このギャップを埋めます。

最高の MySQL オペレーターは、既存のコードとしてのインフラストラクチャ ツールおよび CI/CD パイプラインと緊密に統合されるように設計されており、スケーラブルで安全な、実稼働対応のデータベース デプロイメントを可能にします。

Oracle の MySQL Operator は、Kubernetes 上の MySQL InnoDB クラスターをサポートする自己修復ソリューションです。 Kubernetes StatefulSet を使用して MySQL サーバー インスタンスを管理し、それらにストレージ用の Persistent VolumeChain を割り当てます。

また、オペレーターは MySQL ルーター ポッドをデプロイして、クラスターを通じてクエリをルーティングします。このオペレーターは現在一般に利用可能であり、MIT ライセンスに近い普遍的に許容されるライセンスの下で配布されています。

Bitpoke MySQL Operator は、Helm と Kubectl だけをインストールする、Kubernetes 用の使いやすいオープンソース MySQL オペレーターです。これは、モニタリング、レプリケーション、バックアップ、更新などの機能を提供する、シンプルで安定した実稼働対応の Kubernetes ソリューションとなるように設計されています。オペレーターは、宣言型 YAML ファイルを使用して、Kubernetes 上に MySQL クラスターをデプロイおよびスケーリングします。

従来のストアド プロシージャとは異なり、Nova-conductor の抽象化により、データベースへの直接アクセスが防止されます。これにより、データ攻撃のリスクが軽減されます。ただし、バッファ オーバーフロー、メモリ リーク、悪意のあるソフトウェア プログラムを通じてデータベースを攻撃する可能性は依然としてあります。

Rolar para cima