Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Copyright(c) 2018 Linux-HA Japan Project
コンテナを止めるなを止めるな止めるなめるな!
PacemakerによるコンテナコンテナHAクラスタリングととKubernetesとの違いとは違いとはいとは
2018年10月27日Linux-HA Japan プロジェクト
http://linux-ha.osdn.jp/森 啓介
2Copyright(c) 2011 Linux-HA Japan Project 2
自己紹介 名前: 森 啓介 (Keisuke MORI)Keisuke MORI))
twitter: @ksk_ha
Linux-HA Japanプロジェクト関連の活動の違いとは活動 Pacemakerリポジトリパッケージの違いとはリリース http://linux-ha.osdn.jp/
ClusterLabs プロジェクトの違いとはコミッタ Pacemaker、resource-agents などHAクラスタ関連の活動の違いとは開発コミュニティコミュニティ https://github.com/ClusterLabs/
本業 普段の業務の違いとは業務: NTT OSSセンタ
NTTグとループ内におけるにおけるコンテナPacemaker/Heartbeatの違いとは導入支援・サポートサポート バグと報告・サポートパッチ作成などによる作成などによるなどによるコンテナNTTから開発コミュニティへのフィードバック・貢献開発コミュニティコミュニティへの違いとはフィードバック・サポート貢献
3Copyright(c) 2011 Linux-HA Japan Project 3
もくじ Pacemakerとは
オーケストレーションツールによるコンテナコンテナHA
Pacemaker bundle 機能によるコンテナによるコンテナコンテナHA
今後の動向の違いとは動向
4Copyright(c) 2011 Linux-HA Japan Project 4
もくじ Pacemakerとは
オーケストレーションツールによるコンテナコンテナHA
Pacemaker bundle 機能によるコンテナによるコンテナコンテナHA
今後の動向の違いとは動向
5Copyright(c) 2011 Linux-HA Japan Project 5
Pacemaker?なにそれおいしいの?なにそれおいしいの違いとは?なにそれおいしいの?
Pacemakerとは、オープンソースの違いとはHAクラスタソフトウェアです。です。
HHigh AAvailability = 高可用性サービスをできるコンテナ限りり「止めない!」こと止めない!」ことめない!」こと
6Copyright(c) 2011 Linux-HA Japan Project 6
Pacemakerの違いとは概要
サーバ#1 サーバ#2
サービスの監視・制御の監視・制御監視・制御
サーバ間の監視・制御間の監視・制御の監視・制御監視・制御
サーバ・サポートアです。プリケーションの違いとは故障監視
7Copyright(c) 2011 Linux-HA Japan Project 7
Pacemakerの違いとは概要
サーバ#1 サーバ#2
サービスの監視・制御の監視・制御フェイルオーバ間の監視・制御
故障検知時、自動的にフェイルオーバにフェイルオーバ ダウンタイムの最小化の違いとは最小化 STONI)THによるコンテナデータの違いとは安全性確保
STONITH(強制電源断)
8Copyright(c) 2011 Linux-HA Japan Project 8
Pacemakerを詳しく知りたかったら…しく知りたかったら開発コミュニティへのフィードバック・貢献…
Linux-HA Japan プロジェクト 2F 206F 2F 20606教室にてデモ展示中!にてデモ展示中!デモ展示中!展示中!
9Copyright(c) 2011 Linux-HA Japan Project 9
Pacemakerとは
オーケストレーションツールによるコンテナコンテナHA
Pacemaker bundle 機能によるコンテナによるコンテナコンテナHA
今後の動向の違いとは動向
もくじ
10Copyright(c) 2011 Linux-HA Japan Project 10
コンテナが止まった!そのときどうなる?止めない!」ことまった!その違いとはときどうなるコンテナ?なにそれおいしいの?
もう時代はコンテナ・クラウドでしょー時代はコンテナ・クラウドでしょーはコンテナ・クラウドでしょーコンテナ・クラウドでしょーでしょー
Kubernetesがあるから大丈夫!大丈夫!
セルフヒーリング機能は確かに便利ね機能は確かに便利ねはコンテナ・クラウドでしょー確かに便利ねかに便利ねねでもPodの種類にも気をつけて種類にも気をつけてにも気をつけてをつけてデモ展示中!
11Copyright(c) 2011 Linux-HA Japan Project 11
Kubernetes セルフヒーリングと機能によるコンテナ
Pod
共有ストレージストレージマスの監視・制御ターからの監視・制御監視
master worker1 worker2
Podの監視・制御再起動
レプリカ数の維持数の維持の監視・制御維持
物理ネットワークネットワーク
Pod
12Copyright(c) 2011 Linux-HA Japan Project 12
起動時は常に同じ状態に同じ状態じ状態
データを保存する必要はなするコンテナ必要はない
必要なだけいくつでも起動すればよい
Webサーバ、アです。プリケーションサーバなど
Statelessコンテナ と Statefulコンテナ
起動時は「止めない!」こと前回と同じ」と同じ状態じ」データを持った状態で起動った状態で起動
データの違いとは永続化と共有ストレージ 別の物理サーバでも同じデータの違いとは物理ネットワークサーバでも同じ状態じデータ
個々の識別が必要の違いとは識別の物理サーバでも同じデータが止まった!そのときどうなる?必要 再起動しても同じ状態じデータ
データベースサーバ、ファイルサーバなど
StatelessコンテナDeployment, ReplicaSet
StatefulコンテナStatefulSet
13Copyright(c) 2011 Linux-HA Japan Project 13
Deployment vs. StatefulSet サービス継続性の違いとは違いとはい
共有ストレージストレージ
Deployment
StatefulSet
master worker1 worker2
物理ネットワークネットワーク
ネットワーク接続断が発生してが止まった!そのときどうなる?発コミュニティ生してして監視処理ネットワークが止まった!そのときどうなる?タイムの最小化アです。ウトした!
ネットワーク接続断が発生してが止まった!そのときどうなる?発コミュニティ生してして監視処理ネットワークが止まった!そのときどうなる?タイムの最小化アです。ウトした!
14Copyright(c) 2011 Linux-HA Japan Project 14
Deployment vs. StatefulSet サービス継続性の違いとは違いとはい
共有ストレージストレージ
Deployment
StatefulSet
master worker1 worker2
物理ネットワークネットワーク
デッドロックだね
データベースが止まった!そのときどうなる?フェイルØωØverωØverØωØververしないニャ!
15Copyright(c) 2011 Linux-HA Japan Project 15
Deployment vs. StatefulSet サービス継続性の違いとは違いとはい
共有ストレージストレージ
Deployment
StatefulSet
master worker1 worker2
Deployment は他のワーカーノードで再起動するの違いとはワーカーノードで再起動するコンテナStatefulSet は再起動されず、コンテナは止めない!」ことまるコンテナ!
Deployment は他のワーカーノードで再起動するの違いとはワーカーノードで再起動するコンテナStatefulSet は再起動されず、コンテナは止めない!」ことまるコンテナ!
物理ネットワークネットワーク
16Copyright(c) 2011 Linux-HA Japan Project 16
デモ 1Kubernetes の違いとは実際の動作の違いとは動作
17Copyright(c) 2011 Linux-HA Japan Project 17
デモ 1: 初期状態(Keisuke MORI)ノード)
[root@master osc2018tk-demo]# kubectl get nodesNAME STATUS ROLES AGE VERSIONmaster Ready master 4d v1.11.3worker1 Ready <none> 4d v1.11.3worker2 Ready <none> 4d v1.11.3[root@master osc2018tk-demo]#
●3ノード構成などによる●全てReady状態
●3ノード構成などによる●全てReady状態
18Copyright(c) 2011 Linux-HA Japan Project 18
デモ 1: 初期状態(Keisuke MORI)Pod)
[root@master osc2018tk-demo]# kubectl get pods -o wideNAME READY STATUS RESTARTS AGE IP NODEhttpd-5f9cf547cc-dfsqn 1/1 Running 0 8m 10.244.2.16 worker2httpd-5f9cf547cc-pc7s2 1/1 Running 0 30s 10.244.1.22 worker1postgres-0 1/1 Running 0 46s 10.244.1.21 worker1[root@master osc2018tk-demo]# kubectl get deploymentsNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEhttpd 2 2 2 2 4d[root@master osc2018tk-demo]# kubectl get statefulsetsNAME DESIRED CURRENT AGEpostgres 1 1 4d[root@master osc2018tk-demo]#
●httpdは両ノードで起動ノードで起動●postgresはworker1で起動
●httpdは両ノードで起動ノードで起動●postgresはworker1で起動
●httpdはDeployment●postgresはStatefulSet
●httpdはDeployment●postgresはStatefulSet
19Copyright(c) 2011 Linux-HA Japan Project 19
デモ 1: ネットワーク切断が発生しての違いとは疑似故障
●worker1の違いとは全ての違いとはアです。ダプターの違いとは ケーブル接続をオフにするコンテナ
●worker1の違いとは全ての違いとはアです。ダプターの違いとは ケーブル接続をオフにするコンテナ
20Copyright(c) 2011 Linux-HA Japan Project 20
デモ 1: ネットワーク切断が発生して後の動向の違いとは状態
Every 1.0s: kubectl get node; echo ; kubectl get pods -o wide Wed Oct 24 08:35:42 2018
NAME STATUS ROLES AGE VERSIONmaster Ready master 4d v1.11.3worker1 NotReady <none> 4d v1.11.3worker2 Ready <none> 4d v1.11.3
NAME READY STATUS RESTARTS AGE IP NODEhttpd-5f9cf547cc-chk6c 1/1 Running 0 7s 10.244.2.18 worker2httpd-5f9cf547cc-dfsqn 1/1 Running 0 10m 10.244.2.16 worker2httpd-5f9cf547cc-pc7s2 1/1 Unknown 0 2m 10.244.1.22 worker1postgres-0 1/1 Unknown 0 2m 10.244.1.21 worker1
●worker1はNotReady状態となるコンテナ(Keisuke MORI)デフォルトでは40秒後の動向)
●worker1はNotReady状態となるコンテナ(Keisuke MORI)デフォルトでは40秒後の動向)
●worker1上のの違いとはpodは Unknown 状態となるコンテナ●httpdはworker2で2つ起動するコンテナ●postgres はworker2では起動しない
(Keisuke MORI)デフォルトでは5分後の動向)
●worker1上のの違いとはpodは Unknown 状態となるコンテナ●httpdはworker2で2つ起動するコンテナ●postgres はworker2では起動しない
(Keisuke MORI)デフォルトでは5分後の動向)
21Copyright(c) 2011 Linux-HA Japan Project 21
コンテナの違いとは二重起動によるコンテナデータ破損を防ぐためです。を防ぐためです。ぐためです。 コンテナ状態: Unknown → まだ動いてるコンテナかも? コンテナが止まった!そのときどうなる?「止めない!」こと確実に停止めない!」こと」したことを確認できない限り再起動は危険できない限りり再起動は危険
でもさあ…Q.でもネットワークが止まった!そのときどうなる?切れてたら開発コミュニティへのフィードバック・貢献データも書き込めないから安全だよね?き込めないから安全だよね?めないから開発コミュニティへのフィードバック・貢献安全だよね?なにそれおいしいの?
ネットワーク通信が復旧するとそこで二重書き込みが発生します。が止まった!そのときどうなる?復旧するとそこで二重書き込みが発生します。するコンテナとそこで二重書き込めないから安全だよね?き込めないから安全だよね?みが止まった!そのときどうなる?発コミュニティ生してします。 ネットワークスイッチ作成などによるの違いとは一時的にフェイルオーバな故障などではよくあるコンテナシナリオ
監視用とストレージ用で別の物理サーバでも同じデータ々の識別が必要の違いとはネットワークであるコンテナ構成などによるもあります。 SAN経由、ストレージ専用ネットワーク(Keisuke MORI)トラフィック、セキュリティ上のの違いとは理ネットワーク由など)
Q.物理ネットワークサーバの違いとは電源が落ちたらさすがに再起動するよね?が止まった!そのときどうなる?落ちたらさすがに再起動するよね?ちたら開発コミュニティへのフィードバック・貢献さすが止まった!そのときどうなる?に再起動するコンテナよね?なにそれおいしいの? しません。 物理ネットワークサーバの違いとは電源が落ちたらさすがに再起動するよね?断が発生してとネットワーク通信が復旧するとそこで二重書き込みが発生します。断が発生して(Keisuke MORI)通信が復旧するとそこで二重書き込みが発生します。経路の故障の違いとは故障)は区別の物理サーバでも同じデータが止まった!そのときどうなる?つかないから開発コミュニティへのフィードバック・貢献です。
どちら開発コミュニティへのフィードバック・貢献も「止めない!」こと監視タイムの最小化アです。ウト(Keisuke MORI)応答なしなし)」としか検知できない
なぜフェイルオーバしないのかフェイルオーバしないの違いとはか?
22Copyright(c) 2011 Linux-HA Japan Project 22
一般的にフェイルオーバなデータベースサーバは StatefulSet とするコンテナ必要が止まった!そのときどうなる?あるコンテナ。 データの違いとは永続化の違いとはため インスタンスごとの違いとは識別の物理サーバでも同じデータの違いとはため
StatefulSet は、物理ネットワークサーバの違いとは故障に対しては自動的にサーしては自動的にフェイルオーバにサービス継続を行うことはできない。うことはできない。 Podの違いとは二重起動によるコンテナデータ破損を防ぐためです。を防ぐためです。ぐため
Kubernetesの違いとはサービス継続性の違いとは留意点
23Copyright(c) 2011 Linux-HA Japan Project 23
コンテナが止まった!そのときどうなる?止めない!」ことまった!その違いとはときどうなるコンテナ?なにそれおいしいの?
もう時代はコンテナ・クラウドでしょー時代はコンテナ・クラウドでしょーはコンテナ・クラウドでしょーコンテナ・クラウドでしょーでしょー
Kubernetesがあるから大丈夫!大丈夫!
セルフヒーリング機能は確かに便利ね機能は確かに便利ねはコンテナ・クラウドでしょー確かに便利ねかに便利ねねでもPodの種類にも気をつけて種類にも気をつけてにも気をつけてをつけてデモ展示中!
StatefulSetはコンテナ・クラウドでしょー物理サーバが故障サーバが故障が故障
したら大丈夫!止まっちゃうんだよまっちゃう時代はコンテナ・クラウドでしょーんだよ
大事なデータが壊れないようになデータが壊れないようにデータが壊れないようにが壊れないようにれなデータが壊れないようにいよう時代はコンテナ・クラウドでしょーに
守っているんだねってデモ展示中!いるんだね!
24Copyright(c) 2011 Linux-HA Japan Project 24
物理ネットワークサーバではどうやってたの違いとは?
でも物理サーバが故障サーバが故障の種類にも気をつけてHAクラスタが壊れないようにはコンテナ・クラウドでしょーフェイルオーバが故障できてデモ展示中!たよね?なデータが壊れないようにんで?
それはコンテナ・クラウドでしょー Pacemaker の種類にも気をつけてSTONITH機能は確かに便利ねの種類にも気をつけておかげね
25Copyright(c) 2011 Linux-HA Japan Project 25
STONI)TH機能によるコンテナ(Keisuke MORI)フェンシングと) I)PMI)経由でサーバの違いとは電源が落ちたらさすがに再起動するよね?断が発生してを行うことはできない。う 確実にサーバを停止めない!」ことさせるコンテナことで
データの違いとは安全を確保
物理ネットワークサーバではどうやってたの違いとは?
サーバ#1 サーバ#2
サービスの監視・制御の監視・制御フェイルオーバ間の監視・制御
STONITH(強制電源断)I)PMI)制御機能によるコンテナ
※IPMIによるコンテナ電源が落ちたらさすがに再起動するよね?断が発生して以外に、共有ディスク接続を利用した方式などもあります。に、共有ストレージディスク接続を利用した方式などもあります。などもあります。
26Copyright(c) 2011 Linux-HA Japan Project 26
STONI)TH機能によるコンテナ(Keisuke MORI)フェンシングと)とは? フェンスを立てて隔離することてて隔離することするコンテナこと
27Copyright(c) 2011 Linux-HA Japan Project 27
狩りに出かけたハンターからの救急電話りに出かけたハンターからの救急電話かけたハンターから開発コミュニティへのフィードバック・貢献の違いとは救急電話 「止めない!」こと大変だだ! 友達が木から落ちて死んでしまったが止まった!そのときどうなる?木から落ちて死んでしまったから開発コミュニティへのフィードバック・貢献落ちたらさすがに再起動するよね?ちて死んでしまったんでしまった!」 「止めない!」こと落ちたらさすがに再起動するよね?ち着いて。まずは彼が本当に死んでいるかどうか確かめて」いて。まずは彼が本当に死んでいるかどうか確かめて」が止まった!そのときどうなる?本当に死んでいるかどうか確かめて」に死んでしまったんでいるコンテナかどうか確かめて」 「止めない!」ことバーン!(Keisuke MORI)銃声)」 「止めない!」ことOK、死んでしまったんでるコンテナ。次はは?」
余談: 世界で一番笑えるジョークで一番笑えるジョークえるコンテナジョーク
※出かけたハンターからの救急電話典 “World's funniest joke” ハートフォードシャー大学 リチ作成などによるャード・サポートワイズマン博士(Keisuke MORI)2002年)
Make sure he is dead.
死んでしまったんでるコンテナかどうかを確かめるコンテナ (気絶しているだけかもしれない獲物をしているコンテナだけかもしれない獲物を)確実に死んでしまったんだ状態にするコンテナ
これってSTONITHじゃね?
28Copyright(c) 2011 Linux-HA Japan Project 28
故障モデル
※出かけたハンターからの救急電話典: 「止めない!」こと分散システムについて語らせてくれ」熊崎 宏樹システムの最小化について語らせてくれ」熊崎 宏樹ら開発コミュニティへのフィードバック・貢献せてくれ」熊崎 宏樹 Copyright©2016 NTT Corp. All Rights Reserved. https://www.slideshare.net/kumagi/ss-78765920/15
29Copyright(c) 2011 Linux-HA Japan Project 29
故障モデル
Fail-Stop
Crash-Recovery
故障なし
Byzantine
実際の動作の違いとは故障例
物理ネットワークサーバの違いとは電源が落ちたらさすがに再起動するよね?断が発生してカーネルクラッシュ
ネットワーク通信が復旧するとそこで二重書き込みが発生します。断が発生して異常に同じ状態な高負荷
クラッキングとなど(通常に同じ状態は対しては自動的にサー応は想定しないしない)
他のワーカーノードで再起動するノードで起動した場合のの違いとはデータの違いとは安全性
監視タイムの最小化アです。ウト発コミュニティ生して時の違いとは判断が発生して
○安全
×危険
区別の物理サーバでも同じデータが止まった!そのときどうなる?つかない!
安全の違いとはためには他のワーカーノードで再起動するの違いとはノードで起動してはいけない!
安全の違いとはためには他のワーカーノードで再起動するの違いとはノードで起動してはいけない!
どっちもだよ!
どっち?
どっち?
30Copyright(c) 2011 Linux-HA Japan Project 30
故障モデル
Fail-Stop
Crash-Recovery
故障なし
Byzantine
実際の動作の違いとは故障例
物理ネットワークサーバの違いとは電源が落ちたらさすがに再起動するよね?断が発生してカーネルクラッシュ
ネットワーク通信が復旧するとそこで二重書き込みが発生します。断が発生して異常に同じ状態な高負荷
クラッキングとなど(通常に同じ状態は対しては自動的にサー応は想定しないしない)
他のワーカーノードで再起動するノードで起動した場合のの違いとはデータの違いとは安全性
STONI)TH実行うことはできない。後の動向の違いとは判断が発生して
○安全
×危険
○安全
STONI)THの違いとは実行うことはできない。により確実に安全と言えるえるコンテナ状態に確定しないさせるコンテナ
31Copyright(c) 2011 Linux-HA Japan Project 31
物理ネットワークサーバではどうやってたの違いとは?
でも物理サーバが故障サーバが故障の種類にも気をつけてHAクラスタが壊れないようにはコンテナ・クラウドでしょーフェイルオーバが故障できてデモ展示中!たよね?なデータが壊れないようにんで?
それはコンテナ・クラウドでしょー Pacemaker の種類にも気をつけてSTONITH機能は確かに便利ねの種類にも気をつけておかげね
じゃあそれを使ってコンテナをってデモ展示中!コンテナを止まっちゃうんだよめなデータが壊れないようにいよう時代はコンテナ・クラウドでしょーにしちゃおう時代はコンテナ・クラウドでしょー!
そこで Pacemaker bundle 機能は確かに便利ねの種類にも気をつけて出番よ!よ!
32Copyright(c) 2011 Linux-HA Japan Project 32
Pacemakerとは
オーケストレーションツールによるコンテナコンテナHA
Pacemaker bundle 機能によるコンテナによるコンテナコンテナHA
今後の動向の違いとは動向
もくじ
34Copyright(c) 2011 Linux-HA Japan Project 34
Pacemaker でコンテナHAを実現する新機能するコンテナ新機能によるコンテナ コンテナ管理ネットワークに必要な機能によるコンテナをまとめたPacemakerの違いとはリソース コンテナおよびコンテナ内で起動するアプリケーションの起動・終了・監コンテナ内におけるで起動するコンテナアです。プリケーションの違いとは起動・サポート終了・サポート監
視が止まった!そのときどうなる?可能によるコンテナ STONI)TH機能によるコンテナや既存する必要はなの違いとはリソースエージェント(Keisuke MORI)RA)と合のわせて利用可能によるコンテナ
Pacemaker-1.1.17 以降で利用可能で利用可能によるコンテナ対しては自動的にサー応コンテナランタイムの最小化
Pacemaker bundle とは?
コンテナランタイムの最小化 対しては自動的にサー応PacemakerバージョンDocker 1.1.17以降で利用可能rkt 1.1.18以降で利用可能podman (Keisuke MORI)CRI)-O) 開発コミュニティ中(Keisuke MORI)2.0.*以降で利用可能予定しない)
35Copyright(c) 2011 Linux-HA Japan Project 35
Pacemaker bundle の違いとはアです。ーキテクチ作成などによるャ
bundle
リソースエージェント
Pacemaker-remote
仮想IP
リソースエージェント
Pacemaker-remote
仮想IP
リソースエージェント
Pacemaker-remote
仮想IP
コンテナの起動・制御の監視・制御起動・制御サービスの監視・制御の監視・制御起動・監視
bundle
レプリカ数の維持数の維持の監視・制御制御
36Copyright(c) 2011 Linux-HA Japan Project 36
bundle 設定しない例(Keisuke MORI)cib.xml)
<bundle id="httpd-bundle"> <docker image="pcmktest:http" replicas=“2" replicas-per-host= “2" options="--log-driver=journald"/> <network ip-range-start="192.168.33.200" host-interface="eth1" host-netmask="24"> <port-mapping id="httpd-port" port="80"/> </network> <storage> <storage-mapping id="httpd-root" source-dir-root="/var/local/containers" target-dir="/var/www/html" options="rw"/> <storage-mapping id="httpd-logs" source-dir-root="/var/log/pacemaker/bundles" target-dir="/etc/httpd/logs" options="rw"/> </storage> <primitive class="ocf" id="httpd" provider="heartbeat" type="apache"> <operations> <op name="start" interval="0s" timeout="60s" on-fail="restart" id="httpd-start-0s"/> <op name="monitor" interval="10s" timeout="60s" on-fail="restart" id="httpd-monitor-10s"/> <op name="stop" interval="0s" timeout="60s" on-fail="block" id="httpd-stop-0s"/> </operations> </primitive></bundle>
※ bundleに関するコンテナ詳しく知りたかったら…細については については OSC 2018 Kyoto セミナー資料を参照を参照 http://linux-ha.osdn.jp/wp/archives/4744
37Copyright(c) 2011 Linux-HA Japan Project 37
Pacemaker bundle とSTONI)THによるコンテナコンテナHA
共有ストレージストレージ
物理ネットワークネットワーク
bundle
external/ipmi
bundle
コンテナbundleリソース
コンテナbundleリソース
コンテナSTONI)THリソース
コンテナbundleリソース
external/ipmi
I)PMI)制御機能によるコンテナ I)PMI)制御機能によるコンテナ
コンテナSTONI)THリソース
38Copyright(c) 2011 Linux-HA Japan Project 38
Pacemaker bundle とSTONI)THによるコンテナコンテナHA
共有ストレージストレージ
物理ネットワークネットワーク
bundle bundle
コンテナbundleリソース
コンテナbundleリソース
コンテナbundleリソース
I)PMI)制御機能によるコンテナ I)PMI)制御機能によるコンテナ
external/ipmi
コンテナSTONI)THリソース
external/ipmi
コンテナSTONI)THリソース
IPMIによる電源断電源断
39Copyright(c) 2011 Linux-HA Japan Project 39
Pacemaker bundle とSTONI)THによるコンテナコンテナHA
共有ストレージストレージ
物理ネットワークネットワーク
bundle bundle
コンテナbundleリソース
コンテナbundleリソース
コンテナbundleリソース
I)PMI)制御機能によるコンテナ I)PMI)制御機能によるコンテナ
external/ipmi
コンテナSTONI)THリソース
external/ipmi
コンテナSTONI)THリソース
IPMIによる電源断電源断
安全にフェイルオーバにフェイルオーバ間の監視・制御
40Copyright(c) 2011 Linux-HA Japan Project 40
Pacemaker bundle コンテナHA構成などによる例 crm_mon 出かけたハンターからの救急電話力例
コンテナbundleリソース
コンテナSTONI)THリソース
Online: [ worker1 worker2 ]GuestOnline: [ httpd-bundle-0@worker1 httpd-bundle-1@worker2 postgres-bundle-0@worker1 ]
Full list of resources:
Docker container: postgres-bundle [192.168.33.10:5000/pcmkdemo/postgres:0.1] postgres-bundle-0 (192.168.33.200) (ocf::heartbeat:pgsql): Started worker1 Docker container set: httpd-bundle [192.168.33.10:5000/pcmkdemo/httpd:0.1] (unique) httpd-bundle-0 (192.168.33.210) (ocf::heartbeat:apache): Started worker1 httpd-bundle-1 (192.168.33.211) (ocf::heartbeat:apache): Started worker2stonith-worker2 (stonith:external/ipmi): Started worker1stonith-worker1 (stonith:external/ipmi): Started worker2
41Copyright(c) 2011 Linux-HA Japan Project 41
デモ
Pacemaker bundle vs. Kubernetes
42Copyright(c) 2011 Linux-HA Japan Project 42
Pacemaker bundle デモ環境構成などによる
物理ネットワークネットワーク
Kubernetesクラスタ
Pacemakerクラスタ
master worker1 worker2
共有ストレージストレージ(Keisuke MORI)NFS、masterに同じ状態居)
c c
ネットワーク接続断が発生してが止まった!そのときどうなる?発コミュニティ生してした!ネットワーク接続断が発生してが止まった!そのときどうなる?発コミュニティ生してした!
43Copyright(c) 2011 Linux-HA Japan Project 43
Pacemaker bundle デモ実行うことはできない。結果(Keisuke MORI)予定しない)
物理ネットワークネットワーク
Kubernetesクラスタ
Pacemakerクラスタ
共有ストレージストレージ(Keisuke MORI)NFS、masterに同じ状態居)
master worker1 worker2
STONI)TH機能によるコンテナによりworker1は電源が落ちたらさすがに再起動するよね?断が発生して状態となるコンテナPacemakerクラスタは全コンテナが止まった!そのときどうなる?フェイルオーバKubernetesクラスタはデータベースが止まった!そのときどうなる?停止めない!」こと
STONI)TH機能によるコンテナによりworker1は電源が落ちたらさすがに再起動するよね?断が発生して状態となるコンテナPacemakerクラスタは全コンテナが止まった!そのときどうなる?フェイルオーバKubernetesクラスタはデータベースが止まった!そのときどうなる?停止めない!」こと
c c
44Copyright(c) 2011 Linux-HA Japan Project 44
デモ 2: 初期状態(Keisuke MORI)Pacemaker)
Online: [ worker1 worker2 ]GuestOnline: [ httpd-bundle-0@worker1 httpd-bundle-1@worker2 postgres-bundle-0@worker1 ]
Full list of resources:
Docker container: postgres-bundle [192.168.33.10:5000/pcmkdemo/postgres:0.1] postgres-bundle-0 (192.168.33.200) (ocf::heartbeat:pgsql): Started worker1 Docker container set: httpd-bundle [192.168.33.10:5000/pcmkdemo/httpd:0.1] (unique) httpd-bundle-0 (192.168.33.210) (ocf::heartbeat:apache): Started worker1 httpd-bundle-1 (192.168.33.211) (ocf::heartbeat:apache): Started worker2stonith-worker2 (stonith:external/ipmi): Started worker1stonith-worker1 (stonith:external/ipmi): Started worker2
●httpdは両ノードで起動ノードで起動●postgresはworker1で起動
●httpdは両ノードで起動ノードで起動●postgresはworker1で起動
45Copyright(c) 2011 Linux-HA Japan Project 45
デモ 2: 初期状態(Keisuke MORI)Kubernetes)
Every 1.0s: kubectl get node; echo ; kubectl get pods -o wide Wed Oct 24 08:39:02 2018
NAME STATUS ROLES AGE VERSIONmaster Ready master 4d v1.11.3worker1 Ready <none> 4d v1.11.3worker2 Ready <none> 4d v1.11.3
NAME READY STATUS RESTARTS AGE IP NODEhttpd-5f9cf547cc-dfsqn 1/1 Running 0 13m 10.244.2.16 worker2httpd-5f9cf547cc-tn9wd 1/1 Running 0 2m 10.244.1.24 worker1postgres-0 1/1 Running 0 2m 10.244.1.23 worker1
●httpdは両ノードで起動ノードで起動●postgresはworker1で起動
●httpdは両ノードで起動ノードで起動●postgresはworker1で起動
46Copyright(c) 2011 Linux-HA Japan Project 46
デモ 2: ネットワーク切断が発生しての違いとは疑似故障
●worker1の違いとは全ての違いとはアです。ダプターの違いとは ケーブル接続をオフにするコンテナ
●worker1の違いとは全ての違いとはアです。ダプターの違いとは ケーブル接続をオフにするコンテナ
47Copyright(c) 2011 Linux-HA Japan Project 47
デモ 2: ネットワーク切断が発生して後の動向の違いとは状態(Keisuke MORI)故障サーバ)
●worker1はSTONI)TH機能によるコンテナにより 電源が落ちたらさすがに再起動するよね?オフとなるコンテナ
●worker1はSTONI)TH機能によるコンテナにより 電源が落ちたらさすがに再起動するよね?オフとなるコンテナ
48Copyright(c) 2011 Linux-HA Japan Project 48
デモ 2: マシン電源が落ちたらさすがに再起動するよね?オフ後の動向の違いとは状態(Keisuke MORI)Pacemaker)
Online: [ worker2 ]OFFLINE: [ worker1 ]GuestOnline: [ httpd-bundle-0@worker2 httpd-bundle-1@worker2 postgres-bundle-0@worker2 ]
Full list of resources:
Docker container: postgres-bundle [192.168.33.10:5000/pcmkdemo/postgres:0.1] postgres-bundle-0 (192.168.33.200) (ocf::heartbeat:pgsql): Started worker2 Docker container set: httpd-bundle [192.168.33.10:5000/pcmkdemo/httpd:0.1] (unique) httpd-bundle-0 (192.168.33.210) (ocf::heartbeat:apache): Started worker2 httpd-bundle-1 (192.168.33.211) (ocf::heartbeat:apache): Started worker2stonith-worker2 (stonith:external/ipmi): Stoppedstonith-worker1 (stonith:external/ipmi): Started worker2
●httpdはworker2で2つ起動するコンテナ●postgresもworker2で再起動するコンテナ
●httpdはworker2で2つ起動するコンテナ●postgresもworker2で再起動するコンテナ
49Copyright(c) 2011 Linux-HA Japan Project 49
デモ 2: マシン電源が落ちたらさすがに再起動するよね?オフ後の動向の違いとは状態(Keisuke MORI)Kubernetes)
Every 1.0s: kubectl get node; echo ; kubectl get pods -o wide Wed Oct 24 08:41:52 2018
NAME STATUS ROLES AGE VERSIONmaster Ready master 4d v1.11.3worker1 NotReady <none> 4d v1.11.3worker2 Ready <none> 4d v1.11.3
NAME READY STATUS RESTARTS AGE IP NODEhttpd-5f9cf547cc-9qgh2 1/1 Running 0 1m 10.244.2.19 worker2httpd-5f9cf547cc-dfsqn 1/1 Running 0 16m 10.244.2.16 worker2httpd-5f9cf547cc-tn9wd 1/1 Unknown 0 5m 10.244.1.24 worker1postgres-0 1/1 Unknown 0 5m 10.244.1.23 worker1
●worker1上のの違いとはpodは Unknown 状態となるコンテナ●httpdはworker2で2つ起動するコンテナ●postgres はworker2では起動しない (Keisuke MORI)ネットワーク切断が発生して時と同じ状態じ結果)
●worker1上のの違いとはpodは Unknown 状態となるコンテナ●httpdはworker2で2つ起動するコンテナ●postgres はworker2では起動しない (Keisuke MORI)ネットワーク切断が発生して時と同じ状態じ結果)
50Copyright(c) 2011 Linux-HA Japan Project 50
Pacemakerとは
オーケストレーションツールによるコンテナコンテナHA
Pacemaker bundle 機能によるコンテナによるコンテナコンテナHA
今後の動向の違いとは動向
もくじ
51Copyright(c) 2011 Linux-HA Japan Project 51
Pacemaker bundle の違いとは現する新機能状と今後の動向 Pacemaker によるコンテナコンテナHAが止まった!そのときどうなる?可能によるコンテナになった!
とは言えるえ…
bundle機能によるコンテナもまだまだ発コミュニティ展途上のユーザインタフェースの違いとは対しては自動的にサー応
crmshは開発コミュニティ最新版のみ対応。の違いとはみ対しては自動的にサー応。pcs の違いとは方が止まった!そのときどうなる?対しては自動的にサー応が止まった!そのときどうなる?早い。い。 ドキュメント・サポート動作仕様の詳細の違いとは詳しく知りたかったら…細については
コンテナイメージの違いとは要件・サポート作り方、詳しく知りたかったら…細については 設定しないや故障解析方法などの情報などの違いとは情報 コンテナ技術自体の発展の違いとは発コミュニティ展
podman(Keisuke MORI)CRI)-O)対しては自動的にサー応、Dockerの違いとは今後の動向は? 実績・サポートサポート
Red Hat 社 HA add-on では Technology Preview Red Hat OpenStack Platform 12以降で利用可能の違いとはユースケースの違いとはみフルサポート
https://access.redhat.com/articles/3388681
オーケストレーションツールに取って代わるものではないって代わるものではないわるコンテナもの違いとはではない
52Copyright(c) 2011 Linux-HA Japan Project 52
Pacemaker bundle の違いとは利用シーン オーケストレーションツールが止まった!そのときどうなる?適している利用シーンしているコンテナ利用シーン
DevOps, CI)/CD、頻繁なリリース、大規模なスケーリングなリリース、大規模なスケーリングなスケーリングと 物理ネットワーク故障はマネージドサービスの違いとはSLA
Pacemaker bundle が止まった!そのときどうなる?適している利用シーンしているコンテナ利用シーン 物理ネットワーク環境と同じ状態様の詳細の違いとはHA運用が止まった!そのときどうなる?必要、かつコンテナの違いとはメリットが止まった!そのときどうなる?欲しい場合しい場合の
アです。プリケーションの違いとはバージョンアです。ップが止まった!そのときどうなる?容易 バージョン依存する必要はなが止まった!そのときどうなる?異なるコンテナ複数のアプリケーションの同居の違いとはアです。プリケーションの違いとは同じ状態居 コンテナと非コンテナアプリケーションの同居コンテナアです。プリケーションの違いとは同じ状態居(Keisuke MORI)性能によるコンテナ上のの違いとは理ネットワーク由など)
比較的にフェイルオーバ小規模なスケーリングなコンテナHAクラスタ信が復旧するとそこで二重書き込みが発生します。頼性を求められるオンプレミスシステムめら開発コミュニティへのフィードバック・貢献れるコンテナオンプレミスシステムの最小化
物理ネットワーク故障に対しては自動的にサーするコンテナ運用責任・サポート説明責任を求められるオンプレミスシステムめら開発コミュニティへのフィードバック・貢献れるコンテナようなシステムの最小化
Pacemaker bundle の違いとは利用実績例 Red Hat OpenStack Platform 12以降で利用可能
コントローラノードの違いとは各種ミドルウェアのコンテナ化ミドルウェアです。の違いとはコンテナ化 HAProxy, RabbitMQ, Galera, redis
53Copyright(c) 2011 Linux-HA Japan Project 53
Linux-HA Japan の違いとは今後の動向の違いとは活動 Pacemaker-1.1.19-1.1 リポジトリパッケージ近日リリース予定しない! PostgreSQL 11以降で利用可能対しては自動的にサー応など 本日の違いとは bundle の違いとはデモでも使用しました! なお、バージョン1.1.18-1.1の違いとはリリースはありません。
(Keisuke MORI)一部の利用方法で懸念事項が存在したため。の違いとは利用方法などの情報で懸念事項が存在したため。が止まった!そのときどうなる?存する必要はな在したため。したため。1.1.19-1.1では解消済みですみです) 1.1.*系は今後も継続してメンテナンスしていきます。は今後の動向も継続してメンテナンスしていきます。
Pacemaker-2.0以降で利用可能は… RHEL 8 / CentOS 8 同じ状態梱版のみ対応。と親和性の違いとは高い方式などもあります。を検討中。
54Copyright(c) 2011 Linux-HA Japan Project 54
参考資料を参照 (Keisuke MORI)1/2) 本日の違いとはデモ環境
https://github.com/kskmori/osc2018tk-demo (Keisuke MORI)README等準備中です)
Pacemaker bundle 関連の活動 Bundle Walk-Through (Keisuke MORI)公式などもあります。ドキュメント)
https://wiki.clusterlabs.org/wiki/Bundle_Walk-Through Red Hat OSP12 での違いとは利用事例
https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/12/html/understanding_red_hat_openstack_platform_high_availability/pacemaker#pacemaker-services
STONI)TH関連の活動分散システムについて語らせてくれ」熊崎 宏樹システムの最小化について語らせてくれ」熊崎 宏樹ら開発コミュニティへのフィードバック・貢献せてくれ
https://www.slideshare.net/kumagi/ss-78765920世界で一番笑えるジョークで一番笑えるジョークえるコンテナジョーク (Keisuke MORI)wikipedia)
https://ja.wikipedia.org/wiki/世界で一番笑えるジョークで一番笑えるジョークえるコンテナジョーク
55Copyright(c) 2011 Linux-HA Japan Project 55
参考資料を参照 (Keisuke MORI)2/2) Kubernetes 関連の活動
StatefulSets (Keisuke MORI)公式などもあります。ドキュメント) https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
StatefulSets の違いとは強制削除手順 二重起動時の違いとはデータ喪失のリスクについても記載ありの違いとはリスクについても記載ありあり https://kubernetes.io/docs/tasks/run-application/force-delete-stateful-set-pod/
ノード停止めない!」こと時に StatefulSet が止まった!そのときどうなる?移動しないという issue 設計通りの違いとは動作であるコンテナとの違いとはコメントあり https://github.com/kubernetes/kubernetes/issues/54368#issuecomment-
339378164 Kubernetes に対しては自動的にサーするコンテナ Fencing 機能によるコンテナの違いとは提案
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/storage/pod-safety.md
Kubernetes の違いとはノード断が発生して検知の違いとはロジック、パラメタチ作成などによるューニングと https://fatalfailure.wordpress.com/2016/06/10/improving-kubernetes-reliability-quicker-detection-of-a-node-down/
56Copyright(c) 2011 Linux-HA Japan Project 56
おわり Pacemakerをこれから開発コミュニティへのフィードバック・貢献もよろしくお願いしますいします!