Mais conteúdo relacionado Semelhante a ConsulとNomadで簡単クッキング (20) ConsulとNomadで簡単クッキング4. A Cloud Operating Model
App
?
● インフラプロビジョニング
● クラウドセキュリティ
● サービスデスィカバリ
● セキュアコミュニケーション
● アプリケーションのデプロイ
Challenge
11. The HashiCorp Stack
A control plane for every layer of the cloud operating model
Run
Development
Connect
Networking
Secure
Security
Provision
Operations
PRIVATE
CLOUD
AWS AZURE GCP
15. Copyright © 2018 HashiCorp
Consul Service Discovery
Service
Discovery
● サービスの登録・カタログ化
● ヘルスチェック
● DNSとHTTPインターフェース
● ロードバランサーとの連携
Private
Cloud
AWS Azure GCP ...+ + +
Web PaymentDB Service 1
Service 2
Analytics
Payment
Payment
Payment
Service 2
Service 1Web
Catalog
16. Copyright © 2018 HashiCorp
Consul Service Discovery
Service
Discovery
Private
Cloud
AWS Azure GCP ...+ + +
Web PaymentDB Service 1
Service 2
Analytics
Payment
Payment
Payment
Service 2
Service 1Web
Catalog
app1.service.consuldb.service.consul web.service.consul analytics.service.consul payment.service.consul
Consul DNS
● サービスの登録・カタログ化
● DNSとHTTPインターフェース
● ヘルスチェック
● ロードバランサーとの連携
17. Copyright © 2018 HashiCorp
Consul Service Segmentation
Private
Cloud
AWS Azure GCP ...+ + +
Web PaymentDB Service 1
Service 2
Analytics
Payment
Payment
Payment
Service 2
Service 1Web
Service
Segmentation
▪ サービス間のAuthorization
▪ サイドカープロキシ
▪ mTLSコネクション
Intention
18. Copyright © 2018 HashiCorp
Consul Service Segmentation
Private
Cloud
AWS Azure GCP ...+ + +
Web PaymentDB Service 1
Service 2
Analytics
Payment
Payment
Payment
Service 2
Service 1Web
Service
Segmentation
▪ サービス間のAuthorization
▪ サイドカープロキシ
▪ mTLSコネクション
$ consul intention create -deny ‘*’ payment
Created: ‘*’ => payment (deny)
$ consul intention create -allow web app1
Created: web => app1 (allow)
$ consul intention create -allow web db
Created: web => db (allow)
Intention
Intention
19. Copyright © 2018 HashiCorp
Consul Service Configuration
Private
Cloud
AWS Azure GCP ...+ + +
Web PaymentDB Service 1
Service 2
Analytics
Payment
Payment
Payment
Service 2
Service 1Web
K/V
● K/Vストアで設定を保管
● リアルタイムでの設定変更
○ 設定ファイル / 環境変数
● サービスのリロードやリスタートを実行
● イベント・ドリブンな構成変更
Service
Configuration
20. Copyright © 2018 HashiCorp
Consul Service Configuration
Private
Cloud
AWS Azure GCP ...+ + +
Web PaymentDB Service 1
Service 2
Analytics
Payment
Payment
Payment
Service 2
Service 1Web
K/V
● K/Vストアで設定を保管
● リアルタイムでの設定変更
○ 設定ファイル / 環境変数
● サービスのリロードやリスタートを実行
● イベント・ドリブンな構成変更
Service
Configuration
Config Env Secret
21. Consul 1 slide
Service-basedのネットワーキングを中央管理する
50k+
Used at scale with
50k+ agents
1M+
Monthly D/Ls
Service registry & health monitoring
ヘルスチェックを含めたリアルタイムなサービスカタログの提供
Network middleware automation
ダイナミックに変化するサービスをミドルウェアへ反映
Zero trust network with service mesh
サイドカープロキシによるIdentityベースのセキュアな通信
Trusted by:
23. Copyright © 2018 HashiCorp
Nomad: Workload orchestration
Private
Cloud
AWS Azure GCP ...+ + +
Lamda GPUDB Java K8s
Python C# Spark
専用プラットフォーム → 様々なプラットフォーム
24. Copyright © 2018 HashiCorp
What is Nomad?
24
● Workload orchestrator
○ 様々なワークロードのデプロイとマネージメント
● Go言語で開発されたSingle binary
○ 容易にNomadクラスタを構築
● Infrastructure-as-code
○ Developerによる宣言的なデプロイの記述
● Hashicorp Ecosystem
○ Service discoveryのためにConsulと連携
○ シークレット管理のために Vaultと連携
25. Copyright © 2018 HashiCorp
Nomadができること
25
● Container Orchestration + Scheduler
○ First-class Docker workflow + Consul/Vault
● Legacy Application Deployment
○ Legacy/JARs/OS command/etc
● Batch processing workloads
○ ハイパフォーマンス+スケーラブルな Batch処理の実行
○ GPU container, Apache Spark
● multi-region/multi-cloud federated deployments
○ どこへでもデプロイ( Bare metal/VMware/OpenStack/AWS/Azure/etc)
26. Copyright © 2017 HashiCorp 26
ユーザー
Nomad
Servers
JobをSubmit
Nomad
Clients
AppのDeploy・Update
Bin
Packing
様々なアプリケーション - Run
27. Copyright © 2017 HashiCorp
Task
Task Driver
27
Job
Job Group Task
Docker
Rkt
Exec
Java
Device plugin
Group
Task
Task
TaskTask
Group
Task
TaskTask
● 各Jobファイルに一つのJob定義
● Jobは複数のGroupを定義可能
● Groupには複数のTaskを定義可能
○ Group化されたTaskは一つのマシンに集約される
● 各TaskはTask Driverによる処理を行う
○ Task同士のDependencyも指定可能
Community
28. Copyright © 2017 HashiCorp
job "my_job" {
datacenters = ["us-west-1", “us-east-1"]
type = "service"
group "web" {
count = 5
task "frontend" {
driver = "docker"
config { image = "hashicorp/web-frontend" }
resources {
cpu = 500 # MHz
memory = 128 # MB
network {
mbits = 100
}
}
Declarative Job
Specification
29. Copyright © 2017 HashiCorp
Nomadには3つのSchedulerがある
▪ Service
– Long running
– OperatorがStopするまでRunning状態を維持する
– TaskがFailした場合、RestartやRescheduleが可能
▪ Batch
– Short lived
– Taskが終了するまで実行(Success)
– TaskがFailした場合、RestartやRescheduleが可能
– ParameterizedやPeriodicなど
▪ System
– 全てのClient上で実行するTask(Taskの要求を満たしているClientのみ)
– OperatorがStopするか、PreemptedされるまでRunning状態を維持
– TaskがFailした場合、Restartが可能
– 新たなClientがJoinした際にも起動
– ログ収集や監視系のTaskに便利(fluentdやdatadogdなど)
29
Job Scheduler
30. Copyright © 2017 HashiCorp
Scheduler
● Schedulingとは、適切なAllocationを決定するプロセスで、Evaluationの一環として行われる。
● Allocationは、ジョブ内の一連のタスクを特定のノードで実行するための宣言
● Evaluationは、外部の状態が変化するたびに作成される。
● Schedulerは、Evaluationを処理してAllocationのPlanを生成
● Planとは、Create、Update、EvictなどのAllocationのセット
https://www.nomadproject.io/docs/internals/scheduling/scheduling
31. Copyright © 2017 HashiCorp
Single Binary - Client/Server Deployment
Topology
31
▪ シングルバイナリ
– ClientもしくはServerモードで起動
– Zero Dependency
▪ サーバーがタスクスケジューリングのControl Planeを担う
▪ サーバーはRAFTにより、Leader electionやReplicationを行う
– Raft algorithmはConcensus Protocolを利用
▪ クラスタ管理はLocal/WAN Gossipプロトコルを利用
32. Copyright © 2017 HashiCorp
Client
DC1
Client
DC1
Multi-region Deployment Topology
32
▪ 複数のRegion間をWAN Gossipにより管理
▪ 各Region内で複数のデータセンターを管理
Client
DC1
Client
DC1
Client
DC1
Client
DC2
Client
DC1
Client
DC1
Client
DC3
Client
DC1
Client
DC1
Client
DC4
33. Nomad 1 slide
Cloud operating modelにおいてアプリケーションの Orchestrationを担う
Container Orchestration
デプロイ、状態管理、スケーリング、ビンパッキング
Legacy Application Orchestration
レガシーアプリの疑似コンテナ化
Batch Workload Orchestration
High performance computing (ML, AI data science, etc)
Trusted by:
4.7k+
GitHub Stars
20k+
Monthly D/Ls
35. Consul cluster
Demo: Service Discovery
デプロイされたサービスを瞬時に利用可能へ
Simple HTTP Simple HTTP
1. アプリケーションのデプロイ
● デプロイ
● オートヒーリング
● アップデート
2. サービスの登録
Other app
3. サービスディスカバリ(DNS)
4. サービスの呼び出し
40. L7 Traffic management
Connect Proxyによって
L7ベースの細かな通信の
制御が可能
Canaryテスト、A/Bテスト、
Blue/Greenデプロイメントなど
様々なシナリオに対応
条件に合わせて細かに通
信の重み付けが可能
SplitterによりターゲットのAPIへ
の通信の重み付けをおこない段
階的にAPIのデプロイが可能
ヘルスチェックと併用し
Failoverシナリオに対応
Consulのヘルスチェック機能によ
り、Failover時の対応方法を細か
に制御
41. L7 Traffic management - Stages
● Routingのルールでリク
エストの送信先を決定
● Path
● HTTP header
● Parameter
● 複数のバージョンにま
たがるAPIへの通信の
重み付けを設定
● API A:B = 50%:50%
● API A:B = 10%:90%
● 複数のAPIの定義
● フィルタリングにより細
かなサービスディスカ
バリ
42. Copyright © 2018 HashiCorp
まとめ
42
● サービスディスカバリを簡単に
● サービスメッシュを簡単に
● サービスルーティングを簡単に
● デプロイを簡単に
● アップデートを簡単に
● オートヒーリングを簡単に