ホームページ  >  記事  >  運用・保守  >  データベースが Docker やコンテナ化に適さない理由

データベースが Docker やコンテナ化に適さない理由

王林
王林オリジナル
2020-04-15 10:01:073066ブラウズ

データベースが Docker やコンテナ化に適さない理由

データベースが Docker やコンテナ化に適さない理由はいくつかあります:

1. データは安全ではありません

たとえそうしたいとしてもDocker データをホストに保存しても、データが失われないことは保証できません。 Docker ボリュームは、永続ストレージを提供するために Union FS イメージ レイヤーを中心に設計されていますが、それでも保証がありません。

現在のストレージ ドライバーでは、Docker の信頼性が低くなる危険性がまだあります。コンテナーがクラッシュし、データベースが適切にシャットダウンされない場合、データが破損する可能性があります。

2. データベースを実行するための環境要件

DBMS コンテナーと他のサービスが同じホスト上で実行されているのが一般的です。ただし、これらのサービスのハードウェア要件は大きく異なります。

データベース (特にリレーショナル データベース) には、より高い IO 要件があります。通常、データベース エンジンは、同時リソースの競合を避けるために専用の環境を使用します。データベースをコンテナに配置すると、プロジェクトのリソースが無駄になります。このインスタンスには多くの追加リソースを構成する必要があるためです。パブリック クラウドで 34G のメモリが必要な場合、起動するインスタンスには 64G のメモリが必要です。実際には、これらのリソースは完全には使用されていません。

それにどう対処すればよいでしょうか?レイヤーで設計し、固定リソースを使用して、異なる層で複数のインスタンスを起動できます。水平方向にスケーリングすることは、垂直方向にスケーリングするよりも常に優れています。

3. ネットワークの問題

Docker ネットワークを理解するには、ネットワーク仮想化について深く理解する必要があります。予期せぬ事態に対処する準備もしておかなければなりません。サポートや追加ツールなしでバグ修正を実行する必要がある場合があります。

4. ステート

ステートレス サービスを Docker にパッケージ化すると、コンテナーを調整し、単一障害点を解決できます。しかし、データベースはどうでしょうか?データベースを同じ環境に配置すると、データベースがステートフルになり、システム障害の範囲が大きくなります。次回アプリケーション インスタンスまたはアプリケーションがクラッシュすると、データベースに影響が出る可能性があります。

5. 追加の分離はデータベースに悪影響を及ぼします

実際、これについては 2 番目と 3 番目の理由で述べました。しかし、この事実をもう一度強調したいので、これを別の理由としてリストします。分離レベルが高くなるほど、リソースのオーバーヘッドも増加します。水平方向に簡単にスケーリングできるため、専用環境よりも多くのメリットを得ることができます。ただし、Docker の水平スケーリングはステートレス コンピューティング サービスにのみ使用でき、データベースには使用できません。

データベースには分離機能が見当たりませんが、なぜデータベースをコンテナーに入れる必要があるのでしょうか?

推奨チュートリアル: docker チュートリアル

以上がデータベースが Docker やコンテナ化に適さない理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。