Mesos アーキテクチャ #1

こんにちは。@jedipunkz です。 今回はクラスタマネージャである Mesos について書こうと思います。 Mesos は Apache Software Foundation によって管理されるソフトウェアで分散アプリ ケーションをクラスタ化することが出来るマネージャです。Twitter が採用しているこ とで有名だそうで、開発にも積極的に参加しているそうです。 http://mesos.apache.org/ @riywo さんが既に Mesos + Marathon + Zookeper + Docker な構成を組む手順をブロ グで紹介されていますので是非試してみると面白いと思います。 http://tech.riywo.com/blog/2013/09/27/mesos-introduction-1/ 私は理解した Mesos のアーキテクチャについて少し書いていきたいと思います。 全体の構造 +-----------+ | zookeeper | | quorum | +-----------+ | +----------------+----------------+ | | | +--------------+ +--------------+ +--------------+ | mesos-master | | mesos-master | | mesos-master | | active | | hot standby | | hot standby | +--------------+ +--------------+ +--------------+ ... | +----------------+----------------+ | | | +--------------+ +--------------+ +--------------+ | mesos-slave | | mesos-slave | | mesos-slave | | executor | | executor | | executor | | +----++----+ | | +----++----+ | | +----++----+ | | |task||task| | | |task||task| | | |task||task| | | +----++----+ | | +----++----+ | | +----++----+ | +--------------+ +--------------+ +--------------+ ... 基本的に few masters + many slaves の構成です。task は slaves の上で走ります。 master はオファーによりアプリケーション(フレームワーク)に対して CPU, メモリの リソースをシェア出来ます。リソースは slave ID, resource1: amount1, resource2, amount2, … といった配列を含みます。master はポリシに従いそれぞれ のフレームワークに対してリソースをどれだけ提供するか決定します。プラグイン形式 で様々なポリシを取り込む仕組みになっています。 ...

Chef で kibana + elasticsearch + fluentd デプロイしてみた

こんにちは。@jedipunkz です。 前回 kibana + elasticsearch + fluentd を構築する方法を載せたのだけど手動で構築 したので格好悪いなぁと思っていました。いうことで! Chef でデプロイする方法を調 べてみました。 意外と簡単に出来たし、スッキリした形でデプロイ出来たのでオススメです。 前提の環境は… Ubuntu 12.04 LTS precise Chef サーバ構成 入力するログは nginx (例) オールインワン構成 Cookbook が他の OS に対応しているか確認していないので Ubuntu を前提にしていま す。Chef サーバのデプロイや knife の設定は済んでいるものとして説明していきます。 例で nginx のログを入力します。なので nginx も Chef でデプロイします。ここは他 のものに置き換えてもらっても大丈夫です。手順を省略化するためオールインワン構成 で説明します。nginx, fluentd は複数のノードに配置することも手順を読み替えれば もちろん可能です。 Cookbook の準備 お決まり。Cookbooks の取得に Berkshelf を用いる。 % cd chef-repo % gem install berkshelf % ${EDITOR} Berksfile cookbook 'elasticsearch', git: 'https://github.com/elasticsearch/cookbook-elasticsearch.git' cookbook 'td-agent', git: 'https://github.com/treasure-data/chef-td-agent.git' cookbook 'kibana', git: 'https://github.com/realityforge/chef-kibana.git' cookbook 'nginx', git: 'https://github.com/opscode-cookbooks/nginx.git' Cookbooks を取得します。 ...

第14回 OpenStack 勉強会参加ログ

こんにちは。@jedipunkz です。 OpenStack 第14回勉強会 ハッカソンに参加してきました。その時の自分の作業ログを 記しておきます。自分の作業内容は ‘OpenStack + Docker 構築’ です。 場所 : CreationLine さま 日時 : 2013年9月8日(土) 当日の atnd。 http://atnd.org/events/42891 当日発表のあった内容 Ansible で OpenStack を実際に皆の前でデプロイ! Yoshiyama さん開発 LogCas お披露目 Havana の機能改善・機能追加内容確認 その他 Horizon の機能についてだったり openstack.jp の運用についてなど 自分が話を聞きながら黙々とやったことは OpenStack + Docker 構築 結果… NG 動かず。時間切れ。公式の wiki の手順がだいぶ変なので手順を修正しながら進めました。 公式の wiki はこちらにあります。 https://wiki.openstack.org/wiki/Docker その修正しながらメモった手順を下記に貼り付けておきます。 作業環境 ホスト : Ubuntu 12.04.3 Precise OpenStack バージョン : devstack (2013/09/08 master ブランチ) 構成 : オールインワン (with heat, ceilometer, neutron) 普通に動かすとエラーが出力される これは devstack (2013/09/08 時点) での不具合なので直ちに修正されるかも。 ...

Kibana3 + elasticsearch + fluentd を試した

こんにちは。@jedipunkz です。 {% img /pix/kibana3.png %} 前回の記事で Kibana + elasticsearch + fluentd を試しましたが、ツイッターで @nora96o さんに “Kibana3 使うと、幸せになれますよ!” と教えてもらいました。早 速試してみましたので、メモしておきます。 前回の記事。 http://jedipunkz.github.io/blog/2013/09/07/kibana-plus-elasticsearch-plus-fluentd/ 前半の手順は前回と同様ですが、念のため書いておきます。 前提の環境 OS : Ubuntu 12.04 Precise (同じ方法で 13.04 Raring でも出来ました) 必要なパッケージのインストール 下記のパッケージを事前にインストールします。 % sudo apt-get install git-core build-essential ruby1.9.3 openjdk-7-jdk 手順を省くために Ruby はパッケージで入れました。また Java は他の物を利用しても 構いません。Ruby は fluentd が、Java は elasticsearch が必要とします。 elasticsearch のインストール 下記のサイトより elasticsearch をダウンロードします。 http://www.elasticsearch.org/download/ 現時点 (2013/09/08) で最新のバージョンは 0.90.3 でした。 % wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.3.deb % sudo dpkg -i elasticsearch-0.90.3.deb % sudo service elasticsearch start fluentd のインストール fluentd を下記の通りインストールします。 ...

Kibana + ElasticSearch + fluentd を試してみた

こんにちは。@jedipunkz です。 自動化の流れを検討する中でログ解析も忘れてはいけないということで ElasticSearch を使いたいなぁとぼんやり考えていて Logstash とか Kibana とかいうキーワードも目 に止まるようになってきました。 ElasticSaerch は API で情報を検索出来たりするので自動化にもってこい。バックエ ンドに Logstash を使って… と思ってたのですが最近よく聞くようになった fluentd をそろそろ真面目に使いたい!ということで、今回は Kibana + ElasticSearch + fluentd の組み合わせでログ解析システムを組む方法をメモしておきます。 参考にさせて頂いた URL http://memocra.blogspot.jp/2013/04/kibanakibanaelasticsearchfluentd.html 前提の環境 OS : Ubuntu 12.04 Precise (同じ方法で 13.04 Raring でも出来ました) 必要なパッケージインストール 下記のパッケージを事前にインストールします。 % sudo apt-get install git-core build-essential ruby1.9.3 openjdk-7-jdk 手順を省くために Ruby はパッケージで入れました。また Java は他の物を利用しても 構いません。Ruby は Kibana, fluentd が、Java は ElasticSearch が必要とします。 ElasticSearch のインストール 下記のサイトより ElasticSearch をダウンロードします。 http://www.elasticsearch.org/download/ 現時点 (2013/09/07) で最新のバージョンは 0.90.3 でした。 ...

Hurricane Electric + Vyatta で宅内 IPv6 化

こんにちは。@jedipunkz です。 自宅の IPv6 化、したいなぁとぼんやり考えていたのですが、Hurricane Electric Internet Services を見つけました。IPv4 の固定グローバル IP を持っていれば誰で も IPv6 のトンネルサービスを無料で受けられるサービスです。 1つのユーザで5アカウントまで取得でき (5 エンドポイント)、1アカウントで /64 の アドレスがもらえます。また申請さえすれば (クリックするだけ) /48 も1アカウント 毎にもらえます。つまり /48 x 5 + /64 x 5 … でか! 私の宅内は Vyatta で PPPOE してるのですが、各種 OS (Debian, NetBSD…) や機器 (Cisco, JunOS..)のコンフィギュレーションを自動生成してくれるので、接続するだけ であればそれをターミナルに貼り付けるだけ!です。 サービス URL Hurricane Electric は下記の URL です。アカウントもここで作成出来ます。 http://tunnelbroker.net IPv6 接続性を確保する方法 Vyatta が IPv6 のアドレスを持ち接続性を確保するだけであれば、上に記したように コピペで出来ます。上記の URL でアカウントを作成しログインします。左メニューの “Create Regular Tunnel” を押して、自分の情報 (IPv4 のエンドポイントアドレス等) を入力します。その後、取得した IPv6 のレンジのリンクをクリックし上記メニュー “Example Configuration” を選択します。プルダウンメニューが現れるので、自宅の OS や機器に合った名前を選択します。 ...

Vyatta で L2TP over IPsec による VPN 構築

こんにちは。@jedipunkz です。 以前、こんな記事をブログに記しました。2012/06 の記事です。 http://jedipunkz.github.io/blog/2012/06/13/vyatta-vpn/ その後、PPTP で保護されたネットワークの VPN パスワードを奪取出来るツールが公開 されました。2012/07 のことです。よって今では VPN に PPTP を用いることが推奨さ れていません。 ということで L2TP over IPsec による VPN 構築を Vyatta で行う方法を記します。 fig.1 : home lan と vyatta のアドレス +--------+ +-----+ home lan ---| vyatta | --- the internet --- | CPE | +--------+ +-----+ X.X.X.X/X(NAT) pppoe0 Y.Y.Y.Y この様に X.X.X.X/X と Y.Y.Y.Y/Y が関係しているとします。CPE は VPN により X.X.X.X/X に接続することが出来ます。 手順 : IPsec 下記の操作で IPsec を待ち受けるインターフェースの設定します。 % configure # edit vpn ipsec # set ipsec-interface interface pppoe0 インターフェース名は環境に合わせて設定してください。私の環境では pppoe0 です。 ...

OpenStack nova-network IPv6 対応

こんにちは。@jedipunkz です 今更なのかもしれませんが、OpenStack の nova-network を IPv6 対応する方法を調べ てみました。何故 nova-network なのか? 自宅の構成が nova-network だからです..。 以前は Quantum (現 Neutron) 構成で使っていましたが、ノードをコントローラとコン ピュートに別けた時に NIC が足らなくなり…。 さて本題です。下記のサイトを参考にしました。ほぼそのままの手順ですが、自分のた めにもメモです。 参考 URL http://docs.openstack.org/grizzly/openstack-compute/admin/content/configuring-compute-to-use-ipv6-addresses.html 前提 OpenStack の構成は予め構築されている nova-network を用いている 構成はオールインワンでも複数台構成でも可能 手順 nova がインストールされているすべてのノードで python-netaddr をインストールし ます。私の場合は rcbops の chef cookbooks で構築したのですが、既にインストール されていました。 % sudo apt-get install python-netaddr nova-network が稼働しているノードで radvd をインストールします。これは IPv6 を Advertise しているルータ等が予め備わっている環境であっても、インストー ルする必要があります。また /etc/radvd.conf が初め無いので radvd 単体では稼働し ませんが、問題ありません。OpenStack の場合 /var/lib/nova 配下のコンフィギュレー ションファイルを読み込んでくれます。 % sudo apt-get install radvd /etc/sysctl.conf に下記の記述を追記します。RA の受信とフォワーディングを許可し ています。 ...