SlideShare a Scribd company logo
the Way of the OpenStack API Dragon
(2014/07/09, Shibuya GMO yours)
GMOインターネット株式会社
システム本部 第2サービス開発部
オープンコンピューティングチーム
 郷古直仁
 
openstack!
Open source software to build public and private clouds.
OpenStack !
4th Birthday party
“the Way of the OpenStack API Dragon”!
~GMOアプリクラウドのAPI公開への道~
the Way of the OpenStack API Dragon
Atlanta Summitから話題の
Chuck Norris
もともとUSではもうすでに慣用句らしい
(wikipedia:
チャック・ノリス・ファクト)
なんで、the OpenStack API Dragon !??
the Way of the OpenStack API Dragon
名誉海兵隊員だったりチェーンソーを素
手で受け止めたりするけど、最近では
炎のテキサスレンジャー
有名な初期の出演作は
ドラゴンへの道
なんで、the Way of the OpenStack API Dragon !??
the Way of the OpenStack API Dragon
ということで、OpenStackのAPIを
Public Network(the Internet)に公
開して、セキュリティを設定して利用で
きるようにすることを、この場では
the OpenStack API Dragon
と設定します :)
なんで、the Way of the OpenStack API Dragon !??
the Way of the OpenStack API Dragon
Atlanta summitのops Meetupで
API Endpointをどうやって守るって話
題があったみたいです
!
Atranta summit ops Meetup
http://www.slideshare.net/inouetmko/josug20140619
the OpenStack API Dragon は
the Way of the OpenStack API Dragon
API Endpointを守る(Layer 7)
Examples) ops Meetupより
- mod_security
- nginx
- NetScaler
etc.
the OpenStack API Dragon は
the Way of the OpenStack API Dragon
弊社環境でも同じようにやっています
!
GMOアプリクラウドのOpenStack
Havana環境ではこんな感じ
!
API Endpointを守る(Layer 7)
- nginx
- HAProxy
API Endpointを守る(Layer 7)
the Way of the OpenStack API Dragon
今日のLT内容
きょうは、清楚かわいい座敷わらしが
応援団長のVPSのConoHa(Grizzly)の
話ではなく、
the Way of the OpenStack API Dragon
アザトかわいいといわれる座敷童が応
援団長の「GMOアプリクラウド」が
オンプレミスの仮想化から、
 OpenStack Hava
を採用して、OpenStack APIを使える
ようにした ドラゴンの道 のお話
今日のLT内容:GMOアプリクラウドOpenStack API公開について
the Way of the OpenStack API Dragon
1) 課金処理が量計式ではなく、コントロールパネ
ル(web GUI)の処理に依存
(nova bootとか無理)
2) 裏の会員処理と紐付いたコントロールパネル用
のWrapper API(RESTful)を作りこんでしまっ
た
(OpenStack APIとは形式違うw)
3) OpenStack自体にも手を入れすぎちゃった
(HP Cloudの真壁さんのお話、参考になる)
では、なぜConoHaではOpenStack APIが公開できなかったの?
the Way of the OpenStack API Dragon
たとえば、2) コンパネ用API(RESTful) by ConoHa
こんなかんじに、全
く違うAPIでweb
GUIが動き、その裏
でOpenStack
APIがcallされてい
るのがConoHa
the Way of the OpenStack API Dragon
ConoHa コンパネとAPI proxy, OpenStack API
ConoHaコンパネAPIのアク
セスの関係はこんな感じ
!
できれば、今後は コンパネ
API と 公開API の二重開発
みたいなことは避けたい
コントロールパネル (IIS, .Net)
API Proxy
(httpd, php
Framework: fuel php)
Grizzly
Nova API
会員システムAPI
Grizzly
Quantum API
Grizzly
Glance API
ConoHaコンパネAPI
会員DB
Grizzly
Keystone API
OpenStack API
the Way of the OpenStack API Dragon
そして、OpenStack Havanaでの開発
GMOアプリクラウド の
OpenStack Havana化
!
それまでの反省から、ほとんどの
操作系をOpenStack APIのまま
web GUIのコントロールパネル
を開発することになった
=>> その代わり、API公開を前提に、OpenStack API
のValidation checkをコンパネのためにも作ることに
the Way of the OpenStack API Dragon
1) OpenStack API validation proxy for webGUI
API公開前提でConoHaで作ったコンパネAPIで
はなく、OpenStack APIそのものにValidation
checkを
OpenStackの改変せずに
実装する
=>> API Proxy方式
web GUIでも、API公開でも間違った値では、APIに到達する前
にエラーを返す(ex: 商品スペックにないストレージサイズとか)
=> API workerの負荷コスト削減
the Way of the OpenStack API Dragon
1) OpenStack Havana API validation proxy for webGUI
GMO Apps CloudのOpenStack API
のアクセスの関係はこんな感じ
コントロールパネル(httpd, php)
API wrapper proxy
(httpd, php
Framework: fuel php)
Havana
Nova API
会員システムAPI
Havana
Quantum API
Havana
Glance API
OpenStack API for
input validation
会員DB
Havana
Keystone API
OpenStack API
Havana
Cinder API
Havana
Ceilometer API
=>> コンパネが公開後のOpenStack API
と同じものにアクセスする想定で構成
the Way of the OpenStack API Dragon
1) OpenStack Havana API validation proxy for API公開
GMO Apps CloudのOpenStack API
のアクセスの関係はこんな感じ
コントロールパネル(httpd, php)
API wrapper proxy
(httpd, php
Framework: fuel php)
Havana
Nova API
会員システムAPI
Havana
Quantum API
Havana
Glance API
OpenStack API for
input validation
会員DB
Havana
Keystone API
OpenStack API
Havana
Cinder API
Havana
Ceilometer API
=>> コンパネが公開後のOpenStack API
と同じものにアクセスする想定で構成
Endpoint L7:reverse proxy
Havana
Swift Proxy
the Way of the OpenStack API Dragon
1) OpenStack Havana アプリクラウド公開API
というわけで、2014/07/08にbetaと
してまずは公開しました
http://cloud.gmo.jp/docs
!
コンパネから使えるOpenStack APIを
公開した(client API)ので、少ないです
API: 31個
the Way of the OpenStack API Dragon
1) OpenStack Havana アプリクラウド公開API
the Way of the OpenStack API Dragon
2) 公開API Endpointのセキュリティ対策
Endpoint L7:reverse proxy
そして、API Endpointの部分
=> 公開なので、できればTCP 80 or 443で
!
!
!
SSL(https): reverse proxyにやらせる
(SSL Termination)
!
=> https(443 port)にしただけで、かなり変なアク
セスはなくなる
the Way of the OpenStack API Dragon
2) 公開API Endpoint: Reverse Proxyの選択
Reverse proxyにはたくさん種類
- nginx (ver. 1.6.0)
- HAProxy (ver. 1.5.0)
他:Varnish, apache mod_proxy, etc.
その中でもこの2つをなぜ選んだ?
!
=> 使い分け、適材適所、SSL可能
the Way of the OpenStack API Dragon
2) 公開API Endpoint: Reverse Proxy: nginx
nginx (ver. 1.6.0)
- lua, mrubyと組み合わせたりできる(要rebuild)
- 標準buildでもそこそこL7のロジックが書ける
(公式 rpm repositoryのbuild)
!
欠点: request自体をtemporary dirにキャッシュしてからバッ
クエンドに転送処理する
=> Glance image upload, Swiftなどのdata streamには向
かない
(ex: 5GBのSwiftのupload: nginxのサーバ上に5GBのファイ
ルが作成される)
the Way of the OpenStack API Dragon
2) 公開API Endpoint: Reverse Proxy: HAProxy
HAProxy (ver. 1.5.0)
- ver. 1.5.0からSSL可能
- OpenStackでの構成でもLBaaSでも使われるのでお馴染み
- そこそこ、ルールが書ける
- socket to socketで処理するので、nginxのような
temporary fileを作らない
=> Glance image upload, Swiftなどに適用可能
!
欠点: config fileはinclude機能がない、 -f オプションで複数
ファイル指定はできるみたいだけど
また、細かいロジックはnginxに負ける
the Way of the OpenStack API Dragon
2) 公開API Endpoint: Reverse Proxyの適用
下記のように適用しています
- nginx (ver. 1.6.0)
- keystone: host filter, URI filter(API), SSL Termination,
request limit filter (1MB, 3r/s)
- nova: host filter, URI filter(API), SSL Termination
- neutron: host filter, URI filter(API), SSL Termination
- cinder: host filter, URI filter(API), SSL Termination
- glance: host filter, URI filter(API: list images), SSL Termination
- HAProxy (ver. 1.5.0)
- Swift: host filter, URI filter, SSL Termination
!
!
!
!
the Way of the OpenStack API Dragon
2) 公開API Endpoint: Reverse Proxy: swift
HAProxy (ver. 1.5.0)適用
[root@ext-obj-reverse-proxy haproxy]# cat haproxy.cfg ¦ grep -v '#'
global
log 127.0.0.1 local0
maxconn 131072
user haproxy
group haproxy
daemon
stats socket /var/run/haproxy.sock mode 600 level admin
stats timeout 2m
tune.chksize 16384000
tune.bufsize 16384000
!
!
!
!
!
!
the Way of the OpenStack API Dragon
2) 公開API Endpoint: Reverse Proxy: swift
HAProxy (ver. 1.5.0)適用
defaults
log global
mode http
option log-separate-errors
log-format [%pid] [%Ts.%ms] %ac/%fc/%bc/%bq/%sc/%sq/%rc %Tq/%Tw/%Tc/%Tr/
%Tt %tsc %ci:%cp %fi:%fp %si:%sp %ft %sslc %sslv %{+Q}r %ST %b:%s "%CC"
"%hr""%CS" "%hs" req_size=%U resp_size=%B
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
option forwardfor
!
the Way of the OpenStack API Dragon
2) 公開API Endpoint: Reverse Proxy: swift
HAProxy (ver. 1.5.0)適用
listen hastats *:10080
mode http
maxconn 64
stats enable
stats uri /hastats
stats realm Haproxy statistics
stats auth system:hogehogepass
stats refresh 10s
!
frontend https_frontend
bind *:443 ssl crt /etc/ssl/certs/ast.app-sys.jp/ast.app-sys.jp-haproxy.pem
mode http
acl is_v1_api url_beg /v1
acl host_s3 hdr(host) -i swift3-r1nd1001.app-sys.jp
acl host_swift hdr(host) -i objectstore-r1nd1001.app-sys.jp
acl host_ote_s3 hdr(host) -i ote-swift3-r1nd1001.app-sys.jp
acl host_ote_swift hdr(host) -i ote-objectstore-r1nd1001.app-sys.jp
reqadd X-Forwarded-Proto: https
the Way of the OpenStack API Dragon
2) 公開API Endpoint: Reverse Proxy: swift
HAProxy (ver. 1.5.0)適用
use_backend swift_proxy_server if is_v1_api
use_backend swift_proxy_server if host_s3
use_backend swift_proxy_server if host_swift
use_backend repos_server if host_repos
default_backend null_server
!
backend swift_proxy_server
mode http
balance leastconn
option httpchk HEAD /healthcheck HTTP/1.0
option forwardfor
server s1 10.199.199.91:8080 weight 10 check inter 2000
server s2 10.199.199.92:8080 weight 10 check inter 2000
!
backend null_server
mode http
option httpchk HEAD / HTTP/1.0
option forwardfor
server n1 127.0.0.1:18080 check inter 2000
the Way of the OpenStack API Dragon
2) 公開API Endpoint: Reverse Proxy: swift
HAProxy (ver. 1.5.0)適用
!
こんな感じ
!
the Way of the OpenStack API Dragon
3) API versionの固定, JSON
API versionでURI filterで固定して通しています。
!
また、APIのrequest/responseフォーマットを
JSON(Default)で固定しちゃいました
=> XMLの処理を今は作ってない
=> http://developer.openstack.org/api-ref.html でも
XML見掛けなくなった
!
!
!
Format Accept Header Query Extension
ある場合
Default
JSON application/json .json Yes
XML application/xml .xml No
the Way of the OpenStack API Dragon
3) JSONのみだとマ…マズイ…(T∼;T)
Swift:
<< keystoneアクセスがXMLで実装されたクライアントソフト
が意外に多い
(ex: CloudBerry Explorer)
!
- S3 API module: swift3と同時に使われる場合があるので
XML必要な場合
- S3 clientとして先に作っていたclientのOpenStackへの
portingの場合、XMLのみの実装になっていることも
!
!
the Way of the OpenStack API Dragon
API公開での the Way of the OpenStack API Dragon は
betaなんで…
と言いつつも、動かないものがあったりとか
!
ex) python-cinderclient version違いで動いたり…
version. 1.0.7) 動く
version. 1.0.9) 動かない(Icehouse client)
=> endpoint のparseがうまく行ってない?
!
API Proxyでのパラメータ変換?
JSONの構成が違うのかな
the Way of the OpenStack API Dragon
API公開での the Way of the OpenStack API Dragon は
ということで
- Validation check
- L7:Reverse Proxy(Private Cloudでも利用可能)
でAPI Endpointを防御して、運用しています
!
the Way of the OpenStack API Dragon
!
!
俺達の戦いはこれからだ
the Way of the OpenStack API Dragon
API公開での the Way of the OpenStack API Dragon は
終 劇

More Related Content

What's hot

10分でわかる marathon-lb
10分でわかる marathon-lb10分でわかる marathon-lb
10分でわかる marathon-lb
Shuji Yamada
 
Using ngx_lua / lua-nginx-module in pixiv
Using ngx_lua / lua-nginx-module in pixivUsing ngx_lua / lua-nginx-module in pixiv
Using ngx_lua / lua-nginx-module in pixiv
Shunsuke Michii
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1Etsuji Nakai
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
 
OPNFV Handson Tokyo #1
OPNFV Handson Tokyo #1OPNFV Handson Tokyo #1
OPNFV Handson Tokyo #1
Mibu Ryota
 
ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツ
ShinsukeYokota
 
Ansible2とOpenStackの関係
Ansible2とOpenStackの関係Ansible2とOpenStackの関係
Ansible2とOpenStackの関係
Hideki Saito
 
Real world android akka
Real world android akkaReal world android akka
Real world android akka
Taisuke Oe
 
ログについて改めて考えてみた
ログについて改めて考えてみたログについて改めて考えてみた
ログについて改めて考えてみた
株式会社オプト 仙台ラボラトリ
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
Masaya Aoyama
 
ConfD で Linux にNetconfを喋らせてみた
ConfD で Linux にNetconfを喋らせてみたConfD で Linux にNetconfを喋らせてみた
ConfD で Linux にNetconfを喋らせてみた
Akira Iwamoto
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Kikunaga Taishi
 
Cloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラーCloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラー
nota-ja
 
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
takanori suzuki
 
Akka stream
Akka streamAkka stream
Akka stream
Masaki Toyoshima
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfg
Kentaro Ebisawa
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
Toshiaki Maki
 
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
akira6592
 
Ansible npstudy-shtsuchi
Ansible npstudy-shtsuchiAnsible npstudy-shtsuchi
Ansible npstudy-shtsuchi
Shishio Tsuchiya
 
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch LogsAWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
Amazon Web Services Japan
 

What's hot (20)

10分でわかる marathon-lb
10分でわかる marathon-lb10分でわかる marathon-lb
10分でわかる marathon-lb
 
Using ngx_lua / lua-nginx-module in pixiv
Using ngx_lua / lua-nginx-module in pixivUsing ngx_lua / lua-nginx-module in pixiv
Using ngx_lua / lua-nginx-module in pixiv
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
OPNFV Handson Tokyo #1
OPNFV Handson Tokyo #1OPNFV Handson Tokyo #1
OPNFV Handson Tokyo #1
 
ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツ
 
Ansible2とOpenStackの関係
Ansible2とOpenStackの関係Ansible2とOpenStackの関係
Ansible2とOpenStackの関係
 
Real world android akka
Real world android akkaReal world android akka
Real world android akka
 
ログについて改めて考えてみた
ログについて改めて考えてみたログについて改めて考えてみた
ログについて改めて考えてみた
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
 
ConfD で Linux にNetconfを喋らせてみた
ConfD で Linux にNetconfを喋らせてみたConfD で Linux にNetconfを喋らせてみた
ConfD で Linux にNetconfを喋らせてみた
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】
 
Cloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラーCloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラー
 
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
 
Akka stream
Akka streamAkka stream
Akka stream
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfg
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
 
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
 
Ansible npstudy-shtsuchi
Ansible npstudy-shtsuchiAnsible npstudy-shtsuchi
Ansible npstudy-shtsuchi
 
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch LogsAWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
 

Similar to JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon

CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/SwiftCloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swiftirix_jp
 
OpenShift v3 Technical Overview
OpenShift v3 Technical OverviewOpenShift v3 Technical Overview
OpenShift v3 Technical Overview
Nakayama Kenjiro
 
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
Naoto Gohko
 
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic BeanstalkAWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
Amazon Web Services Japan
 
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...Naoto Gohko
 
OpenFlow Controller lily
OpenFlow Controller lilyOpenFlow Controller lily
OpenFlow Controller lily
Kazuhiro Miyashita
 
OpenStackをさらに”使う”技術 概要と基礎操作
OpenStackをさらに”使う”技術 概要と基礎操作OpenStackをさらに”使う”技術 概要と基礎操作
OpenStackをさらに”使う”技術 概要と基礎操作
irix_jp
 
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
Naoto Gohko
 
AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
AWS Black Belt Tech シリーズ 2015 - Amazon API GatewayAWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
Amazon Web Services Japan
 
API Gateway / AWS CLI
API Gateway / AWS CLIAPI Gateway / AWS CLI
API Gateway / AWS CLI
Operation Lab, LLC.
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
Yoshifumi Kawai
 
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすOpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
KUNITO Atsunori
 
パブリッククラウドConoHaを使ってOpenStack APIを理解する
パブリッククラウドConoHaを使ってOpenStack APIを理解するパブリッククラウドConoHaを使ってOpenStack APIを理解する
パブリッククラウドConoHaを使ってOpenStack APIを理解する
Hironobu Saitoh
 
Apache Ambari Overview -- Hadoop for Everyone
Apache Ambari Overview -- Hadoop for EveryoneApache Ambari Overview -- Hadoop for Everyone
Apache Ambari Overview -- Hadoop for Everyone
Yifeng Jiang
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osakaNaotaka Jay HOTTA
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lispirix_jp
 
node-handlersocket
node-handlersocketnode-handlersocket
node-handlersocket
koichik
 
沢山のスマホサービス環境を カジュアルにセキュアに運用する
沢山のスマホサービス環境を カジュアルにセキュアに運用する沢山のスマホサービス環境を カジュアルにセキュアに運用する
沢山のスマホサービス環境を カジュアルにセキュアに運用する
Hirotomo Oi
 
10分で作る Node.js Auto Scale 環境 with CloudFormation
10分で作る Node.js Auto Scale 環境 with CloudFormation10分で作る Node.js Auto Scale 環境 with CloudFormation
10分で作る Node.js Auto Scale 環境 with CloudFormation
Kazuyuki Honda
 

Similar to JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon (20)

CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/SwiftCloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swift
 
OpenShift v3 Technical Overview
OpenShift v3 Technical OverviewOpenShift v3 Technical Overview
OpenShift v3 Technical Overview
 
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
 
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic BeanstalkAWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
 
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
 
OpenFlow Controller lily
OpenFlow Controller lilyOpenFlow Controller lily
OpenFlow Controller lily
 
OpenStackをさらに”使う”技術 概要と基礎操作
OpenStackをさらに”使う”技術 概要と基礎操作OpenStackをさらに”使う”技術 概要と基礎操作
OpenStackをさらに”使う”技術 概要と基礎操作
 
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
 
AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
AWS Black Belt Tech シリーズ 2015 - Amazon API GatewayAWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
 
API Gateway / AWS CLI
API Gateway / AWS CLIAPI Gateway / AWS CLI
API Gateway / AWS CLI
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
 
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすOpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
 
パブリッククラウドConoHaを使ってOpenStack APIを理解する
パブリッククラウドConoHaを使ってOpenStack APIを理解するパブリッククラウドConoHaを使ってOpenStack APIを理解する
パブリッククラウドConoHaを使ってOpenStack APIを理解する
 
Apache Ambari Overview -- Hadoop for Everyone
Apache Ambari Overview -- Hadoop for EveryoneApache Ambari Overview -- Hadoop for Everyone
Apache Ambari Overview -- Hadoop for Everyone
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lisp
 
node-handlersocket
node-handlersocketnode-handlersocket
node-handlersocket
 
沢山のスマホサービス環境を カジュアルにセキュアに運用する
沢山のスマホサービス環境を カジュアルにセキュアに運用する沢山のスマホサービス環境を カジュアルにセキュアに運用する
沢山のスマホサービス環境を カジュアルにセキュアに運用する
 
10分で作る Node.js Auto Scale 環境 with CloudFormation
10分で作る Node.js Auto Scale 環境 with CloudFormation10分で作る Node.js Auto Scale 環境 with CloudFormation
10分で作る Node.js Auto Scale 環境 with CloudFormation
 

More from Naoto Gohko

ODC 2020 : "Rocky 8"
ODC 2020 : "Rocky 8"ODC 2020 : "Rocky 8"
ODC 2020 : "Rocky 8"
Naoto Gohko
 
2019 0704 about ConoHa VM migration from C1 to C2
2019 0704 about ConoHa VM migration from C1 to C22019 0704 about ConoHa VM migration from C1 to C2
2019 0704 about ConoHa VM migration from C1 to C2
Naoto Gohko
 
serverless openstack 101
serverless openstack 101serverless openstack 101
serverless openstack 101
Naoto Gohko
 
2018 04-14-cockroachdb-20-now-available
2018 04-14-cockroachdb-20-now-available2018 04-14-cockroachdb-20-now-available
2018 04-14-cockroachdb-20-now-available
Naoto Gohko
 
2017 0715 osc17do conoha cloud osclient
2017 0715 osc17do conoha cloud osclient2017 0715 osc17do conoha cloud osclient
2017 0715 osc17do conoha cloud osclient
Naoto Gohko
 
2017 0306 Apache OpenWhisk starting
2017 0306 Apache OpenWhisk starting2017 0306 Apache OpenWhisk starting
2017 0306 Apache OpenWhisk starting
Naoto Gohko
 
Miracle Linux seminer Hatohol and ConoHa
Miracle Linux seminer Hatohol and ConoHaMiracle Linux seminer Hatohol and ConoHa
Miracle Linux seminer Hatohol and ConoHa
Naoto Gohko
 
2016 1214-dev-night-vol1-in-tanita
2016 1214-dev-night-vol1-in-tanita2016 1214-dev-night-vol1-in-tanita
2016 1214-dev-night-vol1-in-tanita
Naoto Gohko
 
OSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud image
OSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud imageOSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud image
OSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud image
Naoto Gohko
 
Openstack days taiwan 2016 0712
Openstack days taiwan 2016 0712Openstack days taiwan 2016 0712
Openstack days taiwan 2016 0712
Naoto Gohko
 
2016 0626 ubuntu 1604 LTS party LT
2016 0626 ubuntu 1604 LTS party LT2016 0626 ubuntu 1604 LTS party LT
2016 0626 ubuntu 1604 LTS party LT
Naoto Gohko
 
OpenStack ComputingはHyper-Convergedの夢を見るのか?
OpenStack ComputingはHyper-Convergedの夢を見るのか?OpenStack ComputingはHyper-Convergedの夢を見るのか?
OpenStack ComputingはHyper-Convergedの夢を見るのか?
Naoto Gohko
 
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
Naoto Gohko
 
2015 0807 ConoHa I am the bone of the OpenStack API CLI tool
2015 0807 ConoHa I am the bone of the OpenStack API CLI tool2015 0807 ConoHa I am the bone of the OpenStack API CLI tool
2015 0807 ConoHa I am the bone of the OpenStack API CLI tool
Naoto Gohko
 
Janog36 ConoHa: Making GSLB - OpenStack Designate and PowerDNS
Janog36 ConoHa: Making GSLB - OpenStack Designate and PowerDNSJanog36 ConoHa: Making GSLB - OpenStack Designate and PowerDNS
Janog36 ConoHa: Making GSLB - OpenStack Designate and PowerDNS
Naoto Gohko
 
Openstack summit walk DNSaaS 2015-0713 Summit LT
Openstack summit walk DNSaaS 2015-0713 Summit LTOpenstack summit walk DNSaaS 2015-0713 Summit LT
Openstack summit walk DNSaaS 2015-0713 Summit LT
Naoto Gohko
 
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
Naoto Gohko
 
Open stack swift is too Enterprise? 2014/12/01 advent cal
Open stack swift is too Enterprise?  2014/12/01 advent calOpen stack swift is too Enterprise?  2014/12/01 advent cal
Open stack swift is too Enterprise? 2014/12/01 advent cal
Naoto Gohko
 
TechOYAJI 2014 tokyo summer LT; CentOS7 and RDO Icehouse OpenStack
TechOYAJI 2014 tokyo summer LT;  CentOS7 and RDO Icehouse OpenStackTechOYAJI 2014 tokyo summer LT;  CentOS7 and RDO Icehouse OpenStack
TechOYAJI 2014 tokyo summer LT; CentOS7 and RDO Icehouse OpenStack
Naoto Gohko
 
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~
Naoto Gohko
 

More from Naoto Gohko (20)

ODC 2020 : "Rocky 8"
ODC 2020 : "Rocky 8"ODC 2020 : "Rocky 8"
ODC 2020 : "Rocky 8"
 
2019 0704 about ConoHa VM migration from C1 to C2
2019 0704 about ConoHa VM migration from C1 to C22019 0704 about ConoHa VM migration from C1 to C2
2019 0704 about ConoHa VM migration from C1 to C2
 
serverless openstack 101
serverless openstack 101serverless openstack 101
serverless openstack 101
 
2018 04-14-cockroachdb-20-now-available
2018 04-14-cockroachdb-20-now-available2018 04-14-cockroachdb-20-now-available
2018 04-14-cockroachdb-20-now-available
 
2017 0715 osc17do conoha cloud osclient
2017 0715 osc17do conoha cloud osclient2017 0715 osc17do conoha cloud osclient
2017 0715 osc17do conoha cloud osclient
 
2017 0306 Apache OpenWhisk starting
2017 0306 Apache OpenWhisk starting2017 0306 Apache OpenWhisk starting
2017 0306 Apache OpenWhisk starting
 
Miracle Linux seminer Hatohol and ConoHa
Miracle Linux seminer Hatohol and ConoHaMiracle Linux seminer Hatohol and ConoHa
Miracle Linux seminer Hatohol and ConoHa
 
2016 1214-dev-night-vol1-in-tanita
2016 1214-dev-night-vol1-in-tanita2016 1214-dev-night-vol1-in-tanita
2016 1214-dev-night-vol1-in-tanita
 
OSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud image
OSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud imageOSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud image
OSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud image
 
Openstack days taiwan 2016 0712
Openstack days taiwan 2016 0712Openstack days taiwan 2016 0712
Openstack days taiwan 2016 0712
 
2016 0626 ubuntu 1604 LTS party LT
2016 0626 ubuntu 1604 LTS party LT2016 0626 ubuntu 1604 LTS party LT
2016 0626 ubuntu 1604 LTS party LT
 
OpenStack ComputingはHyper-Convergedの夢を見るのか?
OpenStack ComputingはHyper-Convergedの夢を見るのか?OpenStack ComputingはHyper-Convergedの夢を見るのか?
OpenStack ComputingはHyper-Convergedの夢を見るのか?
 
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
 
2015 0807 ConoHa I am the bone of the OpenStack API CLI tool
2015 0807 ConoHa I am the bone of the OpenStack API CLI tool2015 0807 ConoHa I am the bone of the OpenStack API CLI tool
2015 0807 ConoHa I am the bone of the OpenStack API CLI tool
 
Janog36 ConoHa: Making GSLB - OpenStack Designate and PowerDNS
Janog36 ConoHa: Making GSLB - OpenStack Designate and PowerDNSJanog36 ConoHa: Making GSLB - OpenStack Designate and PowerDNS
Janog36 ConoHa: Making GSLB - OpenStack Designate and PowerDNS
 
Openstack summit walk DNSaaS 2015-0713 Summit LT
Openstack summit walk DNSaaS 2015-0713 Summit LTOpenstack summit walk DNSaaS 2015-0713 Summit LT
Openstack summit walk DNSaaS 2015-0713 Summit LT
 
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
 
Open stack swift is too Enterprise? 2014/12/01 advent cal
Open stack swift is too Enterprise?  2014/12/01 advent calOpen stack swift is too Enterprise?  2014/12/01 advent cal
Open stack swift is too Enterprise? 2014/12/01 advent cal
 
TechOYAJI 2014 tokyo summer LT; CentOS7 and RDO Icehouse OpenStack
TechOYAJI 2014 tokyo summer LT;  CentOS7 and RDO Icehouse OpenStackTechOYAJI 2014 tokyo summer LT;  CentOS7 and RDO Icehouse OpenStack
TechOYAJI 2014 tokyo summer LT; CentOS7 and RDO Icehouse OpenStack
 
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~
 

JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon

  • 1. the Way of the OpenStack API Dragon (2014/07/09, Shibuya GMO yours) GMOインターネット株式会社 システム本部 第2サービス開発部 オープンコンピューティングチーム  郷古直仁   openstack! Open source software to build public and private clouds. OpenStack ! 4th Birthday party “the Way of the OpenStack API Dragon”! ~GMOアプリクラウドのAPI公開への道~
  • 2. the Way of the OpenStack API Dragon Atlanta Summitから話題の Chuck Norris もともとUSではもうすでに慣用句らしい (wikipedia: チャック・ノリス・ファクト) なんで、the OpenStack API Dragon !??
  • 3. the Way of the OpenStack API Dragon 名誉海兵隊員だったりチェーンソーを素 手で受け止めたりするけど、最近では 炎のテキサスレンジャー 有名な初期の出演作は ドラゴンへの道 なんで、the Way of the OpenStack API Dragon !??
  • 4. the Way of the OpenStack API Dragon ということで、OpenStackのAPIを Public Network(the Internet)に公 開して、セキュリティを設定して利用で きるようにすることを、この場では the OpenStack API Dragon と設定します :) なんで、the Way of the OpenStack API Dragon !??
  • 5. the Way of the OpenStack API Dragon Atlanta summitのops Meetupで API Endpointをどうやって守るって話 題があったみたいです ! Atranta summit ops Meetup http://www.slideshare.net/inouetmko/josug20140619 the OpenStack API Dragon は
  • 6. the Way of the OpenStack API Dragon API Endpointを守る(Layer 7) Examples) ops Meetupより - mod_security - nginx - NetScaler etc. the OpenStack API Dragon は
  • 7. the Way of the OpenStack API Dragon 弊社環境でも同じようにやっています ! GMOアプリクラウドのOpenStack Havana環境ではこんな感じ ! API Endpointを守る(Layer 7) - nginx - HAProxy API Endpointを守る(Layer 7)
  • 8. the Way of the OpenStack API Dragon 今日のLT内容 きょうは、清楚かわいい座敷わらしが 応援団長のVPSのConoHa(Grizzly)の 話ではなく、
  • 9. the Way of the OpenStack API Dragon アザトかわいいといわれる座敷童が応 援団長の「GMOアプリクラウド」が オンプレミスの仮想化から、  OpenStack Hava を採用して、OpenStack APIを使える ようにした ドラゴンの道 のお話 今日のLT内容:GMOアプリクラウドOpenStack API公開について
  • 10. the Way of the OpenStack API Dragon 1) 課金処理が量計式ではなく、コントロールパネ ル(web GUI)の処理に依存 (nova bootとか無理) 2) 裏の会員処理と紐付いたコントロールパネル用 のWrapper API(RESTful)を作りこんでしまっ た (OpenStack APIとは形式違うw) 3) OpenStack自体にも手を入れすぎちゃった (HP Cloudの真壁さんのお話、参考になる) では、なぜConoHaではOpenStack APIが公開できなかったの?
  • 11. the Way of the OpenStack API Dragon たとえば、2) コンパネ用API(RESTful) by ConoHa こんなかんじに、全 く違うAPIでweb GUIが動き、その裏 でOpenStack APIがcallされてい るのがConoHa
  • 12. the Way of the OpenStack API Dragon ConoHa コンパネとAPI proxy, OpenStack API ConoHaコンパネAPIのアク セスの関係はこんな感じ ! できれば、今後は コンパネ API と 公開API の二重開発 みたいなことは避けたい コントロールパネル (IIS, .Net) API Proxy (httpd, php Framework: fuel php) Grizzly Nova API 会員システムAPI Grizzly Quantum API Grizzly Glance API ConoHaコンパネAPI 会員DB Grizzly Keystone API OpenStack API
  • 13. the Way of the OpenStack API Dragon そして、OpenStack Havanaでの開発 GMOアプリクラウド の OpenStack Havana化 ! それまでの反省から、ほとんどの 操作系をOpenStack APIのまま web GUIのコントロールパネル を開発することになった =>> その代わり、API公開を前提に、OpenStack API のValidation checkをコンパネのためにも作ることに
  • 14. the Way of the OpenStack API Dragon 1) OpenStack API validation proxy for webGUI API公開前提でConoHaで作ったコンパネAPIで はなく、OpenStack APIそのものにValidation checkを OpenStackの改変せずに 実装する =>> API Proxy方式 web GUIでも、API公開でも間違った値では、APIに到達する前 にエラーを返す(ex: 商品スペックにないストレージサイズとか) => API workerの負荷コスト削減
  • 15. the Way of the OpenStack API Dragon 1) OpenStack Havana API validation proxy for webGUI GMO Apps CloudのOpenStack API のアクセスの関係はこんな感じ コントロールパネル(httpd, php) API wrapper proxy (httpd, php Framework: fuel php) Havana Nova API 会員システムAPI Havana Quantum API Havana Glance API OpenStack API for input validation 会員DB Havana Keystone API OpenStack API Havana Cinder API Havana Ceilometer API =>> コンパネが公開後のOpenStack API と同じものにアクセスする想定で構成
  • 16. the Way of the OpenStack API Dragon 1) OpenStack Havana API validation proxy for API公開 GMO Apps CloudのOpenStack API のアクセスの関係はこんな感じ コントロールパネル(httpd, php) API wrapper proxy (httpd, php Framework: fuel php) Havana Nova API 会員システムAPI Havana Quantum API Havana Glance API OpenStack API for input validation 会員DB Havana Keystone API OpenStack API Havana Cinder API Havana Ceilometer API =>> コンパネが公開後のOpenStack API と同じものにアクセスする想定で構成 Endpoint L7:reverse proxy Havana Swift Proxy
  • 17. the Way of the OpenStack API Dragon 1) OpenStack Havana アプリクラウド公開API というわけで、2014/07/08にbetaと してまずは公開しました http://cloud.gmo.jp/docs ! コンパネから使えるOpenStack APIを 公開した(client API)ので、少ないです API: 31個
  • 18. the Way of the OpenStack API Dragon 1) OpenStack Havana アプリクラウド公開API
  • 19. the Way of the OpenStack API Dragon 2) 公開API Endpointのセキュリティ対策 Endpoint L7:reverse proxy そして、API Endpointの部分 => 公開なので、できればTCP 80 or 443で ! ! ! SSL(https): reverse proxyにやらせる (SSL Termination) ! => https(443 port)にしただけで、かなり変なアク セスはなくなる
  • 20. the Way of the OpenStack API Dragon 2) 公開API Endpoint: Reverse Proxyの選択 Reverse proxyにはたくさん種類 - nginx (ver. 1.6.0) - HAProxy (ver. 1.5.0) 他:Varnish, apache mod_proxy, etc. その中でもこの2つをなぜ選んだ? ! => 使い分け、適材適所、SSL可能
  • 21. the Way of the OpenStack API Dragon 2) 公開API Endpoint: Reverse Proxy: nginx nginx (ver. 1.6.0) - lua, mrubyと組み合わせたりできる(要rebuild) - 標準buildでもそこそこL7のロジックが書ける (公式 rpm repositoryのbuild) ! 欠点: request自体をtemporary dirにキャッシュしてからバッ クエンドに転送処理する => Glance image upload, Swiftなどのdata streamには向 かない (ex: 5GBのSwiftのupload: nginxのサーバ上に5GBのファイ ルが作成される)
  • 22. the Way of the OpenStack API Dragon 2) 公開API Endpoint: Reverse Proxy: HAProxy HAProxy (ver. 1.5.0) - ver. 1.5.0からSSL可能 - OpenStackでの構成でもLBaaSでも使われるのでお馴染み - そこそこ、ルールが書ける - socket to socketで処理するので、nginxのような temporary fileを作らない => Glance image upload, Swiftなどに適用可能 ! 欠点: config fileはinclude機能がない、 -f オプションで複数 ファイル指定はできるみたいだけど また、細かいロジックはnginxに負ける
  • 23. the Way of the OpenStack API Dragon 2) 公開API Endpoint: Reverse Proxyの適用 下記のように適用しています - nginx (ver. 1.6.0) - keystone: host filter, URI filter(API), SSL Termination, request limit filter (1MB, 3r/s) - nova: host filter, URI filter(API), SSL Termination - neutron: host filter, URI filter(API), SSL Termination - cinder: host filter, URI filter(API), SSL Termination - glance: host filter, URI filter(API: list images), SSL Termination - HAProxy (ver. 1.5.0) - Swift: host filter, URI filter, SSL Termination ! ! ! !
  • 24. the Way of the OpenStack API Dragon 2) 公開API Endpoint: Reverse Proxy: swift HAProxy (ver. 1.5.0)適用 [root@ext-obj-reverse-proxy haproxy]# cat haproxy.cfg ¦ grep -v '#' global log 127.0.0.1 local0 maxconn 131072 user haproxy group haproxy daemon stats socket /var/run/haproxy.sock mode 600 level admin stats timeout 2m tune.chksize 16384000 tune.bufsize 16384000 ! ! ! ! ! !
  • 25. the Way of the OpenStack API Dragon 2) 公開API Endpoint: Reverse Proxy: swift HAProxy (ver. 1.5.0)適用 defaults log global mode http option log-separate-errors log-format [%pid] [%Ts.%ms] %ac/%fc/%bc/%bq/%sc/%sq/%rc %Tq/%Tw/%Tc/%Tr/ %Tt %tsc %ci:%cp %fi:%fp %si:%sp %ft %sslc %sslv %{+Q}r %ST %b:%s "%CC" "%hr""%CS" "%hs" req_size=%U resp_size=%B option dontlognull retries 3 option redispatch maxconn 2000 contimeout 5000 clitimeout 50000 srvtimeout 50000 option forwardfor !
  • 26. the Way of the OpenStack API Dragon 2) 公開API Endpoint: Reverse Proxy: swift HAProxy (ver. 1.5.0)適用 listen hastats *:10080 mode http maxconn 64 stats enable stats uri /hastats stats realm Haproxy statistics stats auth system:hogehogepass stats refresh 10s ! frontend https_frontend bind *:443 ssl crt /etc/ssl/certs/ast.app-sys.jp/ast.app-sys.jp-haproxy.pem mode http acl is_v1_api url_beg /v1 acl host_s3 hdr(host) -i swift3-r1nd1001.app-sys.jp acl host_swift hdr(host) -i objectstore-r1nd1001.app-sys.jp acl host_ote_s3 hdr(host) -i ote-swift3-r1nd1001.app-sys.jp acl host_ote_swift hdr(host) -i ote-objectstore-r1nd1001.app-sys.jp reqadd X-Forwarded-Proto: https
  • 27. the Way of the OpenStack API Dragon 2) 公開API Endpoint: Reverse Proxy: swift HAProxy (ver. 1.5.0)適用 use_backend swift_proxy_server if is_v1_api use_backend swift_proxy_server if host_s3 use_backend swift_proxy_server if host_swift use_backend repos_server if host_repos default_backend null_server ! backend swift_proxy_server mode http balance leastconn option httpchk HEAD /healthcheck HTTP/1.0 option forwardfor server s1 10.199.199.91:8080 weight 10 check inter 2000 server s2 10.199.199.92:8080 weight 10 check inter 2000 ! backend null_server mode http option httpchk HEAD / HTTP/1.0 option forwardfor server n1 127.0.0.1:18080 check inter 2000
  • 28. the Way of the OpenStack API Dragon 2) 公開API Endpoint: Reverse Proxy: swift HAProxy (ver. 1.5.0)適用 ! こんな感じ !
  • 29. the Way of the OpenStack API Dragon 3) API versionの固定, JSON API versionでURI filterで固定して通しています。 ! また、APIのrequest/responseフォーマットを JSON(Default)で固定しちゃいました => XMLの処理を今は作ってない => http://developer.openstack.org/api-ref.html でも XML見掛けなくなった ! ! ! Format Accept Header Query Extension ある場合 Default JSON application/json .json Yes XML application/xml .xml No
  • 30. the Way of the OpenStack API Dragon 3) JSONのみだとマ…マズイ…(T∼;T) Swift: << keystoneアクセスがXMLで実装されたクライアントソフト が意外に多い (ex: CloudBerry Explorer) ! - S3 API module: swift3と同時に使われる場合があるので XML必要な場合 - S3 clientとして先に作っていたclientのOpenStackへの portingの場合、XMLのみの実装になっていることも ! !
  • 31. the Way of the OpenStack API Dragon API公開での the Way of the OpenStack API Dragon は betaなんで… と言いつつも、動かないものがあったりとか ! ex) python-cinderclient version違いで動いたり… version. 1.0.7) 動く version. 1.0.9) 動かない(Icehouse client) => endpoint のparseがうまく行ってない? ! API Proxyでのパラメータ変換? JSONの構成が違うのかな
  • 32. the Way of the OpenStack API Dragon API公開での the Way of the OpenStack API Dragon は ということで - Validation check - L7:Reverse Proxy(Private Cloudでも利用可能) でAPI Endpointを防御して、運用しています ! the Way of the OpenStack API Dragon ! ! 俺達の戦いはこれからだ
  • 33. the Way of the OpenStack API Dragon API公開での the Way of the OpenStack API Dragon は 終 劇