Upgrade to Pro — share decks privately, control downloads, hide ads and more …

KUSANAGI RoDの紹介

KUSANAGI RoDの紹介

KUSANAGI Runs on Dockerが何をもたらすのか、を紹介します

Satoru MIYAZAKI

February 23, 2019
Tweet

More Decks by Satoru MIYAZAKI

Other Decks in Technology

Transcript

  1. KUSANAGI RoDの紹介
    OSC 2019 Tokyo/Spring
    みやざきさとる
    KUSANAGIユーザ会

    View full-size slide

  2. アジェンダ
    ⚫自己紹介
    ⚫KUSANGIについて
    ⚫KUSANAGI Run on Dockerとは
    ⚫KUSANAGI RoDがもたらすもの
    ⚫KUSANAGI RoDの今後

    View full-size slide

  3. 自己紹介
    ◦KUSANAGIを作ってる人
    ◦ 好きなOS: Solaris
    ◦ 好きなFS: ZFS
    ◦ 好きな仮想化: Solaris Zone
    satoru.miyazaki.31
    @s_miyaza
    宮﨑悟
    MIYAZAKI, Satoru

    View full-size slide

  4. 超高速WordPress仮想マシン「KUSANAGI」
    マスコットキャラクター 草薙 沙耶
    KUSANAGIについて

    View full-size slide

  5. KUSANAGIとは
    ⚫超高速WordPress仮想マシン
    ⚫16の主要なクラウドプロバイダで提供
    ⚫インスタンス料金のみで利用可能
    ⚫GPLv2で提供
    ⚫WordPress以外のLAMP環境も使用可能
    ⚫LAMP
    ⚫Concrete5
    ⚫Drupal7/8
    ⚫Rails

    View full-size slide

  6. WordPressとは
    ⚫圧倒的シェアを持つグローバルスタンダードCMS
    ⚫トップ1,000万サイト中 33.2%が
    WordPressを利用
    33.2%=世界の約1/3がWordPress
    ⚫CMSでは60.1%がWordPressを使用
    33%
    67%
    WordPress Others
    W3Techs.com調べ

    View full-size slide

  7. とにかく早いKUSANAGI
    ⚫今お使いのWordPressサイトの、
    最大約17倍の高速化を実現!!
    ⚫表示に1秒かかっていたページが、
    約20ミリ秒まで高速化!!!
    17x Fast!!!

    View full-size slide

  8. セキュリティもスゴイKUSANAGI
    ⚫サイトのHTTPSを強力に推進
    ⚫Let's EncryptによるSSL証明書対応
    ⚫HTTP/2に対応
    ⚫パイプライン化とストリーム多重化
    ⚫HTTPヘッダの圧縮
    ⚫コンテンツ種類による優先度設定
    ⚫TLS1.3に対応
    ⚫ハンドシェイクの暗号化強化と効率化
    ⚫古い暗号化スイートの排除

    View full-size slide

  9. 超高速WordPress仮想マシン「KUSANAGI」
    マスコットキャラクター 草薙 沙耶
    KUSANAGI Run on Docker
    とは

    View full-size slide

  10. KUSANAGI をDockerで動かす
    ⚫KUSANAGI Run on Docker(以下RoD)は、
    Dockerマシン上で動作するWordPressの仮想化
    ⚫ KUSANAGIの構成をDockerマシン上で再現
    ⚫docker-machine、docker-composeを使用
    ⚫Docker ImageはDockerHubにて公開中
    https://hub.docker.com/r/primestrategy/

    View full-size slide

  11. Dockerとは
    ⚫Docker=コンテナ型仮想化
    ⚫ホストOSからリソース(プロセス)のみを分離=準仮想化
    ⚫ホストOSと同じカーネルで動作する=オーバーヘッドなし
    ⚫Dockerは、アプリケーションコンテナ
    =アプリケーションを動作させるためのコンテナ
    ⚫IaaSの殆どは完全仮想化
    ⚫ホストOSとは違うOS(=カーネル)が動作
    ⚫エミュレーションを使用=オーバヘッドあり

    View full-size slide

  12. Dockerの特徴
    ⚫Docker イメージの利用
    ⚫1サービスをまとめたもの=イメージ
    ⚫複数サービスが必要なときは、複数イメージを使用
    ⚫Docker Hubなどのイメージリポジトリが用意される
    ⚫不要なファイルが必要ない=セキュア
    ⚫コンテナ型仮想化の特徴
    ⚫高速起動
    ⚫リソース使用量が少ない
    ⚫再利用が容易
    ⚫イメージのレイヤ構造が利用可能
    ⚫あるイメージに設定追加して別サービスが使用可能

    View full-size slide

  13. KUSANAGI RoDの基本構成
    docker-machine
    NGINX
    Apache
    PHP7 MySQL
    Data
    Client PC
    • docker
    • docker-machine
    • docker-compose
    http/https
    ログ収集
    (journaldなど)
    config

    View full-size slide

  14. KUSANAGI RoDの特徴(1)
    軽量LinuxOSの採用
    ⚫Alpine Linux3.9、Ubuntu(18.04)ベースのイメージで構成
    ⚫NGINX-1.15.8
    OpenSSL1.1.1a
    ⚫Apache httpd-2.4.38
    OpenSSL1.1.1a
    ⚫PHP7.3.2
    ⚫MariaDB 10.4.2
    Ubuntu Bionicベース
    ⚫ftpd
    ⚫config(WPCLI)
    WordPress標準イメージ

    View full-size slide

  15. KUSANAGI RoDの特徴(2)
    設定の簡易さ
    ⚫Docker-machineによる外部Dockerのサポート
    ⚫デフォルトはlocalhostでのDocker起動
    ⚫docker-composeによる複数Dockerイメージの管理
    ⚫docker-machineを指定することで、外部のDockerマシンを利用可能
    ⚫設定ファイルの生成/管理
    ⚫Dockerイメージは、環境変数により設定変更可能
    ⚫環境変数をファイルに書くことで容易に設定変更
    ⚫docker-composeの設定ファイルdocker-composeは、
    コマンドで実施

    View full-size slide

  16. KUSANAGI RoDの特徴(3)
    自由な構成管理
    ⚫自由な構成
    ⚫Webサーバとして、NGINXかApache httpd の選択可能
    ⚫デフォルトのDBはMariaDB
    ⚫外部のDBを利用可能(DBaas=DB as a Serviceを含む)
    ⚫FTPなしの構成可能
    =外部サイトからの更新を不可にする
    ⚫Gitによる版管理
    ⚫生成したWordPressデータは、ローカルディスクとDockerイメージ間で同期可能
    ⚫WordPress DBデータもimport/export可能
    ⚫同期したデータを、gitで版管理

    View full-size slide

  17. KUSANAGI RoDの特徴(4)
    より高いセキュリティ
    ⚫不要パッケージの排除
    ⚫root権限でのサービス起動を排除
    ⚫Dockerイメージ作成時に脆弱性検査を実施
    ⚫Aqua社のMicroScannerを使用
    https://blog.aquasec.com/microscanner-free-image-vulnerability-scanner-for-developers
    ⚫Dockerイメージ作成時点での高い脆弱性なし!
    ⚫最新のOpenSSL1.1.1系採用
    ⚫chacha20-poly1305など、最新の暗号スイートに対応済み
    ⚫HTTP/2およびTLS1.3に対応
    ⚫SSL鍵
    ⚫Let's Encryptにより、フリーの認証済みSSL証明書を使用可能
    ⚫SSL鍵ペア指定可能

    View full-size slide

  18. KUSANAGI RoDの動作環境
    ⚫クライアント
    ⚫docker、docker-compose、docker-machine
    ⚫bash、binutils
    ⚫OSはLinuxなど(WSLでもOK)
    ⚫サーバ
    ⚫dockerサービスが動作すること
    ⚫docker-machineが対応していること
    (amazonec2, azure, digitalocean, exoscale, generic, google,
    hyperv, rackspace, openstack, softlayer, virtualbox,
    vmwarevcloudair, vmwarefusion, vmwarevsphere)

    View full-size slide

  19. 超高速WordPress仮想マシン「KUSANAGI」
    マスコットキャラクター 草薙 沙耶
    KUSANAGI RoDが
    もたらすもの

    View full-size slide

  20. 物理サーバ・IaaS
    DBサービス
    PHPサービス
    httpサービス
    KUSANAGI RoDで何ができるか
    ⚫密結合サービスの分離
    ⚫LAMPスタック=Linux+Apache(NGINX)+MySQL+PHP
    ⚫KUSANAGI RoDに移行する
    →密結合したLAMPスタックのサービスを分離
    httpサービス
    PHPサービス
    DBサービス
    Data
    物理サーバ・IaaS
    httpd php DB
    Data

    View full-size slide

  21. 密結合から疎結合へ
    ⚫KUSANAGIでもクラスタ構成は可能
    ⚫DBのクラスタ=Garela Cluster
    ⚫データ同期をlsyncで実施
    ⚫サーバ単位でのクラスタ構築→密結合でスケールしにくい
    ⚫スケールアウトしやすい構成へ
    ⚫サービス毎にスケールできる
    ⚫ボトルネックになるサービスだけを増強
    ⚫サービス毎にバージョンアップしやすい構成
    ⚫ローリングリリース

    View full-size slide

  22. なぜ疎結合にするのか
    ⚫いまはスケールアップしにくい環境にある
    ⚫CPUスピードが上がらない
    ⚫メモリを増やすのにも限界がある
    ⚫CPUもスケールアウトの時代(メニーコアの台頭)
    ⚫本当に欲しいものはCPUパワーですか?
    ⚫サービスが継続できる事が重要
    ⚫接続スピード=CPUパワーで解決
    ⚫接続数=CPUの数で解決できる
    ⚫CPUの数を増やすことで、CPU1つあたりの負荷を低下

    View full-size slide

  23. 疎結合サービス化
    ⚫複数クラウドサービスの併用
    ⚫ハードウェアからの解放
    ⚫スムーズなスケール構成
    ⚫本当に必要なサービスを顧客に届ける

    View full-size slide

  24. 開発・デプロイしやすい構成
    ⚫開発環境と本番環境の分離
    ⚫gitのbranch
    ⚫docker-machineの切替
    ⚫ブルー・グリーンデプロイ
    開発環境
    本番環境
    ステージング環境

    View full-size slide

  25. 超高速WordPress仮想マシン「KUSANAGI」
    マスコットキャラクター 草薙 沙耶
    KUSANAGI RoDの今後

    View full-size slide

  26. KUSANAGI RoDは絶賛開発続行中
    ⚫2月リリースできなかったよ…orz
    ⚫現在、WordPressに注力中
    ⚫WordPress以外(LAMP、concrete5、Drupal、Rails)も続々
    ⚫KUSANAGI RoDは、すべてGithubで開発中です

    View full-size slide

  27. 今後の流れ
    ⚫まずは正式版リリース(近日中)
    ⚫WordPress以外の対応(近日中)
    ⚫各種クラウドでの検証(近日中)
    ⚫CaaS(Container as a Service)への対応(?)
    ⚫KaaS(Kubernetes as a Service)への対応(?)
    ⚫CI/CDツールとの連携(?)

    View full-size slide