KUSANAGI Runs on Dockerが何をもたらすのか、を紹介します
KUSANAGI RoDの紹介OSC 2019 Tokyo/SpringみやざきさとるKUSANAGIユーザ会
View Slide
アジェンダ⚫自己紹介⚫KUSANGIについて⚫KUSANAGI Run on Dockerとは⚫KUSANAGI RoDがもたらすもの⚫KUSANAGI RoDの今後
自己紹介◦KUSANAGIを作ってる人◦ 好きなOS: Solaris◦ 好きなFS: ZFS◦ 好きな仮想化: Solaris Zonesatoru.miyazaki.31@s_miyaza宮﨑悟MIYAZAKI, Satoru
超高速WordPress仮想マシン「KUSANAGI」マスコットキャラクター 草薙 沙耶KUSANAGIについて
KUSANAGIとは⚫超高速WordPress仮想マシン⚫16の主要なクラウドプロバイダで提供⚫インスタンス料金のみで利用可能⚫GPLv2で提供⚫WordPress以外のLAMP環境も使用可能⚫LAMP⚫Concrete5⚫Drupal7/8⚫Rails
WordPressとは⚫圧倒的シェアを持つグローバルスタンダードCMS⚫トップ1,000万サイト中 33.2%がWordPressを利用33.2%=世界の約1/3がWordPress⚫CMSでは60.1%がWordPressを使用33%67%WordPress OthersW3Techs.com調べ
とにかく早いKUSANAGI⚫今お使いのWordPressサイトの、最大約17倍の高速化を実現!!⚫表示に1秒かかっていたページが、約20ミリ秒まで高速化!!!17x Fast!!!
セキュリティもスゴイKUSANAGI⚫サイトのHTTPSを強力に推進⚫Let's EncryptによるSSL証明書対応⚫HTTP/2に対応⚫パイプライン化とストリーム多重化⚫HTTPヘッダの圧縮⚫コンテンツ種類による優先度設定⚫TLS1.3に対応⚫ハンドシェイクの暗号化強化と効率化⚫古い暗号化スイートの排除
超高速WordPress仮想マシン「KUSANAGI」マスコットキャラクター 草薙 沙耶KUSANAGI Run on Dockerとは
KUSANAGI をDockerで動かす⚫KUSANAGI Run on Docker(以下RoD)は、Dockerマシン上で動作するWordPressの仮想化⚫ KUSANAGIの構成をDockerマシン上で再現⚫docker-machine、docker-composeを使用⚫Docker ImageはDockerHubにて公開中https://hub.docker.com/r/primestrategy/
Dockerとは⚫Docker=コンテナ型仮想化⚫ホストOSからリソース(プロセス)のみを分離=準仮想化⚫ホストOSと同じカーネルで動作する=オーバーヘッドなし⚫Dockerは、アプリケーションコンテナ=アプリケーションを動作させるためのコンテナ⚫IaaSの殆どは完全仮想化⚫ホストOSとは違うOS(=カーネル)が動作⚫エミュレーションを使用=オーバヘッドあり
Dockerの特徴⚫Docker イメージの利用⚫1サービスをまとめたもの=イメージ⚫複数サービスが必要なときは、複数イメージを使用⚫Docker Hubなどのイメージリポジトリが用意される⚫不要なファイルが必要ない=セキュア⚫コンテナ型仮想化の特徴⚫高速起動⚫リソース使用量が少ない⚫再利用が容易⚫イメージのレイヤ構造が利用可能⚫あるイメージに設定追加して別サービスが使用可能
KUSANAGI RoDの基本構成docker-machineNGINXApachePHP7 MySQLDataClient PC• docker• docker-machine• docker-composehttp/httpsログ収集(journaldなど)config
KUSANAGI RoDの特徴(1)軽量LinuxOSの採用⚫Alpine Linux3.9、Ubuntu(18.04)ベースのイメージで構成⚫NGINX-1.15.8OpenSSL1.1.1a⚫Apache httpd-2.4.38OpenSSL1.1.1a⚫PHP7.3.2⚫MariaDB 10.4.2Ubuntu Bionicベース⚫ftpd⚫config(WPCLI)WordPress標準イメージ
KUSANAGI RoDの特徴(2)設定の簡易さ⚫Docker-machineによる外部Dockerのサポート⚫デフォルトはlocalhostでのDocker起動⚫docker-composeによる複数Dockerイメージの管理⚫docker-machineを指定することで、外部のDockerマシンを利用可能⚫設定ファイルの生成/管理⚫Dockerイメージは、環境変数により設定変更可能⚫環境変数をファイルに書くことで容易に設定変更⚫docker-composeの設定ファイルdocker-composeは、コマンドで実施
KUSANAGI RoDの特徴(3)自由な構成管理⚫自由な構成⚫Webサーバとして、NGINXかApache httpd の選択可能⚫デフォルトのDBはMariaDB⚫外部のDBを利用可能(DBaas=DB as a Serviceを含む)⚫FTPなしの構成可能=外部サイトからの更新を不可にする⚫Gitによる版管理⚫生成したWordPressデータは、ローカルディスクとDockerイメージ間で同期可能⚫WordPress DBデータもimport/export可能⚫同期したデータを、gitで版管理
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鍵ペア指定可能
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)
超高速WordPress仮想マシン「KUSANAGI」マスコットキャラクター 草薙 沙耶KUSANAGI RoDがもたらすもの
物理サーバ・IaaSDBサービスPHPサービスhttpサービスKUSANAGI RoDで何ができるか⚫密結合サービスの分離⚫LAMPスタック=Linux+Apache(NGINX)+MySQL+PHP⚫KUSANAGI RoDに移行する→密結合したLAMPスタックのサービスを分離httpサービスPHPサービスDBサービスData物理サーバ・IaaShttpd php DBData
密結合から疎結合へ⚫KUSANAGIでもクラスタ構成は可能⚫DBのクラスタ=Garela Cluster⚫データ同期をlsyncで実施⚫サーバ単位でのクラスタ構築→密結合でスケールしにくい⚫スケールアウトしやすい構成へ⚫サービス毎にスケールできる⚫ボトルネックになるサービスだけを増強⚫サービス毎にバージョンアップしやすい構成⚫ローリングリリース
なぜ疎結合にするのか⚫いまはスケールアップしにくい環境にある⚫CPUスピードが上がらない⚫メモリを増やすのにも限界がある⚫CPUもスケールアウトの時代(メニーコアの台頭)⚫本当に欲しいものはCPUパワーですか?⚫サービスが継続できる事が重要⚫接続スピード=CPUパワーで解決⚫接続数=CPUの数で解決できる⚫CPUの数を増やすことで、CPU1つあたりの負荷を低下
疎結合サービス化⚫複数クラウドサービスの併用⚫ハードウェアからの解放⚫スムーズなスケール構成⚫本当に必要なサービスを顧客に届ける
開発・デプロイしやすい構成⚫開発環境と本番環境の分離⚫gitのbranch⚫docker-machineの切替⚫ブルー・グリーンデプロイ開発環境本番環境ステージング環境
超高速WordPress仮想マシン「KUSANAGI」マスコットキャラクター 草薙 沙耶KUSANAGI RoDの今後
KUSANAGI RoDは絶賛開発続行中⚫2月リリースできなかったよ…orz⚫現在、WordPressに注力中⚫WordPress以外(LAMP、concrete5、Drupal、Rails)も続々⚫KUSANAGI RoDは、すべてGithubで開発中です
今後の流れ⚫まずは正式版リリース(近日中)⚫WordPress以外の対応(近日中)⚫各種クラウドでの検証(近日中)⚫CaaS(Container as a Service)への対応(?)⚫KaaS(Kubernetes as a Service)への対応(?)⚫CI/CDツールとの連携(?)