はじめに
2020年2月14日に開催されたDevelopers Summit2020に参加してきました。
テーマ
【14-D-5】マルチクラウドに向けてNGINX活用促進する為に知っておいてほしいこと
カテゴリ
アプリケーション開発
登壇者
鈴木 孝彰さん[NGINX (Part of F5)]
発表資料
講演メモ
みなさんの使い方
- Nginxを使ったことがある人?
- 参加者の9割くらい
- リバースプロキシで使っている人?
- 8割くらい?
- K8sで使っている人?
- 少ない?
- locationのすべての挙動がわかる人?
- かなり少ない?
NGINX利用するぞ
- on Linux
- and Ansible
- GithubでAnsibleロールがダウンローできる
- 自動化に是非
- on DockerHub
- docker pull nginx
- Official Dockerfile
- githubで公開
- and CI/CD
- Jenkins
- Gitlab
NGINX活用するぞ
- コンテナや様々なCloudで動く
- 活用例
- WEBサーバキャッシュ
- 高度なロードバランサ
- 事例
- NETFLIX
- WEBサーバはNGINX
- NETFLIX
- パフォーマンス
- 同時接続処理数が高く、メモリ使用量が少ない
- Apacheよりも圧倒的に性能が良い
- サイジングデータ
- ホームページで公開中
- 同時接続処理数が高く、メモリ使用量が少ない
- on AWS
- 問題なく動く
- on Azure
- 問題なく動く
- and Cloud Auto Scaling
- Githubで公開中
- on コンテナプラットフォーム
- K8s
- PaaS
- CaaS
- AWS ECS
- GKE
- k8s
- Ingress Controller ランドスケープ
- on GCP
- L4のLBに
class:nginx
を指定 - L7の処理はNGINX
- L4のLBに
- on Azure
- GCPと同様の事が可能
- on GCP
- 何ができるのか
- URLベースRouting
https://foo.example.com
Upstream:foo-svc:80
- URLベースRouting
- 事例
- 価格コム
- gRPC,WebSocket対応
- Active Health Check
- HTMLヘッダやコンテンツの中身もチェックできる
- JWT/OpenID認証
- 各アプリ毎共通の認証機能をもたせたい
- Ingress Controller ランドスケープ
- ExternalNameを設定
- ブロードリーフ社の事例
- GKEでExternal Nameを使用する
https://cafeexample.com/v2.0
Upstream:v1-service:80
- 部分的にAWSのサービスを使うこともできる
https://cafeexample.com/v1.9
Type:ExternalName nginx.example.co.jp:80
- カナリアデプロイ
- CustomResources設定例
- weight:90
- Upstream:Backend-Stable
- weight:10
- Upstream:Backend-canary
- weight:90
- CustomResources設定例
- マルチクラウドで共通設定
- 例)
- レート制限:200Request/sec
- 認証設定
- 例)
NGINX監視運用するぞ
- ツール
- ZABBIX
- Prometheus
- DATADOG
- New Relic
- 事例:WANTEDLY社
- 公式ページに公開中
デモ
- GKE上にk8sクラスタを構築+EternalNameを指定してAWSにアクセス
- Azureでも同様のことが可能
感想とまとめ
Nginxは日頃WEBサーバとして利用していますが、十分に使いこなせているとは言えない状況です。今回のセッションで、Nginxの特徴や機能について幅広く学ぶことができました。単なるリバースプロキシだけでなく、、カナリアデプロイや、APIマネジメントもでき、さらにType:ExternalName
を活用することで、マルチクラウドでもNGINXを利用できることを学びました。マルチクラウドで利用する機会は早々なさそうですが、部分的に他Cloudのサービスを使うというケースはあるかもしれません。今後もNginxを色々いじってみたくなりました。