13. RED HAT | Daein Park
#rhconvergence
13
DEMO 環境
●
OpenShift 構成
●
OpenShift Container Platform v3.9
●
Master ホスト x 1
●
CPU: Core x 4
●
Memory: 8Gi
●
Node ホスト x 3
●
CPU: Core x 2
●
Memory: 4Gi
●
ストレージ構成
●
内部 Service の Pod 用 : NFS
●
Apps の Pod 用 : CNS (GlusterFS)
★iSCSI で Block タイプの Volume を Provision
14. RED HAT | Daein Park
#rhconvergence
14
DEMO システム構成
●
Application 構成
●
JBoss EAP (Application Server)
●
JBoss EAP v7.1 for OpenShift
●
Httpd v2.4 (Web Server)
●
PostgreSQL v9.2 (DB Server)
●
Management System 構成
●
CI/CD : Jenkins
●
Monitoring : Prometheus
●
Logging : EFK
15. RED HAT | Daein Park
#rhconvergence
15
DEMO 内容
●
アプリケーション環境を Dev(Build)→Stg(Deploy)→Prod(Deploy) 順に作成
●
S2I による Build, Rolling Update による Deploy
16. RED HAT | Daein Park
#rhconvergence
16
JBoss EAP for OpenShift イメージ関連設定 #1
●
Jboss EAP for OpenShift イメージを取得する方法
●
Red Hat Registry から直接 PULL する方法
●
それ以外には third-party registry, Satellite 等
●
作業手順
●
Red Hat Container Catalog サイトにアクセス
●
関連イメージを検索して PULL するイメージを選択
●
Get Latest Image タグを選択して関連プラットフォームを選択
●
提示された方法に従ってイメージを取得
17. RED HAT | Daein Park
#rhconvergence
17
JBoss EAP for OpenShift イメージ関連設定 #2
●
Red Hat Container Catalog
●
RHCC
[ https://access.redhat.com/containers ]
●
日本語の説明ページ
[http://jp-redhat.com/openeye_online/column/oss-note/5894/]
●
セキュリティチームの審査
●
FAQ
18. RED HAT | Daein Park
#rhconvergence
18
JBoss EAP for OpenShift イメージ関連設定 #3
19. RED HAT | Daein Park
#rhconvergence
19
JBoss EAP for OpenShift イメージ関連設定 #4
●
RHCC からコピーしたコマンドの実行
●
openshift プロジェクトにインポートすることで共有可能
●
既存 ImageStream 名を指定し、タグでバージョンを指定(バージョンアップも同じ手順)
-- Import the image to openshift namespace
master1~# oc import-image jboss-eap71-openshift:1.1 -n openshift
--from=registry.access.redhat.com/jboss-eap-7/eap71-openshift:1.1
--confirm
-- Check the image imported
master1~# oc get is jboss-eap71-openshift -n openshift
-- Tag the latest version
master1~# oc tag jboss-eap71-openshift:1.1 jboss-eap71-openshift:latest -n openshift
20. RED HAT | Daein Park
#rhconvergence
20
DEMO: Jenkins 環境構築
46. RED HAT | Daein Park
#rhconvergence
46
DEMO:Prod 環境構築 #1-9
●
Web Console, Service Catalog (Template Service Broker)
47. RED HAT | Daein Park
#rhconvergence
47
DEMO 内容 (再掲)
●
Application 構成を Dev→Stg→Prod →順に作成 完了
●
Build(S2I), Rolling Update による Deploy
48. RED HAT | Daein Park
#rhconvergence
48
アプリケーションの構築 TIPs
49. RED HAT | Daein Park
#rhconvergence
49
OpenShift でよく発生する問題
実はコンテナ環境だから OpenShift だから発生する問題ではないです。
●
アプリケーションの Pod を Scale したら追加される Pod が起動失敗する
●
急停止された DB の Pod が次回起動時に自動リカバリーできなくて起動失敗する
●
Pod の暴走によって node ホスト全体の Pod 移動が発生する
●
アプリケーションが DB 等依存サービスがあったら起動順序の制御はどうするのか?
50. RED HAT | Daein Park
#rhconvergence
50
アプリケーションの Pod を Scale したら追加される Pod が起動失敗する
●
アプリケーションで冗長構成が対応できるか確認
●
1 つの Pod では問題なかったのに Scale すると Pod が起動できなくなる
●
ログをみるとリソースへのロックや冗長構成に対応していないケース
51. RED HAT | Daein Park
#rhconvergence
51
急停止された DB の Pod が次回起動時に自動リカバリーできなくて起動失敗する
●
NFS で PV を作成して利用することが原因
●
殆どの RDBMS が該当
REDO ログ系は必ず DISK に保存される担保がないと異常停止されたらデータの Recovery ができない
そのため fsync/fdatasync で DISK に即時に書き込むよう制御する必要がある
●
Block 系の Storage を専用で利用する必要があります。
●
ReadWriteOnce の PV を作成して利用
52. RED HAT | Daein Park
#rhconvergence
52
Pod の暴走によって node ホスト全体の Pod 移動が発生する
●
メモリの場合、閾値を超えたら OOM-Killer 起動される。
●
Requests == Limits
●
CPU は Requests の設定を実施しましょう。
●
性能テスト等で事前に閾値を決めておきましょう。
resources:
requests:
memory: "512Mi"
cpu: "1000m"
limits:
memory: "512Mi"
cpu: "2000m"
53. RED HAT | Daein Park
#rhconvergence
53
アプリケーションが DB 等依存サービスがあったら起動順序の制御はどうするのか?
●
アプリケーションを構成するコンポーネント間の起動順序 == 依存関係
●
Liveness, ReadinessProbe を適切に設定して対応可能
●
LivenessProbe: Pod に再起動する必要か監視
●
DB サービスが稼働していない場合には AP サーバを再起動させる
●
ReadinessProbe: Pod のサービスが外部からアクセスできる状態か監視
●
WEB サーバは AP サーバで該当ページが表示できない限り外部トラフィックを受けない
●
両方を組み合わせれば自動リカバリーが実現できる
<1> AP サーバがアクセスできない
<2> 外部からのアクセス遮断
<3> 復旧しないと再起動
<4> アクセス可能になったら再度外部公開等 ⇒ <1>