読者です 読者をやめる 読者になる 読者になる

はい!今やってます!

Work Pertly, Live Idly

DevOpsメモ的まとめ

DevOps関連情報のメモ的まとめ

サービスを構成する環境ごと切り替えて、サーバの状態を一定に保ちながら運用を続けるという取り組みがここ数ヶ月で流行っているそうなので、関連情報を少しまとめてみました。

ことはじめ

rebuildfm:25 Immutable Infrastructureの回(http://rebuild.fm/25/)で,Packerとserf,Dockerなど聞き慣れない名前が取り上げられています。

オペレーションコストの増大や、開発者毎に環境を用意出来ない事、トラッフィクに対するスケールアウトの問題については日々感じていて無駄だと思う事が多かったので、頭の整理の為にも関連記事をまとめています。

 

今業務でサーバ管理で思いつく改善点は下記の3つ、

 

・並列化されているアプリケーションサーバが落ちた時のオペレーションの簡略化

アプリケーションサーバへのデプロイを簡略化

・スケールアウトの簡略化

 

これが一体何の為に発生していて、どう解決すべきなのか答えの出ない悶々とした日々を過ごして、運用クソ野郎に成り下がっています。

現状維持の為に時間を裂きすぎていて、モノも作れないし成長出来てる気もしません。

突発的な環境の変化にサービスの質が耐えられないとまだこれも問題です。

 

Immutable Infrastructure

immutable Infrastructureとは

Immutable【形容詞】

が表す用に、状態が変更出来ないサーバ"「運用中のサーバに変更を加えない」っていうアプローチでサーバを管理するスタイル"だそうです。Chefやpappetが冪等性を担保しながら構成を管理するのに対して、環境全体を箱として用意しなおし、変更が加わる際にはその箱ごとバチっと切り替えるイメージ。BlueGreenDeployment(http://martinfowler.com/bliki/BlueGreenDeployment.html)という考え方が元になっています。

[参考]

     - Immutable Infrastructureについて

        (http://apatheia.info/blog/2013/08/10/immutable-infrastructure/)

     - 今さら聞けない Immutable Infrastructure - 昼メシ物語

        (http://blog.mirakui.com/entry/2013/11/26/231658)

 いままでのChefやpuppetなどの構成管理ツールについては、そのコンテナ単位の環境を組み立てるのにそのまま利用できるのだそうで、

すでに提供されている仕組みとしてはAWS Elastic Beanstalkやheroku(https://github.com/heroku/heroku)があるようです。ちなみにrebuildfmではこれを実現するサービスとしてDockerが取り上げられています。

 

     - クラウドプロバイダーの「dotCloud」が「Docker」へ企業名変更。コンテナ型仮想化ソフト「Docker」のビジネス立ち上げにフォーカス

        (http://www.publickey1.jp/blog/13/dotclouddockerdocker.html)

     - Jenkins with Docker

        (http://techblog.yahoo.co.jp/event/jenkins-with-docker/)

構成管理の3つの要素

とはいえDockerで言うところのコンテナの中身を構築する作業が無くなるわけではないので今まで通り構成管理は必要で、例えばXML一行書き換えるだけでVMへOSのインストールから始める必要があります。

構成管理の要素を段階的に3つの層にわけることができます。下記がそれぞれの役割りとツールの一例です。

 

Bootstrapping

        OSのインストール等のサーバ設定(vargrant, packer)

Configration

        ミドルウェアなどの設定(puppet, Chef, packer)

Appilication Deploy

        アプリケーションのデプロイ作業や、ロードバランサーの設定など、ミドルウェアの有機的な設定(Capistrano, fablic, serf)

 

Immutable Infrastructureを実現する上で、puppetやChefではオーバースペックなので軽量なOrchestration(構成管理)ツールが必要だという事もrebuildfmで議論されてたようです。サーバリストのマスタを持たせず、LBが自立的に自分にぶら下がってるWEBサーバ群をリスト化する処理でserf等が登場し始めているという話でした。※やっとつながってきた。 

いろいろな構成管理ツール

Linuxサーバ構築ツールまとめ

(http://ngsw.jp/2014/02/11/serv/1084.html)

 

Vagrant (http://www.vagrantup.com/)

     - 仮想環境構築ツールvagrantで開発環境を仮想マシン上に自動作成する

        (http://knowledge.sakura.ad.jp/tech/1552/)

 

Packer (http://www.packer.io/downloads.html)

     - [速報]Packerで様々な仮想マシンのテンプレートを作成する

        (http://www.ryuzee.com/contents/blog/6697)

     - PackerでCentOS6.5(x86_64)のboxを作成

        (http://ngsw.jp/2014/02/11/serv/1084.html)

 

Ansible (http://www.ansible.com/home)

     - Ansible GitHub

        (https://github.com/ansible/ansible)

     - 構成管理ツールAnsibleについて

        (http://apatheia.info/blog/2013/04/06/about-ansible/)

     - 入門Ansible

        (http://www.slideshare.net/takushimizu/ansible-26200860)

 

serf (http://www.serfdom.io/)

     - 正月休みだしserf触ってみた

        (http://blog.livedoor.jp/sonots/archives/35397486.html)

     - github

        (https://github.com/hashicorp/serf

おもったこと

     - 本番環境のBlue-GreenDeployentの仕組みのプロトタイプを作っていた

        (http://shibayu36.hatenablog.com/entry/2013/12/21/145415)

マスタレスとかオートスケールとか、ミニマルに自立していくシステムを想像すると、とてもかっこいい。