2016-12-07 9 views
4

マイクロサービスアーキテクチャ、より正確には分散環境でデータベースを展開するベストプラクティスは何ですか?マイクロサービスの原則では、スケーリングを可能にするために各サービスはステートレスでなければならないと規定しています。データベースは明らかに状態を持っているため、クラスタが初期化される前に、クラスタ外の固定位置に配置し、展開して構成する必要がありますか?マイクロサービスとデータベース

すべてのドッカーの作成例には、サービス定義のデータベースコンテナが含まれているので、私は混乱しています。しかし、事はそれほど単純ではありません。多くの場合、データベースは使用準備が整う前に多くの構成が必要になることがあります。また、ドッカーはサービスの開始順序を調整している。

データベースをdocker swarmにサービスと一緒に配備するのは本当に良い方法ですが、データの整合性と永続性を確保するにはどうすればいいですか?

答えて

1

これは良い質問であり、多くの人がベストプラクティスに関する限り、まだ考えていると思います。答えは本当にあなたのニーズにかかっています。そここのナットをクラックする方法はいくつかあるが、これらは私が今使っている2つです:

  • 複製と専用マシン(複数可)上の典型的な方法でデータベースを実行する、など私は現在、試してい
  • データとドッカースウォームクラスタ上のサービスとしてのデータベースを実行していると私は
  • これらのデータベース・マシンがすべて提供GlusterFSコンテナを実行するデータベース・マシンとしてラベルされたクラスタ内の3台のマシンを持っているGlusterFS
    • でクラスタ全体で持続GlusterFSの機能
      • データベースサービスが開始されると、GlusterFS共有がコンテナにマップされ、サービスがデータベースノードとしてラベル付けされたマシン上でのみ実行されるように指定します。この設定では、データベースサービスがどのノードから始まるかは関係ありません。マシンが故障した場合、データベースサービスは自動的にデータベースノードと呼ばれる別のノードに移行されます。データのGlusterFSレプリケーションは、永続化されたデータの整合性を保証します。

述べたように、それはそこにこれで起こって多くの実験がまだあると「ベスト・プラクティス」が完全に確立されていないというのが私の理解です。これらのベストプラクティスは、最終的にお客様のニーズとリスク許容度に依存します。

+0

glusterFSとデータベースを使用する上で最大の問題は、ネットワークトラフィックの問題とglusterの最大容量です。昨年、私は、ログを含むPHPアプリケーション用の集中した分散データストアを持っていました。私たちは実際に、ログからのスケールだけが、ログへの分散読み取り書き込みからの負荷から何度も重複してglusterをオーバーロードするという点に達しました。 – Dockstar

+0

@Dockstar、合意し、あなたの経験を投稿していただきありがとうございます。それが私が現時点でテストしている理由です。どのようにGlusterFSを設定しましたか?分散?ストライプ化、分散+ストライプ化、複製、複製+配布 –

+1

私たちは複数のエンドポイントを持っていたので、ストライピングされ、複製されませんでした。正直なところ、専用のフラッシュ(ディスクではなく、フラッシュカード)を使用していない限り、私はIOがそのペースでデータをストライピングするだけでなく、レプリケーションも見ることができません。私が見てきたのは、アクティブなアクティブなgaleraクラスタの自動サービス検出を行う方法です。ストレージではなくDBレベルで複製することもできますが、それでも同じブロックに対してストレージアレイに何度も何度もヒットしています – Dockstar

関連する問題