さくらのクラウドとDocker Swarm Modeで誰でもわかる簡単デプロイ2019-12-23@さくらの聖夜2019©SAKURA internet Inc.さくらインターネット株式会社執行役員 技術推進統括担当 兼 CISO江草 陽太
View Slide
⾃⼰紹介2【所属等】さくらインターネット株式会社 新卒入社執行役員 技術推進統括担当 兼 CISO【開発】• さくらのVPSAPI/DB/制御システム担当• sakura.ioハードウエア仕様、ファームウエア開発システム設計、開発、インフラ設計、構築• 社内システム/データセンター自動化• さくらのエンジニアリングラボ【その他】• CSAJ U22プログラミングコンテスト審査員• Home NOC Operators’ Group (AS59105)@chibiegg
⾃⼰紹介3【経歴】• ロボカップジュニア (中学・高校) / NHK大学ロボコン• 大阪大学工学部電子情報工学科情報通信工学専攻• 個人事業主• 大阪大学大学院工学研究科中退• SECCON CTF 2014 国内4位• ISUCON5/ISUSON7/ISUCON8本戦、ISUCON9問題作成• ICTSC7 大人チーム【専門】• ソフトウエアエンジニア• NW/SC/DBスペシャリスト• 回路設計/組み込みソフトウエア【趣味】旅行/温泉/写真/電子工作/プログラミング/かわいい服@chibiegg
よくあるアプリケーション4NginxdjangoRedisPostgreSQL
よく使うミドルウエア5• Nginx• リバースプロキシと静的ファイル配信• Django• Webアプリケーション本体• Redis/Memcached• グラフデータ等のキャッシュ• PostgreSQL/MariaDB• データベース
古典的な⽅法でのデプロイ6• パッケージのインストール• posrgresql-10, python3-pip, redis, nginx• ソースコードを持って来る• Pythonパッケージをインストールする• 各種設定ファイルを書く• データベースをセットアップする• サービス登録する
2019/12/23 ©SAKURA internet Inc. 7開発にDocker Composeを使う
開発にDocker Composeを使う8• 開発環境は⼿元のmacOSなど• いろんな開発を並⾏して⾏うため、環境構築が⼤変• データベース、Redis、Pythonのバージョン、etc…• Docker Composeを使うことで簡単に• コンテナを使うため独⽴した環境が⽤意できる• 他の環境に影響しない、壊さない• 初めて実⾏する⼈もコマンド2つ• `docker-compose build` `docker-compose up` のみ• docker-compose.ymlに全て書いてある• 削除も⼀⾏ `docker-compose rm`
開発にDocker Composeを使う9• git clone [email protected]:isucon/isucon9-portal.git• cd isucon9-portal• docker-compose build• docker-compose up• http://localhost:8000/ を開く
2019/12/23 ©SAKURA internet Inc. 10Docker Composeでのデプロイ〜1台だけで動かす〜
Docker Composeでのデプロイ11Docker ComposeとSystemdを使う• パッケージのインストール• docker, docker-compose• ソースコードを持って来る• docker-compose.yml が含まれている• Systemdにサービス登録する
1台によるDocker Composeでの課題12• ソースコード更新の時に、ダウンタイムが発⽣する• イメージビルドや起動にかかる時間による↓ローリングアップデートあるいはブルー・グリーンデプロイが欲しい
2019/12/23 ©SAKURA internet Inc. 13Docker Swarm Modeでのデプロイ〜複数台で動かす〜
Docker Swarm Mode14サーバOSDockerEngineApp App一台でのDocker Composeサーバ サーバ サーバOS OS OSDockerEngineDockerEngineDockerEngineApp App App App App AppDocker Cluster 管理レイヤDocker Swarm Modeオーケストレーションサービス検出・クラスタ管理Dockerのコンテナ管理
Docker Swarm Modeでのデプロイ15• Docker Swarmのインストール• ⼿作業でも簡単• Ansibleで⾃動化も簡単• ソースコードを持って来る• docker stack deploy コマンドで設定を反映• イメージのバージョンを変えるとローリングアップデートされる!
注意点16• 永続化データがあるアプリケーションはコンテナで実⾏しない• データベースはDocker外で起動する• NFSなどを利⽤する⽅法もある
Docker Swarm ⾃体の使い⽅は…17https://www.slideshare.net/zembutsu/introduction-to-docker-swarm
さくらのクラウドで実環境でも使える構成を紹介18エンハンスドLBNginxSwarm WorkerSwarm ManagerDBアプライアンススイッチ 192.168.0.0/24https://www.example.com/ポート番号毎にアプリケーションをデプロイし、Nginxでリバースプロキシするといい感じSSLはLet’s Encryptで自動更新!HTTP/2にも対応!
さくらのクラウドで実環境でも使える構成を紹介19エンハンスドLBSwarm Worker Swarm ManagerDBアプライアンススイッチ 192.168.0.0/24https://www.example.com/ポート番号毎にアプリケーションをデプロイし、ELBのルール機能でリバースプロキシルールベースロードバランスに対応!
2019/12/23 ©SAKURA internet Inc. 20One more thing ...
2019/12/23 ©SAKURA internet Inc. 21たしかに!
2019/12/23 ©SAKURA internet Inc. 22さくらのエンジニアリングラボ
2019/12/23 ©SAKURA internet Inc. 23どんどん新しいサービスをプロトタイピングし早期のタイミングでお客様にも直接使っていただく
2019/12/23 ©SAKURA internet Inc. 24わたしも作るか…
2019/12/23 ©SAKURA internet Inc. 25金曜日
2019/12/23 ©SAKURA internet Inc. 27土曜日
2019/12/23 ©SAKURA internet Inc. 28日曜日
2019/12/23 ©SAKURA internet Inc. 29火曜日
2019/12/23 ©SAKURA internet Inc. 30先週
2019/12/23 ©SAKURA internet Inc. 31先週水曜日
2019/12/23 ©SAKURA internet Inc. 32今日
2019/12/23 ©SAKURA internet Inc. 33ということは
2019/12/23 ©SAKURA internet Inc. 34今⽇からさくらのクラウドでご利⽤いただけます
2019/12/23 ©SAKURA internet Inc. 35今⽇からさくらのクラウドでご利⽤いただけます
2019/12/23 ©SAKURA internet Inc. 36今⽇のAdvent Calendarで仕組みを紹介していますPrivate Docker Container Registryサービスを作った話https://qiita.com/chibiegg/private/746e0825c602f947ab1c