本番環境でのDockerを使用した永続ストレージ-ソリューションとその理由


8

私は最近、モノリシックSaaSアプリケーションをコンテナー化されたマイクロサービスに分割したい会社で働き始めました。しかし、永続ストレージの基本的な部分を把握するのに苦労しています。なぜそれほど多くの異なる競合プラットフォームがあるのですか?Portworx、Rexray、StorageOS、Flocker、Inifintなど。

私の質問

  1. 誰かが単にNFSサーバーを起動し、階層的なフォルダー構造をストレージバックエンドとして使用しないのはなぜですか?これらのツールの1つを使用すると、どのようなメリットがありますか?

  2. Dockerでこのようなものを使用することはどれほど危険ですか?Dockerベースの環境で致命的なデータ損失の一般的な原因は何ですか?

  3. どの永続ストレージソリューションを推奨しますか、またその理由は何ですか?私の会社はSaaSプラットフォームを運用しています。データペイロードはサイズが小さい(5kb-100kb)。データ処理は、リソース消費量が中小です。全体的なボリュームは中程度ですが、増加し続けています。モノリシックアプリケーションを個別のコンテナ化されたマイクロサービスとしてクラウドに完全に移行したいと考えています。データウェアハウスを含みます。

  4. 多少は関係ありませんが、関連しています。Rancher/ Cattleとは対照的に、Kubernetesをオーケストレーターとして使用することの利点は何ですか?中小規模のプラットフォーム用にKubernetesが過剰設計されていませんか?ワンクリックインストール以外に、ランチャーでKubernetesを使用する利点はありますか?

洞察をありがとう。世間知らずでごめんなさい。すべてのドキュメントと補足資料を歓迎します。

編集:コンテキストでは、基盤となるクラウドプラットフォームとしてAzureを使用しています。


1
4:の場合、Kubernetes はAzureとうまく連携し、永続ボリュームをAzure Diskとして作成します。NFSには不適切なロックメカニズムの履歴があります。オーケストレータでエラーが発生した場合、ファイルを簡単に破損する可能性があります。
Tensibai 2017

1
このコンテキストで私が使用したチームは、一連のmucroservicesのストレージバックエンドとしてCassandraを使用して良い経験を持っていますが、焦点はデータの書き込みよりも読み取りにあります
Peter Muryshkin

1
どのような種類のデータの?データベースデータ?ピクチャー?テキストファイル?
James Shewey 2017

回答:


4

私は2番目の点に答えることができます:

Dockerは、アプリケーションがコンテナー内で実行され、ストレージやその他のライブセッションが共有RAMまたはデータベースで維持される場合に、マイクロサービスベースのアーキテクチャに最適です。

基本的には、Dockerコンテナー内には何も格納しないでください。それには多くの理由があります:

  1. アップグレードを検討してください:チームの誰かがアプリケーションの新しいイメージを作成し、最新のイメージで実行されているコンテナーが必要です。現在のドッカーとこれを行う一般的な方法は、既存のコンテナーを停止し、古いコンテナーと同じランタイムパラメーターを使用して新しいコンテナーをスピンすることですが、新しいイメージを使用します。これは、コンテナが常にステートレスであり、データを含まないべき最大の理由の1つです。すべてのデータをいくつかの場所にマウントして、セッションをdb内またはmemchachedなどのようなもの内に保持できます。

  2. dockerの大きなユースケースの1つは、クラスターを構築することです。コンテナー内でデータの保持を開始すると、アプリケーションコンテナー間でデータを同期させるためのオーバーヘッドが発生します。

  3. Dockerコミュニティは、一般的にコンテナにデータを保持することを推奨していません。そのため、本番環境でこのリスクを取ろうとした人はいません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.