Swift HA 構成を Chef でデプロイ

こんにちは。@jedipunkz です。 最近 Chef で OpenStack をデプロイすることばかりに興味持っちゃって、他のことも やらんとなぁと思っているのですが、せっかくなので Swift HA 構成を Chef でデプロ イする方法を書きます。 Swift って分散ストレージなのに HA ってなんよ!と思われるかもしれませんが、ご存 知の様に Swift はストレージノード (accout, object, container) とプロキシノード に別れます。今回紹介する方法だとプロキシノードを Keepalived と Haproxy で HA、 また MySQL も KeepAlived で HA の構成に出来ました。いつものように RackSpace 管 理の Cookbooks を使っています。 参考資料 http://www.rackspace.com/knowledge_center/article/openstack-object-storage-configuration 構成 構成は簡単に記すと下記のようになります。特徴としては… swift-proxy01, swift-proxy02 で HA。VRRP + LB な構成。 swift-proxy01 で git サーバ稼働。Rings 情報を管理。 swift-storageNN がストレージノード OS は Ubuntu server 12.04 です。 |--------- VRRP + Load Balancer ------| +-----------------+ +-----------------+ +-----------------+ +-----------------+ +-----------------+ | swift-proxy01 | | swift-proxy02 | | swift-storage01 | | swift-storage02 | | swift-storage03 | +-----------------+ +-----------------+ +-----------------+ +-----------------+ +-----------------+ | | | | | +-------------------+-------------------+-------------------+-------------------+------------------ | | +-----------------+ +-----------------+ | chef workstation| | chef server | +-----------------+ +-----------------+ 絵は書く意味なかったか…。 ...

OpenStack HA 構成を Chef でデプロイ

こんにちは。@jedipunkz です。 OpenStack を運用する中でコントローラは重要です。コントローラノードが落ちると、 仮想マシンの操作等が利用出来ません。コントローラの冗長構成を取るポイントは公式 wiki サイトに記述あるのですが PaceMaker を使った構成でしんどいです。何より運用 する人が混乱する仕組みは避けたいです。 RackSpace 社の管理している Chef Cookbooks の Roles に ‘ha-controller1’, ‘ha-controller2’ というモノがあります。今回はこれを使った HA 構成の構築方法に ついて書いていこうかと思います。 構成 最小構成を作りたいと思います。HA のためのコントローラノード2台, コンピュートノー ド1台, Chef ワークショテーション1台, Chef サーバノード1台。 +----------------+----------------+----------------+----------------+--------------- public network | | | eth0 | | 10.0.0.0/24 +--------------+ +--------------+ +--------------+ +--------------+ +--------------+ | controller01 | | controller01 | | compute01 | | chef server | | workstation | +--------------+ +--------------+ +--------------+ +--------------+ +--------------+ | eth1 +------------------------------------------------- fixed range network 172.16.0.0/24 特徴 ‘controller01’, ‘controller02’ で HA 化コントローラ ‘compute01’ はコンピュートノード ‘chef server’ は Chef サーバ、Chef11 推奨 ほとんどの作業を行う ‘workstaion’ は Chef ワークステーション nova-network 構成 Chef サーバの構築 Chef サーバの構築方法は本題から外れるので割愛します。今は Omnibus インストーラで一発です。 ...

Chef で OpenStack デプロイ

こんにちは。@jedipunkz です。 前回の記事で OpenCenter を使った OpenStack デプロイを行いましたが、デプロイの 仕組みの実体は Opscode Chef です。慣れている人であれば Chef を単独で使った方が よさそうです。僕もこの方法を今後取ろうと思っています。 幾つかの構成を試している最中ですが、今回 nova-network を使ったオールインワン構 成を作ってみたいと思います。NIC の数は1つです。ノート PC や VPS サービス上にも 構築できると思いますので試してみてください。 今回は Chef サーバの構築や Knife の環境構築に関しては割愛します。 また全ての操作は workstation ノードで行います。皆さんお手持ちの Macbook 等です。 デプロイする先は OpenStack をデプロイするサーバです。 手順 Chef Cookbook を取得 RackSpace 社のエンジニアがメンテナンスしている Chef Cookbook を使います。各 Cookbook が git submodule 化されているので –recursive オプションを付けます。 % git clone https://github.com/rcbops/chef-cookbooks.git ~/openstack-chef-repo % cd openstack-chef-repo ‘v4.0.0’ ブランチをチェックアウト master ブランチは今現在 (2013/07/08) folsom ベースの構成になっているので ‘grizzly’ のためのブランチ ‘v4.0.0’ をローカルにチェックアウトします。 ...

内部で Chef を使っている OpenCenter で OpenStack 構築

こんにちは。@jedipunkz です。 第13回 OpenStack 勉強会に参加してきました。内容の濃い収穫のある勉強会でした。 参加してよかった。特にえぐちさんの OpenCenter に関するプレゼン (下記のスライド 参照のこと) には驚きました。ちょうど当日 RackSpace のエンジニアが管理している github 上の Chef Cookbooks を使って OpenStack 構築できたぁ!と感動していたのに、 その晩のうちに Chef を使って GUI で! OpenStack が自動構築出来るだなんて…。 えぐちさんのスライド資料はこちら。 http://www.slideshare.net/guchi_hiro/open-centeropenstack 早速、私も手元で OpenCenter 使ってみました。えぐちさん、情報ありがとうございましたー。 実は私 としては Chef 単体で OpenStack を構築したいのですが、OpenCenter がどう Cookbook や Roles, Environment を割り当てているのか知りたかったので、 OpenCenter を使って構築してみました。今回はその準備。今日は OpenCenter で皆さ んも OpenStack を構築できるようキャプチャ付きで方法を紹介しますが、次の機会に Chef 単体での OpenStack の構築方法を紹介出来ればいいなぁと思っています。 構成 +---------------+---------------+---------------+---------------+-------------- public network |eth0 |eth0 |eth1 |eth1 | eth1 |10.200.10.11 |10.200.10.12 |10.200.10.13 |10.200.10.14 |10.200.10.15 +-------------+ +-------------+ +-------------+ +-------------+ +-------------+ | opencenter | | oc-chef | |oc-controller| | oc-compute01| | oc-compute02| +-------------+ +-------------+ +-------------+ +-------------+ +-------------+ |10.200.9.14 |10.200.9.15 | eth0 |eth0 +---------------+-------------- vm network 5台使ってみた 全てのノードでインターネットへの経路を public network に向ける VM が接続する br100 ブリッジは eth0 にバインドした VM からインターネットへのアクセスは oc-computeNN が NAT する oc-chef は Chef Server ! OpenCenter の構築 構築は… ...

Sensu 監視システムを Chef で制御

こんにちは。@jedipunkz です。 自動化の基盤を導入するために色々調べているのですが、監視も自動化しなくちゃ!と いうことで Sensu を調べてたのですが Chef との相性バッチリな感じで、自分的にイ ケてるなと思いました。 公式サイト http://www.sonian.com/cloud-monitoring-sensu/ ドキュメント http://docs.sensuapp.org/0.9/index.html 開発元が予め Chef の Cookbook (正確にはラッパー Cookbook 開発のための Cookbook で Include して使う) を用意してくれていたり、インストールを容易にする ための Omnibus 形式のパッケージの提供だったり。Omnibus なのでインストールと共 に Sensu が推奨する Ruby 一式も一緒にインストールされます。Chef と同じですね。 今回紹介したいのは、Chef で Sensu を構築・制御する方法です。 +--------------+ +--------------+ | chef-server | | workstation | +--------------+ +--------------+ | | +----------------+ | +--------------+ | sensu-server | +--------------+ | +----------------+----------------+----------------+ | | | | +--------------+ +--------------+ +--------------+ +--------------+ | sensu-client | | sensu-client | | sensu-client | | sensu-client | ..> +--------------+ +--------------+ +--------------+ +--------------+ | service node | | service node | | service node | | service node | +--------------+ +--------------+ +--------------+ +--------------+ この構成の処理の流れとしては… ...

Chef を Ruby コード内で利用する

こんにちは。@jedipunkz です。 require ‘chef’ して Ruby コードの中で chef を利用したいと思って色々調べていた のですが、そもそもリファレンスが無くサンプルコードもごくわずかしかネット上に見 つけられない状態でした。結局ソースコードを読んで理解していく世界なわけですが、 サンプルコードが幾つかあると他の人に役立つかなぁと思い、ブログに載せていこうか なぁと。 まず Chef サーバへアクセスするためには下記の情報が必要です。 ユーザ名 ユーザ用のクライアント鍵 Chef サーバの URL これらは Chef::Config で記していきます。 では早速サンプルコードです。まずは data bags 内データの一覧を取得するコードで す。data bags 内のデータを全で取得し配列で表示します。 #!/usr/bin/env ruby require 'rubygems' require 'chef/rest' require 'chef/search/query' Chef::Config[:node_name]='user01' Chef::Config[:client_key]='/home/user01/user01.pem' Chef::Config[:chef_server_url]="https://10.200.9.22" Chef::DataBag::list.each do |bag_name, url| Chef::DataBag::load(bag_name).each do |item_name, url| item = Chef::DataBagItem.load(bag_name, item_name).to_hash puts item end end 次は data bags にデータを入力するコードです。json_data という JSON 形式のデー タを test_data という data bag に放り込んでいます。 #!/usr/bin/env ruby require 'rubygems' require 'chef/rest' require 'chef/search/query' Chef::Config[:node_name]='user01' Chef::Config[:client_key]='/home/user01/user01.pem' Chef::Config[:chef_server_url]="https://10.0.0.10" json_data = { "id" => "test", "command" => "echo test" } databag_item = Chef::DataBagItem.new databag_item.data_bag('test_data') databag_item.raw_data = proc_nginx databag_item.save 次は nodes 一覧の取得です。 ...

Ceph クラスターネットワーク構成

こんにちは。@jedipunkz です。 Ceph を運用する上で考慮しなければいけないのがトラフィックの負荷です。特に OSD 同士のレプリケーション・ハートビートには相当トラフィックの負荷が掛かることが想 像出来ます。 このため MDS, MON の通信に影響を与えないよう、OSD レプリケーション・ハートビー トのためのネットワークを別に設けるのがベストプラクティスな構成の様です。このネッ トワークのことをクラスターネットワークと Ceph 的に言うそうです。 こんな接続になります。 +------+ |Client| +------+ | +-------+-------+-------+-------+------ public network | | | | | +-----+ +-----+ +-----+ +-----+ +-----+ | MON | | MDS | | OSD | | OSD | | OSD | +-----+ +-----+ +-----+ +-----+ +-----+ | | | ----------------+-------+-------+------ cluster network 上図の様に MON, MDS は public ネットワークを介し OSD のレプリケーション・ハー トビートのみ cluster ネットワークを介します。Client と MDS との通信に影響を与 えない構成になります。 ...

OpenStack + Ceph 連携

こんにちは。最近 OpenStack の導入に向けて保守性や可用性について調査している @jedipunkz です。 OpenStack は MySQL のダンプや OS イメージ・スナップショットのバックアップをとっ ておけばコントローラの復旧も出来ますし、Grizzly 版の Quantum では冗長や分散が 取れるので障害時に耐えられます。また Quantum の復旧は手動もで可能です。最後の 悩みだった Cinder の接続先ストレージですが、OpenStack のスタンスとしては高価な ストレージの機能を使ってバックアップ取るか、Ceph, SheepDog のようなオープンソー スを使うか、でした。で、今回は Ceph を OpenStack に連携させようと思いました。 この作業により Cinder の接続先ストレージが Ceph になるのと Glance の OS イメー ジ・スナップショットの保管先が Ceph になります。 下記の参考資料が完成度高く、ほぼ内容はそのままです。若干付け足していますが。 参考資料 http://ceph.com/docs/master/rbd/rbd-openstack/ 前提の構成 +-------------+-------------+--------------------------------------------- Public/API Network | | | +-----------+ +-----------+ +-----------+ +-----------+ +-----------+ +-----------+ | | | | |vm|vm|.. | | | | | | | | controller| | network | +-----------+ | ceph01 | | ceph01 | | ceph01 | | | | | | compute | | | | | | | | | | | | | | | | | | | +-----------+ +-----------+ +-----------+ +-----------+ +-----------+ +-----------+ | | | | | | | | +-------------+-----)-------+-----)-------+-------------+-------------+-- Management/API Network | | +-------------+-----------------------------------+-- Data Network Ceph は OpenStack の Management Network 上に配置 Ceph は3台構成 (何台でも可) OpenStack も3台構成 (何台でも可) 連携処理するのは controller, compute ノード では早速手順ですが、OpenStack と Ceph の構築手順は割愛します。私の他の記事を参 考にしていただければと思います。 ...