8. 製品メッセージとしては分散データ・グリッド
• オラクル的には、データ・グリッドと呼んでいます。
• 定義(マニュアルより抜粋)
– A Data Grid is a system composed of multiple servers that
work to manage information and related operations - such
as computations - in a distributed environment.
– データ・グリッドは複数のサーバーで構成されるシステムで、
分散環境において情報とそれに関連付けられた操作(計算など)の
管理を連携して実行します。
8
12. Coherenceの内部構造概略
Coherence
実際のデータは、backing Client
map と呼ばれるマップに Coherence API
格納される。
Coherenceの内部は複数のサ
ービス(スレッド)で構
成される。
cache service Cache Cache Cache
Service Thread Service Thread Service Thread
storage storage storage
backing map backing map backing map
cluster service Cluster Cluster Cluster
Service Thread Service Thread Service Thread
Coherence Coherence Coherence
Server Server Server
12
13. Cache Serviceの種類
Distributed Cache Service
• Distributed Cache Service (分散キャッシュ)
– データはハッシュ計算により、どのパーティションに格納される
か決まる。パーティションはノード全体に分散。
どのデータにも1hop Coherence
でアクセス可能 Client
Coherence API
Distributed Distributed Cache Distributed Cache Distributed Cache
Cache Service Service Thread Service Thread Service Thread
storage storage storage
backing map backing map backing map
P1 P4 P2 P5 P3 P6
Coherence Coherence Coherence
Server Server Server
13
14. Cache Serviceの種類
Distributed Cache Service
• Distributed Cache Service (分散キャッシュ)
– バックアップを保持する設定も可能。
– バックアップは自動的に”異なるサーバー”に配置される。
これでSPOFがなくな
ったね!
Distributed service thread service thread service thread
Cache Service storage storage storage
backing map backing map backing map
P1 P4 P2 P5 P3 P6
backup map backup map backup map
P3 P6 P1 P4 P2 P5
Coherence Coherence Coherence
Server Server Server
14
15. Cache Serviceの種類
Replicated Cache Service
• Replicated Cache Service (レプリケーションキャッシュ)
– 全ノードに完全に同じデータを持つ。
Replicated service thread service thread service thread
Cache Service storage storage storage
backing map backing map backing map
同じデータ 同じデータ 同じデータ
Coherence Coherence Coherence
Server Server Server
15
17. 組み合わせ例
Distribute Cache Service + Read Write Backing map
• Distributed Cache Service にてキャッシュを分散。
Read Write Backing map を使い、キャッシュとDBの連
携をする例
Distributed service thread service thread service thread
Cache Service storage storage storage
backing map backing map backing map
(Read Write) (Read Write) (Read Write)
front (Local) front (Local) front (Local)
Cache Store Cache Store Cache Store
backup map backup map backup map
Coherence Coherence Coherence
Server Server Server
databaseへ接続
17
29. プロセスダウンの検知をするには
TCP Ring
• プロセス同士は互いにTCPコネクションをリング上に張
っている。
• プロセスがダウンした場合、OSがTCPコネクション(ソ
ケット)を閉じてくれるので、ノードダウンに気がつく
事ができる。 OS
ん?隣のノードが落ち
Coherence
たっぽいぞ。 Client
OS OS
Coherence Coherence
Server OS Server
Coherence
Server
29
30. サーバー(OS)のダウンを検知するには
IP Monitor
• ハードウェア障害や、OSのカーネルパニックなど、OSが
突然死した場合、TCPコネクションは適切に処理されな
いため、通信相手はそれに気がつくことができない。
• ランダムにpingを送ることで、OSダウンを検知。
ん?向かいのノードの OS
ping応答が無いな
Coherence
Client
OS OS
ICMP Echo
Coherence Coherence
Server OS Server
Coherence
Server
30
31. 一番避けたいクラスターの分断
Split Brain
正常時 network network
switch switch
Server Server Server Server Server Server
cluster1
障害発生時 network network
switch switch
Server Server Server Server Server Server
cluster1 cluster2
ネットワークが切れたのか、本当 お互い、相手がダウンしたと思い
に相手のノード3台がダウンしたの 込んでいるので、各々クラスター
か区別つかない。 を再構成する。
31
32. Split Brainの何が問題?
• 分断したクラスターが各々処理を始めてしまうため、全
体での一貫性が崩れてしまう。
– データ破損
– 結果不正
• 発生の検知には、少なくとももう1系統の情報共有手段
が必要
network network
switch switch
Server Server Server Server Server Server
cluster1 cluster2
何かしらの情報共有手
段。
32
33. Coherence以外のクラスター製品はどうしてる?
Oracle RACの例
• Network Heartbeatの他に、Disk Heartbeatを使ってい
るものもある。
network network
switch switch
Server Server Server Server Server Server
cluster1 cluster2
投票の結果、cluster2は再起動
することにします。
共有ディスクを使って
Disk Heartbeatを行なってい
るので、ネットワーク分断が
起こっても検知可能。
storage server
33
34. Coherenceではどうしてる?
• 標準では特にSprit Brainを検知する機能を持っていな
い
– デフォルトのままで使うと Split Brain 状態になる。
– カスタムで色々拡張できるので、ネットワークを2系統使い(例
えば運用LAN)独自の検知機能を付与することはできる。
3台でクラスター
3台でクラスター 再構成しよーっ
network network
再構成しよーっと switch switch と
Server Server Server Server Server Server
cluster1 cluster2
例えば運用LANがあるなら、そちらから
ノードの数数えて、不一致なら強制停止
とかスクリプト書けるよね。
34
35. そもそもSplit Brainを起こさせたら負け
• 通常はネットワークは「冗長」構成にするもの。
• ネットワーク分断が起こるのは一時的なものがほとんど
– スイッチの H/A切り替え
SPOFとかまじありえ
– スパニングツリーの再計算 ないよねー
– etc...
• 数秒の通信断だけ耐えられればよいはず
切り替えるから
ちょっと待って
あれ?繋が ね。
らないぞ? network network
network
switch network
switch
switch switch
Server Server Server Server Server Server
cluster1 cluster2
35
36. Quorumによる制御
Cluster Quorum Policy
• 例えば、HA切り替えに伴う1分程度の通信断でもクラス
ターを維持させたい。
• Quorum という考え方。
– クラスターの稼働に必要なノード数を指定(以下の図では4)
切り替えるから
ちょっと待って
動けな
い・・・ ね。
network network
network
switch network
switch
switch switch
Server Server Server Server Server Server
cluster1 cluster2
4台ないと離脱やノード排除も含むク
ラスター活動を行えないので、一時的
な通信断でsplit brainが発生することを
防ぐことができる。
36
38. CoherenceとRACを組み合わせた構成例
「某」製品の組み合わせ
Service LAN
switch
AP Server AP Server AP Server AP Server
AP Layer (Coherence) (Coherence) (Coherence) (Coherence)
Coherence Cluster switch
Cache Server Cache Server Cache Server Cache Server
Cache Layer (Coherence) (Coherence) (Coherence) (Coherence)
switch
DB Server DB Server DB Server DB Server
DB Layer (RAC) (RAC) (RAC) (RAC)
DB Cluster switch
Storage Server
38