SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
ConsulとNomadで簡単クッキング
A Cloud Operating Model
App
?
A Cloud Operating Model
App
?
● インフラプロビジョニング
● クラウドセキュリティ
● サービスデスィカバリ
● セキュアコミュニケーション
● アプリケーションのデプロイ
Challenge
Multi-Cloudへの道
Cloud、そしてMulti-Cloudへ
Traditional Datacenter
“Static”
Modern Datacenter
“Dynamic”
Dedicated
Infrastructure
Private
Cloud
AWS Azure GCP ...+ + +
Cloud、そしてMulti-Cloudへ
Traditional Datacenter
“Static”
Modern Datacenter
“Dynamic”
Dedicated
Infrastructure
Private
Cloud
AWS Azure GCP ...+ + +
Provision
Operations
専用マシン オンデマンド
Cloud、そしてMulti-Cloudへ
Traditional Datacenter
“Static”
Modern Datacenter
“Dynamic”
Dedicated
Infrastructure
Private
Cloud
AWS Azure GCP ...+ + +
Secure
Security
Provision
Operations
専用マシン オンデマンド
高信頼性
IP-based
低信頼性
Identity-based
Cloud、そしてMulti-Cloudへ
Traditional Datacenter
“Static”
Modern Datacenter
“Dynamic”
Dedicated
Infrastructure
Private
Cloud
AWS Azure GCP ...+ + +
Connect
Networking
Secure
Security
Provision
Operations
専用マシン オンデマンド
高信頼性
IP-based
低信頼性
Identity-based
ホストベース
Dynamic IP
サービスベース
Dynamic IP
Cloud、そしてMulti-Cloudへ
Traditional Datacenter
“Static”
Modern Datacenter
“Dynamic”
Dedicated
Infrastructure
Private
Cloud
AWS Azure GCP ...+ + +
Run
Development
専用
プラットフォーム 様々なプラットフォームでの実行
Connect
Networking
ホストベース
Dynamic IP
サービスベース
Dynamic IP
Secure
Security
高信頼性
IP-based
低信頼性
Identity-based
Provision
Operations
専用マシン オンデマンド
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
s
Copyright © 2017 HashiCorp
12
Connect
モノリシック → マイクロサービス
Traditional Datacenter
“Static”
Modern Datacenter
“Dynamic”
Dedicated
Infrastructure
Private
Cloud
AWS Azure GCP ...+ + +
モノリシック → マイクロサービス
Traditional Datacenter
“Static”
Modern Datacenter
“Dynamic”
Dedicated
Infrastructure
Private
Cloud
AWS Azure GCP ...+ + +
Payment Web
DB
Service 1 Service 2
Analytics
PaymentDB Service 1
Service 2
Web Analytics
Host-based       → Service-based
Payment
Payment
Payment
Web
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
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インターフェース
● ヘルスチェック
● ロードバランサーとの連携
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
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
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
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
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:
s
Copyright © 2017 HashiCorp
22
Run
Copyright © 2018 HashiCorp
Nomad: Workload orchestration
Private
Cloud
AWS Azure GCP ...+ + +
Lamda GPUDB Java K8s
Python C# Spark
専用プラットフォーム   →  様々なプラットフォーム
Copyright © 2018 HashiCorp
What is Nomad?
24
● Workload orchestrator
○ 様々なワークロードのデプロイとマネージメント
● Go言語で開発されたSingle binary
○ 容易にNomadクラスタを構築
● Infrastructure-as-code
○ Developerによる宣言的なデプロイの記述
● Hashicorp Ecosystem
○ Service discoveryのためにConsulと連携
○ シークレット管理のために Vaultと連携
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)
Copyright © 2017 HashiCorp 26
ユーザー
Nomad
Servers
JobをSubmit
Nomad
Clients
AppのDeploy・Update
Bin
Packing
様々なアプリケーション - Run
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
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
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
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
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プロトコルを利用
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
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
s
Copyright © 2017 HashiCorp
34
Consul + Nomad
Service discovery
Demo
Consul cluster
Demo: Service Discovery
デプロイされたサービスを瞬時に利用可能へ
Simple HTTP Simple HTTP
1. アプリケーションのデプロイ
● デプロイ
● オートヒーリング
● アップデート
2. サービスの登録
Other app
3. サービスディスカバリ(DNS)
4. サービスの呼び出し
s
Copyright © 2017 HashiCorp
36
Consul + Nomad
Service Mesh
Demo
Demo: サービス同士をセキュアにコネクトする
DC2DC1
Dashboard
localhost:9002
Counting
localhost:9001
暗号化
▪ Intentions
▪ Certificate
Management
▪ ACLs
サイドカー
プロキシ
サイドカー
プロキシ
Demo: サービス同士をセキュアにコネクトする
DC2DC1
Dashboard
localhost:9002
Counting
localhost:9001
暗号化
▪ Intentions
▪ Certificate
Management
▪ ACLs
サイドカー
プロキシ
サイドカー
プロキシ
Deploy Deploy
設定 設定
s
Copyright © 2017 HashiCorp
39
Consul + Nomad
L7 routing with Envoy
Demo
L7 Traffic management
Connect Proxyによって
L7ベースの細かな通信の
制御が可能
Canaryテスト、A/Bテスト、
Blue/Greenデプロイメントなど
様々なシナリオに対応
条件に合わせて細かに通
信の重み付けが可能
SplitterによりターゲットのAPIへ
の通信の重み付けをおこない段
階的にAPIのデプロイが可能
ヘルスチェックと併用し
Failoverシナリオに対応
Consulのヘルスチェック機能によ
り、Failover時の対応方法を細か
に制御
L7 Traffic management - Stages
● Routingのルールでリク
エストの送信先を決定
● Path
● HTTP header
● Parameter
● 複数のバージョンにま
たがるAPIへの通信の
重み付けを設定
● API A:B = 50%:50%
● API A:B = 10%:90%
● 複数のAPIの定義
● フィルタリングにより細
かなサービスディスカ
バリ
Copyright © 2018 HashiCorp
まとめ
42
● サービスディスカバリを簡単に
● サービスメッシュを簡単に
● サービスルーティングを簡単に
● デプロイを簡単に
● アップデートを簡単に
● オートヒーリングを簡単に
Logos on white
Logos on black
Logos on color

Mais conteúdo relacionado

Mais procurados

OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)
Akira Yoshiyama
 

Mais procurados (20)

Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方
 
OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)
 
[db tech showcase Tokyo 2015] A32:Amazon Redshift Deep Dive by アマゾン データ サービス ...
[db tech showcase Tokyo 2015] A32:Amazon Redshift Deep Dive by アマゾン データ サービス ...[db tech showcase Tokyo 2015] A32:Amazon Redshift Deep Dive by アマゾン データ サービス ...
[db tech showcase Tokyo 2015] A32:Amazon Redshift Deep Dive by アマゾン データ サービス ...
 
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
 
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきかElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
 
OpenStack を 拡張する NetApp Unified Driver の使い方 Vol.001
OpenStack を 拡張する NetApp Unified Driver の使い方 Vol.001OpenStack を 拡張する NetApp Unified Driver の使い方 Vol.001
OpenStack を 拡張する NetApp Unified Driver の使い方 Vol.001
 
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best Practiceマルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
 
MySQL 開発最新動向
MySQL 開発最新動向MySQL 開発最新動向
MySQL 開発最新動向
 
AWS Black Belt Tech シリーズ 2016 - WorkSpaces
AWS Black Belt Tech シリーズ 2016 - WorkSpacesAWS Black Belt Tech シリーズ 2016 - WorkSpaces
AWS Black Belt Tech シリーズ 2016 - WorkSpaces
 
今だから!Amazon CloudFront 徹底活用
今だから!Amazon CloudFront 徹底活用今だから!Amazon CloudFront 徹底活用
今だから!Amazon CloudFront 徹底活用
 
AWS OpsWorksハンズオン
AWS OpsWorksハンズオンAWS OpsWorksハンズオン
AWS OpsWorksハンズオン
 
[db analytics showcase Sapporo 2018] B13 Cloud Spanner の裏側〜解析からベストプラクティスへ〜
[db analytics showcase Sapporo 2018] B13 Cloud Spanner の裏側〜解析からベストプラクティスへ〜[db analytics showcase Sapporo 2018] B13 Cloud Spanner の裏側〜解析からベストプラクティスへ〜
[db analytics showcase Sapporo 2018] B13 Cloud Spanner の裏側〜解析からベストプラクティスへ〜
 
ROMA のアーキテクチャと社内事例
ROMA のアーキテクチャと社内事例ROMA のアーキテクチャと社内事例
ROMA のアーキテクチャと社内事例
 
HDFS Supportaiblity Improvements
HDFS Supportaiblity ImprovementsHDFS Supportaiblity Improvements
HDFS Supportaiblity Improvements
 
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
 
Cloudera Manager4.0とNameNode-HAセミナー資料
Cloudera Manager4.0とNameNode-HAセミナー資料Cloudera Manager4.0とNameNode-HAセミナー資料
Cloudera Manager4.0とNameNode-HAセミナー資料
 
OpenStack 101
OpenStack 101OpenStack 101
OpenStack 101
 
Couchbase 101 ja
Couchbase 101 jaCouchbase 101 ja
Couchbase 101 ja
 
DeNA Private Cloud の現在と未来
DeNA Private Cloud の現在と未来DeNA Private Cloud の現在と未来
DeNA Private Cloud の現在と未来
 

Semelhante a ConsulとNomadで簡単クッキング

Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Masahiro Nagano
 
20120821 pronet study
20120821 pronet study20120821 pronet study
20120821 pronet study
Six Apart
 
Amazon Web Services(AWS)とcloudpack について
Amazon Web Services(AWS)とcloudpack についてAmazon Web Services(AWS)とcloudpack について
Amazon Web Services(AWS)とcloudpack について
Hiroyasu Suzuki
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
Daisuke Ikeda
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
Yasuhiro Arai
 
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
Hiroyasu Suzuki
 

Semelhante a ConsulとNomadで簡単クッキング (20)

Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう! Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
 
20120821 pronet study
20120821 pronet study20120821 pronet study
20120821 pronet study
 
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
 
Build 2014 Azure インフラエンジニア向けアップデート
Build 2014 Azure インフラエンジニア向けアップデートBuild 2014 Azure インフラエンジニア向けアップデート
Build 2014 Azure インフラエンジニア向けアップデート
 
Amazon Web Services(AWS)とcloudpack について
Amazon Web Services(AWS)とcloudpack についてAmazon Web Services(AWS)とcloudpack について
Amazon Web Services(AWS)とcloudpack について
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
 
10分で押さえる AWS re:Invent 2014 新サービス・アップデート
10分で押さえる AWS re:Invent 2014 新サービス・アップデート10分で押さえる AWS re:Invent 2014 新サービス・アップデート
10分で押さえる AWS re:Invent 2014 新サービス・アップデート
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
 
NGINX + Ansible Automation Webinar (日本語版)
NGINX + Ansible Automation Webinar (日本語版)NGINX + Ansible Automation Webinar (日本語版)
NGINX + Ansible Automation Webinar (日本語版)
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
 
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
 
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
AWS Black Belt Techシリーズ  AWS  Elastic  BeanstalkAWS Black Belt Techシリーズ  AWS  Elastic  Beanstalk
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
 
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
 
Architecting on Alibaba Cloud - 超基礎編 -
Architecting on Alibaba Cloud - 超基礎編 -Architecting on Alibaba Cloud - 超基礎編 -
Architecting on Alibaba Cloud - 超基礎編 -
 
AWS Black Belt Techシリーズ Amazon Workspaces
AWS Black Belt Techシリーズ  Amazon WorkspacesAWS Black Belt Techシリーズ  Amazon Workspaces
AWS Black Belt Techシリーズ Amazon Workspaces
 
Azure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox EditionAzure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox Edition
 
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
 
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
 

Mais de Masatomo Ito (8)

Hcp boundary
Hcp boundaryHcp boundary
Hcp boundary
 
F5 meetup terraform & vault
F5 meetup   terraform & vaultF5 meetup   terraform & vault
F5 meetup terraform & vault
 
HashiCorp Snapshots - Consul NMA
HashiCorp Snapshots - Consul NMA HashiCorp Snapshots - Consul NMA
HashiCorp Snapshots - Consul NMA
 
Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18
 
Sumo logic meetup 2020 jan
Sumo logic meetup 2020 janSumo logic meetup 2020 jan
Sumo logic meetup 2020 jan
 
Terraform with Bitbucket pipeline
Terraform with Bitbucket pipelineTerraform with Bitbucket pipeline
Terraform with Bitbucket pipeline
 
Datadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stackDatadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stack
 
Datadog monitoring with HashiCorp
Datadog monitoring with HashiCorpDatadog monitoring with HashiCorp
Datadog monitoring with HashiCorp
 

ConsulとNomadで簡単クッキング

  • 2.
  • 3. A Cloud Operating Model App ?
  • 4. A Cloud Operating Model App ? ● インフラプロビジョニング ● クラウドセキュリティ ● サービスデスィカバリ ● セキュアコミュニケーション ● アプリケーションのデプロイ Challenge
  • 8. Cloud、そしてMulti-Cloudへ Traditional Datacenter “Static” Modern Datacenter “Dynamic” Dedicated Infrastructure Private Cloud AWS Azure GCP ...+ + + Secure Security Provision Operations 専用マシン オンデマンド 高信頼性 IP-based 低信頼性 Identity-based
  • 9. Cloud、そしてMulti-Cloudへ Traditional Datacenter “Static” Modern Datacenter “Dynamic” Dedicated Infrastructure Private Cloud AWS Azure GCP ...+ + + Connect Networking Secure Security Provision Operations 専用マシン オンデマンド 高信頼性 IP-based 低信頼性 Identity-based ホストベース Dynamic IP サービスベース Dynamic IP
  • 10. Cloud、そしてMulti-Cloudへ Traditional Datacenter “Static” Modern Datacenter “Dynamic” Dedicated Infrastructure Private Cloud AWS Azure GCP ...+ + + Run Development 専用 プラットフォーム 様々なプラットフォームでの実行 Connect Networking ホストベース Dynamic IP サービスベース Dynamic IP Secure Security 高信頼性 IP-based 低信頼性 Identity-based Provision Operations 専用マシン オンデマンド
  • 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
  • 12. s Copyright © 2017 HashiCorp 12 Connect
  • 14. モノリシック → マイクロサービス Traditional Datacenter “Static” Modern Datacenter “Dynamic” Dedicated Infrastructure Private Cloud AWS Azure GCP ...+ + + Payment Web DB Service 1 Service 2 Analytics PaymentDB Service 1 Service 2 Web Analytics Host-based       → Service-based Payment Payment Payment Web
  • 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:
  • 22. s Copyright © 2017 HashiCorp 22 Run
  • 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
  • 34. s Copyright © 2017 HashiCorp 34 Consul + Nomad Service discovery Demo
  • 35. Consul cluster Demo: Service Discovery デプロイされたサービスを瞬時に利用可能へ Simple HTTP Simple HTTP 1. アプリケーションのデプロイ ● デプロイ ● オートヒーリング ● アップデート 2. サービスの登録 Other app 3. サービスディスカバリ(DNS) 4. サービスの呼び出し
  • 36. s Copyright © 2017 HashiCorp 36 Consul + Nomad Service Mesh Demo
  • 38. Demo: サービス同士をセキュアにコネクトする DC2DC1 Dashboard localhost:9002 Counting localhost:9001 暗号化 ▪ Intentions ▪ Certificate Management ▪ ACLs サイドカー プロキシ サイドカー プロキシ Deploy Deploy 設定 設定
  • 39. s Copyright © 2017 HashiCorp 39 Consul + Nomad L7 routing with Envoy Demo
  • 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 ● サービスディスカバリを簡単に ● サービスメッシュを簡単に ● サービスルーティングを簡単に ● デプロイを簡単に ● アップデートを簡単に ● オートヒーリングを簡単に