SlideShare a Scribd company logo
Cloud Native Meetup Tokyo #1
with NATS with Kubernetes
の世界へ
Who?
Hayahito
Kawamitsu 某通信会社、
クラウド上での
コンテナサービス
(Rancher)
開発・運用
最近の社外活動
IoT
×
ヘルスケア
システム実装
on
GCP
Agenda
3
2
1 About NATS
NATS, NATS Streaming, Deploy, Monitoring, Logging, Benchmark
NATS with Kubernetes
Cluster, Deploy (NATS Operator)
OpenFaas with NATS with Kubernetes
Architecture, Deploy
with NATS with Kubernetesの世界へ
with NATS with Kubernetesの世界へ
(少々脱線)
メッセージングシステムの
市場ニーズ調査
GCP Sample Solutions(全56種)を元に、
プロダクト(全70種以上)の市場ニーズを調査。
以下は、IoTソリューション例。
順位 プロダクト名 登場回数
1 Cloud Storage 30
2 Compute Engine 24
3 BigQuery 23
4 App Engine 21
5 Cloud Dataflow 18
6 Cloud Load Balancing 15
7 Kubernetes Engine 13
7 Cloud PubSub 13
9 Cloud Bigtable 12
9 Cloud SQL 12
GCPサンプルソリューション登場プロダクト Top 10
メッセージングシステムを
必要とするソリューションは
多い!!
いま、ふたたびのNATSへ
Availability
Cluster
Security
TLS / User-Token
based Authentication
/ Authorization
Go言語で実装されたオープンソースのメッセージングシステム
(ソフトウェア / ハードウェアを問わず、分散したシステム間のメッセージのやり取り(送受信)をサポート)
NATS
Neural Autonomic Transport System
1 Performance and
Scalability
1,800万メッセージ/秒
2
Simplicity
Single binary / Text-based
protocol / No external
dependencies
3
4
DNA
メッセージングモデル
Publish/Subscribe Request/Reply Queueing
(Load balanced
queue subscriber)
NATS Streaming
データストリーミングシステム powerd by NATS
> Delivery: At-least-once
クライアントが接続した際に、過去のメッセージも受信
可能。
> Storage: Memory, File or Database
ストレージ上にメッセージを保存することで実装。
> Store Limits設定可能
Subject毎にメッセージの保存期間を設定可能。
Monitoring
Endpoint for metrics nats-top Prometheus
Grafana
NATS
Server
NATS
Server
Prometheus
NATS
Prometheus
Exporter
NATS
Prometheus
Exporter
nats-top is a top like tool
for monitoring NATS
servers.
http://localhost:8222/vars
http://localhost:8222/connz
http://localhost:8222/subsz
http://localhost:8222/routez
Logging
<実行コマンド>
$ gnatsd -s udp://localhost:514
<実行コマンド>
$ gnatsd -l nats.log
ログファイル出力 Syslog
<その他オプション>
-l, --log FILE File to redirect log output.
-T, --logtime Timestamp log entries (default is true).
-s, --syslog Enable syslog as log method.
-r, --remote_syslog Syslog server address.
-D, --debug Enable debugging output.
-V, --trace Trace the raw protocol.
-DV Debug and Trace.
<実行環境>
CPU: Intel Xeon CPU E5-2643 3.30GHz
Memory: 32GB
<ベンチマークツール(nats-bench)インストール>
$ go get github.com/nats-io/go-nats
$ go install $GOPATH/src/github.com/nats-io/go-nats/examples/nats-bench.go
<NATS実行>
$ gnatsd
<実行コマンド: オプション確認>
$ nats-bench -h
-np NUM_PUBLISHERS
-ns NUM_SUBSCRIBERS
-n NUM_MSGS
-ms MESSAGE_SIZE <subject>
ベンチマークとチューニング
<実行コマンド N:Mスループットテスト>
$ nats-bench -np 5 -ns 5 -n 10000000 -ms 16 foo
...省略...
NATS Pub/Sub stats: 6,666,260 msgs/sec 101.72 MB/sec
...省略...
チューニングのナレッジをお
持ちの方いらっしゃいます
か?
Benchmark
Let’s Deploy!
<前提条件>
・Go 1.5+ and set $GOPATH
<実行コマンド>
$ go get github.com/nats-io/gnatsd
$ gnatsd
<前提条件>
・Dockerインストール
<実行コマンド>
$ docker run -p 4222:4222 nats
ソースインストール & 実行 Dockerコンテナ実行
Client
NATS
NATS NATS
4222
Management
HTTP/
HTTPS
8222
route:
6222
$ telnet localhost 4222
Trying ::1...
Connected to localhost.
Escape character is '^]'.
INFO
{"server_id":"34wyPXXqogfLVYw2fMvMpc","vers
ion":"1.1.1","git_commit":"","go":"go1.10.2","host":"
0.0.0.0","port":4222,"auth_required":false,"tls_re
quired":false,"tls_verify":false,"max_payload":104
8576}
pub foo.bar 5
hello
+OK
Let’s Pub/Sub!
(Human NATS Client: Telnet)
Subscriber実行 Publisher実行
$ telnet localhost 4222
Trying ::1...
Connected to localhost.
Escape character is '^]'.
INFO
{"server_id":"34wyPXXqogfLVYw2fMvMpc","vers
ion":"1.1.1","git_commit":"","go":"go1.10.2","host":"
0.0.0.0","port":4222,"auth_required":false,"tls_re
quired":false,"tls_verify":false,"max_payload":104
8576}
sub foo.* 90
+OK
MSG foo.bar 90 5
hello
1
2
3
4
5
with NATS with Kubernetesの世界へ
NATS with Kubernetes
NATS Cluster
Cluster
Publisher
Publisher
Sbuscriber
Subscriber
Subscriber
NATS
NATS NATS
クラスタ内のLeader決めなどは、Raft
Consensus Algorithmに基づいて実施。
etcdでも同アルゴリズムが採用されているが、
詳細は別資料参照。
$ echo '
apiVersion: "nats.io/v1alpha2"
kind: "NatsCluster"
metadata:
name: "example-nats-cluster"
spec:
size: 3
version: "1.1.0"
' | kubectl -n nats-io apply -f -
Let’s Deploy (NATS Operator)!
<手順>
$ kubectl apply -f
https://raw.githubusercontent.com/nats-io/nats
-operator/master/example/deployment.yaml
$ kubectl get pod -n nats-io -o wide
$ kubectl get service -n nats-io
$ kubectl get crd -n nats-io
NAME AGE
natsclusters.nats.io 1h
1
3
2
OpenFaas with NATS Streaming
with Kubernetes
with NATS with Kubernetesの世界へ
with NATS with Kubernetesの世界へ
Namespace: openfaas
faas-netes
Client Gateway faas-netes
Prometheus
nats-streaming queue-worker
FUNCTION
FUNCTION
...
faas-netes: Kubernetes上にて、OpenFaaSが動作するのをサポート。
いくつかのデプロイツールが含まれる。
Alertmanager
Namespace: openfaas-fn
<前提条件>
・Kubernetes 1.8 or 1.9 cluster running on Linux hosts.
・Install Helm.
<実行コマンド>
$ git clone https://github.com/openfaas/faas-netes.git
$ cd faas-netes/chart
$ kubectl create ns openfaas
$ kubectl create ns openfaas-fn
$ helm upgrade --install openfaas openfaas/ 
--namespace openfaas --set functionNamespace=openfaas-fn
Let’s Deploy OpenFaaS!
<実行コマンド>
$ curl -sL https://cli.openfaas.com
$ git clone https://github.com/openfaas/faas-cli
$ cd faas-cli
$ faas-cli deploy -f stack.yml --gateway http://127.0.0.1:31112
$ faas-cli list --gateway http://127.0.0.1:31112
Function Invocations Replicas
nodejs-echo 0 1
<同期実行コマンド>
$ curl http://127.0.0.1:31112/function/nodejs-echo -d “hello”
{"nodeVersion":"v8.9.1","input":"“hello”"}
<非同期実行コマンド>
$ curl http://127.0.0.1:31112/async-function/nodejs-echo -d “hello”
Let’s Deploy Samples!
Enjoy with NATS
with Kubernetes!!
1. Youtube - NATS Intro
https://www.youtube.com/watch?v=Y9bDY_oE80w
2. Youtube - NATS Deep Dive
https://www.youtube.com/watch?v=MAKYz8oPRyw
3. THE LINUX FOUNDATION - CNCFがNATSをホストへ
https://www.linuxfoundation.jp/blog/cncf-to-host-nats/
4. cloud.google.com - GCP Offical Icons and Sample Solutions
https://docs.google.com/presentation/d/1vjm5YdmOH5LrubFhHf1vlqW2O9Z2UqdWA8biN3e8K5U/edit?hl=ja#slide=id.g1a
96c6729e_19_0
5. GitHub - Cloud Native Landscape and Trail map
https://github.com/cncf/landscape
6. NATS Cloud - Introducing NATS Cloud
https://www.nats.cloud/
7. GitHub - NATS - The Cloud Native Messaging System
https://github.com/nats-io
8. Docker Hub - NATS
https://hub.docker.com/_/nats/
9. OpenFaaS - Deployment guide for Kubernetes
https://docs.openfaas.com/deployment/kubernetes/
10. GitHub - The Raft Consensus Algorithm
https://raft.github.io/
参考サイト

More Related Content

PDF
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
PDF
TIME_WAITに関する話
PDF
AWS Glueを使った Serverless ETL の実装パターン
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
PPTX
初心者向けMongoDBのキホン!
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
PDF
ストリーム処理を支えるキューイングシステムの選び方
PDF
UnboundとNSDの紹介 BIND9との比較編
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
TIME_WAITに関する話
AWS Glueを使った Serverless ETL の実装パターン
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
初心者向けMongoDBのキホン!
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
ストリーム処理を支えるキューイングシステムの選び方
UnboundとNSDの紹介 BIND9との比較編

What's hot (20)

PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
PDF
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
PPTX
コンテナネットワーキング(CNI)最前線
PDF
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
PDF
AWSのログ管理ベストプラクティス
PPTX
サイバーエージェント様 発表「OpenStackのNWと物理の話」
PDF
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...
PDF
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
PDF
AWS Black Belt Online Seminar AWS CloudFormation アップデート
PDF
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
PPTX
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
PDF
CloudFormation/SAMのススメ
PPTX
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
PDF
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
PPTX
Ceph アーキテクチャ概説
PPTX
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
PDF
コンテナにおけるパフォーマンス調査でハマった話
PDF
[よくわかるクラウドデータベース] CassandraからAmazon DynamoDBへの移行事例
PDF
DockerとPodmanの比較
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
コンテナネットワーキング(CNI)最前線
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
AWSのログ管理ベストプラクティス
サイバーエージェント様 発表「OpenStackのNWと物理の話」
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWS Black Belt Online Seminar AWS CloudFormation アップデート
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
CloudFormation/SAMのススメ
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Ceph アーキテクチャ概説
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
コンテナにおけるパフォーマンス調査でハマった話
[よくわかるクラウドデータベース] CassandraからAmazon DynamoDBへの移行事例
DockerとPodmanの比較
Ad

Similar to with NATS with Kubernetesの世界へ (15)

PDF
Reading NATS
PDF
Webアプリ開発向け ゆるふわDocker使いが Cloud Naive開発に必要なetc.
PDF
世界におけるKubernetes活用状況と企業向けプライベートクラウド基盤
PDF
世界におけるKubernetes活用状況と企業向けプライベートクラウド基盤
PDF
KubeCon + CloudNativeCon Europe 2019 参加報告
PDF
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
PDF
ざっくり始めるCloud Native開発
PDF
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
PDF
NATS on VCAP
PDF
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
PDF
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
PDF
CNCF Updates 2019 Winter version and Knative
PDF
GCPで実現するクラウドネイティブアプリケーション
PDF
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
PDF
Reading NATS
Webアプリ開発向け ゆるふわDocker使いが Cloud Naive開発に必要なetc.
世界におけるKubernetes活用状況と企業向けプライベートクラウド基盤
世界におけるKubernetes活用状況と企業向けプライベートクラウド基盤
KubeCon + CloudNativeCon Europe 2019 参加報告
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
ざっくり始めるCloud Native開発
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
NATS on VCAP
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CNCF Updates 2019 Winter version and Knative
GCPで実現するクラウドネイティブアプリケーション
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Ad

with NATS with Kubernetesの世界へ

  • 1. Cloud Native Meetup Tokyo #1 with NATS with Kubernetes の世界へ
  • 3. Agenda 3 2 1 About NATS NATS, NATS Streaming, Deploy, Monitoring, Logging, Benchmark NATS with Kubernetes Cluster, Deploy (NATS Operator) OpenFaas with NATS with Kubernetes Architecture, Deploy
  • 8. 順位 プロダクト名 登場回数 1 Cloud Storage 30 2 Compute Engine 24 3 BigQuery 23 4 App Engine 21 5 Cloud Dataflow 18 6 Cloud Load Balancing 15 7 Kubernetes Engine 13 7 Cloud PubSub 13 9 Cloud Bigtable 12 9 Cloud SQL 12 GCPサンプルソリューション登場プロダクト Top 10 メッセージングシステムを 必要とするソリューションは 多い!!
  • 10. Availability Cluster Security TLS / User-Token based Authentication / Authorization Go言語で実装されたオープンソースのメッセージングシステム (ソフトウェア / ハードウェアを問わず、分散したシステム間のメッセージのやり取り(送受信)をサポート) NATS Neural Autonomic Transport System 1 Performance and Scalability 1,800万メッセージ/秒 2 Simplicity Single binary / Text-based protocol / No external dependencies 3 4 DNA
  • 12. NATS Streaming データストリーミングシステム powerd by NATS > Delivery: At-least-once クライアントが接続した際に、過去のメッセージも受信 可能。 > Storage: Memory, File or Database ストレージ上にメッセージを保存することで実装。 > Store Limits設定可能 Subject毎にメッセージの保存期間を設定可能。
  • 13. Monitoring Endpoint for metrics nats-top Prometheus Grafana NATS Server NATS Server Prometheus NATS Prometheus Exporter NATS Prometheus Exporter nats-top is a top like tool for monitoring NATS servers. http://localhost:8222/vars http://localhost:8222/connz http://localhost:8222/subsz http://localhost:8222/routez
  • 14. Logging <実行コマンド> $ gnatsd -s udp://localhost:514 <実行コマンド> $ gnatsd -l nats.log ログファイル出力 Syslog <その他オプション> -l, --log FILE File to redirect log output. -T, --logtime Timestamp log entries (default is true). -s, --syslog Enable syslog as log method. -r, --remote_syslog Syslog server address. -D, --debug Enable debugging output. -V, --trace Trace the raw protocol. -DV Debug and Trace.
  • 15. <実行環境> CPU: Intel Xeon CPU E5-2643 3.30GHz Memory: 32GB <ベンチマークツール(nats-bench)インストール> $ go get github.com/nats-io/go-nats $ go install $GOPATH/src/github.com/nats-io/go-nats/examples/nats-bench.go <NATS実行> $ gnatsd <実行コマンド: オプション確認> $ nats-bench -h -np NUM_PUBLISHERS -ns NUM_SUBSCRIBERS -n NUM_MSGS -ms MESSAGE_SIZE <subject> ベンチマークとチューニング <実行コマンド N:Mスループットテスト> $ nats-bench -np 5 -ns 5 -n 10000000 -ms 16 foo ...省略... NATS Pub/Sub stats: 6,666,260 msgs/sec 101.72 MB/sec ...省略... チューニングのナレッジをお 持ちの方いらっしゃいます か?
  • 17. Let’s Deploy! <前提条件> ・Go 1.5+ and set $GOPATH <実行コマンド> $ go get github.com/nats-io/gnatsd $ gnatsd <前提条件> ・Dockerインストール <実行コマンド> $ docker run -p 4222:4222 nats ソースインストール & 実行 Dockerコンテナ実行 Client NATS NATS NATS 4222 Management HTTP/ HTTPS 8222 route: 6222
  • 18. $ telnet localhost 4222 Trying ::1... Connected to localhost. Escape character is '^]'. INFO {"server_id":"34wyPXXqogfLVYw2fMvMpc","vers ion":"1.1.1","git_commit":"","go":"go1.10.2","host":" 0.0.0.0","port":4222,"auth_required":false,"tls_re quired":false,"tls_verify":false,"max_payload":104 8576} pub foo.bar 5 hello +OK Let’s Pub/Sub! (Human NATS Client: Telnet) Subscriber実行 Publisher実行 $ telnet localhost 4222 Trying ::1... Connected to localhost. Escape character is '^]'. INFO {"server_id":"34wyPXXqogfLVYw2fMvMpc","vers ion":"1.1.1","git_commit":"","go":"go1.10.2","host":" 0.0.0.0","port":4222,"auth_required":false,"tls_re quired":false,"tls_verify":false,"max_payload":104 8576} sub foo.* 90 +OK MSG foo.bar 90 5 hello 1 2 3 4 5
  • 21. NATS Cluster Cluster Publisher Publisher Sbuscriber Subscriber Subscriber NATS NATS NATS クラスタ内のLeader決めなどは、Raft Consensus Algorithmに基づいて実施。 etcdでも同アルゴリズムが採用されているが、 詳細は別資料参照。
  • 22. $ echo ' apiVersion: "nats.io/v1alpha2" kind: "NatsCluster" metadata: name: "example-nats-cluster" spec: size: 3 version: "1.1.0" ' | kubectl -n nats-io apply -f - Let’s Deploy (NATS Operator)! <手順> $ kubectl apply -f https://raw.githubusercontent.com/nats-io/nats -operator/master/example/deployment.yaml $ kubectl get pod -n nats-io -o wide $ kubectl get service -n nats-io $ kubectl get crd -n nats-io NAME AGE natsclusters.nats.io 1h 1 3 2
  • 23. OpenFaas with NATS Streaming with Kubernetes
  • 26. Namespace: openfaas faas-netes Client Gateway faas-netes Prometheus nats-streaming queue-worker FUNCTION FUNCTION ... faas-netes: Kubernetes上にて、OpenFaaSが動作するのをサポート。 いくつかのデプロイツールが含まれる。 Alertmanager Namespace: openfaas-fn
  • 27. <前提条件> ・Kubernetes 1.8 or 1.9 cluster running on Linux hosts. ・Install Helm. <実行コマンド> $ git clone https://github.com/openfaas/faas-netes.git $ cd faas-netes/chart $ kubectl create ns openfaas $ kubectl create ns openfaas-fn $ helm upgrade --install openfaas openfaas/ --namespace openfaas --set functionNamespace=openfaas-fn Let’s Deploy OpenFaaS!
  • 28. <実行コマンド> $ curl -sL https://cli.openfaas.com $ git clone https://github.com/openfaas/faas-cli $ cd faas-cli $ faas-cli deploy -f stack.yml --gateway http://127.0.0.1:31112 $ faas-cli list --gateway http://127.0.0.1:31112 Function Invocations Replicas nodejs-echo 0 1 <同期実行コマンド> $ curl http://127.0.0.1:31112/function/nodejs-echo -d “hello” {"nodeVersion":"v8.9.1","input":"“hello”"} <非同期実行コマンド> $ curl http://127.0.0.1:31112/async-function/nodejs-echo -d “hello” Let’s Deploy Samples!
  • 29. Enjoy with NATS with Kubernetes!!
  • 30. 1. Youtube - NATS Intro https://www.youtube.com/watch?v=Y9bDY_oE80w 2. Youtube - NATS Deep Dive https://www.youtube.com/watch?v=MAKYz8oPRyw 3. THE LINUX FOUNDATION - CNCFがNATSをホストへ https://www.linuxfoundation.jp/blog/cncf-to-host-nats/ 4. cloud.google.com - GCP Offical Icons and Sample Solutions https://docs.google.com/presentation/d/1vjm5YdmOH5LrubFhHf1vlqW2O9Z2UqdWA8biN3e8K5U/edit?hl=ja#slide=id.g1a 96c6729e_19_0 5. GitHub - Cloud Native Landscape and Trail map https://github.com/cncf/landscape 6. NATS Cloud - Introducing NATS Cloud https://www.nats.cloud/ 7. GitHub - NATS - The Cloud Native Messaging System https://github.com/nats-io 8. Docker Hub - NATS https://hub.docker.com/_/nats/ 9. OpenFaaS - Deployment guide for Kubernetes https://docs.openfaas.com/deployment/kubernetes/ 10. GitHub - The Raft Consensus Algorithm https://raft.github.io/ 参考サイト