Elasticsearch 1.4.0 を Docker で動かしてみる -- boot2docker
準備の準備
まずは、boot2dockerをバージョンアップする。
OSX Installer
インストーラを新しくする。
https://github.com/boot2docker/osx-installer/releases/latest
DawnLoad後、Installする。
その後、以下のコマンドを実行する。
この辺りは、Dockerのサイトにのっているとうり。。
MBA20120331:dockerfile-elasticsearch4 guutara$ boot2docker stop MBA20120331:dockerfile-elasticsearch4 guutara$ boot2docker download Latest release for boot2docker/boot2docker is v1.3.1 Downloading boot2docker ISO image... Success: downloaded https://github.com/boot2docker/boot2docker/releases/download/v1.3.1/boot2docker.iso to /Users/guutara/.boot2docker/boot2docker.iso MBA20120331:dockerfile-elasticsearch4 guutara$ boot2docker start Waiting for VM and Docker daemon to start... .....................ooooooooooooooooooooooooo Started. Writing /Users/guutara/.boot2docker/certs/boot2docker-vm/ca.pem Writing /Users/guutara/.boot2docker/certs/boot2docker-vm/cert.pem Writing /Users/guutara/.boot2docker/certs/boot2docker-vm/key.pem To connect the Docker client to the Docker daemon, please set: export DOCKER_HOST=tcp://192.168.59.103:2376 export DOCKER_CERT_PATH=/Users/guutara/.boot2docker/certs/boot2docker-vm export DOCKER_TLS_VERIFY=1
使う前に、上記、3つの変数は、設定しておこう。。
Docker Image の作成。
DockerFile とかを、適当に作って置いたので、これを使っている。
dockerfile-elasticsearch4
まずは、boot2dockerを起動する。
MBA20120331:dockerfile-elasticsearch4 guutara$ boot2docker start Waiting for VM and Docker daemon to start... .....................ooooooooooooooooooooooooo Started. Writing /Users/guutara/.boot2docker/certs/boot2docker-vm/ca.pem Writing /Users/guutara/.boot2docker/certs/boot2docker-vm/cert.pem Writing /Users/guutara/.boot2docker/certs/boot2docker-vm/key.pem To connect the Docker client to the Docker daemon, please set: export DOCKER_HOST=tcp://192.168.59.103:2376 export DOCKER_CERT_PATH=/Users/guutara/.boot2docker/certs/boot2docker-vm export DOCKER_TLS_VERIFY=1 MBA20120331:dockerfile-elasticsearch4 guutara$ export DOCKER_HOST=tcp://192.168.59.103:2376 MBA20120331:dockerfile-elasticsearch4 guutara$ export DOCKER_CERT_PATH=/Users/guutara/.boot2docker/certs/boot2docker-vm MBA20120331:dockerfile-elasticsearch4 guutara$ export DOCKER_TLS_VERIFY=1 MBA20120331:dockerfile-elasticsearch4 guutara$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Dockerfile のあるディレクトリで行う。
MBA20120331:dockerfile-elasticsearch4 guutara$ pwd /Users/guutara/git/dockerfile-elasticsearch4 MBA20120331:dockerfile-elasticsearch4 guutara$ ls Dockerfile README.md config data MBA20120331:dockerfile-elasticsearch4 guutara$ docker build -t guutara/elasticsearch:1.4.0 . Sending build context to Docker daemon 29.46 MB Sending build context to Docker daemon Step 0 : FROM dockerfile/java:oracle-java7 ---> a643f54fef40 . . . Successfully built cffbdbd80f9c MBA20120331:dockerfile-elasticsearch4 guutara$ MBA20120331:dockerfile-elasticsearch4 guutara$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE guutara/elasticsearch 1.4.0 cffbdbd80f9c About a minute ago 755.9 MB guutara/kibana 4.0.0-BETA1 e3c7448aefd5 3 weeks ago 766.4 MB guutara/elasticsearch 1.3.2 e1b42108cc83 3 weeks ago 755.5 MB dockerfile/java oracle-java7 a643f54fef40 4 weeks ago 722 MB chung/centos7-up latest 3a22ebba07c7 7 weeks ago 288.3 MB centos centos7 70214e5d0a90 9 weeks ago 224 MB
これで、Imageは、作成完了。
Container の作成から起動確認
Docker -name で、名前をつけて作成して起動する。
MBA20120331:dockerfile-elasticsearch4 guutara$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES MBA20120331:dockerfile-elasticsearch4 guutara$ docker run -d -p 9200:9200 -p 9300:9300 -name el1.4-up guutara/elasticsearch:1.4.0 Warning: '-name' is deprecated, it will be replaced by '--name' soon. See usage. 3338665c2dfb431de5f51889436958e0954e5ed3f37277e5d1f19dadaa95a561 MBA20120331:dockerfile-elasticsearch4 guutara$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3338665c2dfb guutara/elasticsearch:1.4.0 "/elasticsearch/bin/ 8 seconds ago Up 7 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp el1.4-up
DOCKER_HOSTのIPを、何度も叩くのは、面倒なので DOCKER_HOST_IP に設定しておく。
MBA20120331:data guutara$ export DOCKER_HOST_IP=192.168.59.103 MBA20120331:data guutara$ echo $DOCKER_HOST_IP 192.168.59.103
まずは、起動を確認。
MBA20120331:dockerfile-elasticsearch4 guutara$ curl http://$DOCKER_HOST_IP:9200/ { "status" : 200, "name" : "Kristoff Vernard", "cluster_name" : "elasticsearch", "version" : { "number" : "1.4.0", "build_hash" : "bc94bd81298f81c656893ab1ddddd30a99356066", "build_timestamp" : "2014-xx-xxxxxxxx", "build_snapshot" : false, "lucene_version" : "4.10.2" }, "tagline" : "You Know, for Search" }
Index作成と、データを検索してみる。使ったのは、kibanaで提供されているデータ。
curl -O http://www.elasticsearch.org/guide/en/kibana/current/snippets/shakespeare.jsonで、データを取得しておく。
先ほどの、gitのdata配下には、データと以下の、しょぼい、shがあるので、それを使っている。
MBA20120331:data guutara$ cat curl-shakespeare #/bin/sh # echo "Start Index Create" curl -XPUT http://$DOCKER_HOST_IP:9200/shakespeare -d ' { "mappings" : { "_default_" : { "properties" : { "speaker" : {"type": "string", "index" : "not_analyzed" }, "play_name" : {"type": "string", "index" : "not_analyzed" }, "line_id" : { "type" : "integer" }, "speech_number" : { "type" : "integer" } } } } } '; echo echo "Start Bulk Load" curl -XPUT http://$DOCKER_HOST_IP:9200/_bulk --data-binary @shakespeare.json echo echo "End " MBA20120331:data guutara$ sh curl-shakespeare > /dev/null % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 305 100 21 100 284 18 255 0:00:01 0:00:01 --:--:-- 255 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 33.6M 100 9791k 100 24.0M 408k 1027k 0:00:23 0:00:23 --:--:-- 0
確認してみる。
Indexの確認。
MBA20120331:data guutara$ curl -XGET http://$DOCKER_HOST_IP:9200/_aliases?pretty { "shakespeare" : { } }
データの確認。
MBA20120331:data guutara$ curl -XGET http://$DOCKER_HOST_IP:9200/shakespeare/_search? {"took":78,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":111396,"max_score":1.0,"hits":[{"_index":"shakespeare","_type":"line","_id":"46925","_score":1.0,"_source":{"line_id":46926,"play_name":"Julius Caesar","speech_number":13,"line_number":"","speaker":"BRUTUS","text_entry":"Exit LUCIUS"}},{"_index":"shakespeare","_type":"line","_id":"46932","_score":1.0,"_source":{"line_id":46933,"play_name":"Julius Caesar","speech_number":13,"line_number":"2.1.67","speaker":"BRUTUS","text_entry":"Are then in council; and the state of man,"}},{"_index":"shakespeare","_type":"line","_id":"46937","_score":1.0,"_source":{"line_id":46938,"play_name":"Julius Caesar","speech_number":14,"line_number":"2.1.71","speaker":"LUCIUS","text_entry":"Who doth desire to see you."}},{"_index":"shakespeare","_type":"line","_id":"46944","_score":1.0,"_source":{"line_id":46945,"play_name":"Julius Caesar","speech_number":18,"line_number":"2.1.78","speaker":"LUCIUS","text_entry":"By any mark of favour."}},{"_index":"shakespeare","_type":"line","_id":"46949","_score":1.0,"_source":{"line_id":46950,"play_name":"Julius Caesar","speech_number":19,"line_number":"2.1.82","speaker":"BRUTUS","text_entry":"When evils are most free? O, then by day"}},{"_index":"shakespeare","_type":"line","_id":"46951","_score":1.0,"_source":{"line_id":46952,"play_name":"Julius Caesar","speech_number":19,"line_number":"2.1.84","speaker":"BRUTUS","text_entry":"To mask thy monstrous visage? Seek none, conspiracy;"}},{"_index":"shakespeare","_type":"line","_id":"46956","_score":1.0,"_source":{"line_id":46957,"play_name":"Julius Caesar","speech_number":19,"line_number":"","speaker":"BRUTUS","text_entry":"Enter the conspirators, CASSIUS, CASCA, DECIUS BRUTUS, CINNA, METELLUS CIMBER, and TREBONIUS"}},{"_index":"shakespeare","_type":"line","_id":"46963","_score":1.0,"_source":{"line_id":46964,"play_name":"Julius Caesar","speech_number":22,"line_number":"2.1.95","speaker":"CASSIUS","text_entry":"You had but that opinion of yourself"}},{"_index":"shakespeare","_type":"line","_id":"46968","_score":1.0,"_source":{"line_id":46969,"play_name":"Julius Caesar","speech_number":25,"line_number":"2.1.100","speaker":"BRUTUS","text_entry":"He is welcome too."}},{"_index":"shakespeare","_type":"line","_id":"46970","_score":1.0,"_source":{"line_id":46971,"play_name":"Julius Caesar","speech_number":27,"line_number":"2.1.102","speaker":"BRUTUS","text_entry":"They are all welcome."}}]}}
まとめ
dockerfile/elasticsearch · GitHubを参考に、見よう見まねで、作ってみたけど、なんとか動いた。
boot2docker で、動かしてるけど、普通にDockerいれて物理で動かすならもっと違うやり方が出来ると思う。
ちなみに、データの永続化はしてないので、コンテナ消すと全てはなくなるのだよ。(笑)
あと、kibana4も、作ったのだけど、それは、また、気が向いた時にまとめるつもり。
Docker -- Boot2docker
とりあえず、Mac OSX 10.9 に、入れてみる。
boot2docker 実行
クリックすると、こんな感じで、Terminalが開く。
bash Last login: Sun Sep 14 17:59:05 on ttys000 MBA20120331:~ guutara$ bash [MBA20120331:~ guutara]$ unset DYLD_LIBRARY_PATH ; unset LD_LIBRARY_PATH mkdir -p ~/.boot2docker [MBA20120331:~ guutara]$ mkdir -p ~/.boot2docker if [ ! -f ~/.boot2docker/boot2docker.iso ]; then cp /usr/local/share/boot2docker/boot2docker.iso ~/.boot2docker/ ; fi boot2docker/ ; fiutara]$ if [ ! -f ~/.boot2docker/boot2docker.iso ]; then cp /usr/local/share/boot2docker/boot2docker.iso ~/. /usr/local/bin/boot2docker init /usr/local/bin/boot2docker up && export DOCKER_HOST=tcp://$(/usr/local/bin/boot2docker ip 2>/dev/null):2375 docker version [MBA20120331:~ guutara]$ /usr/local/bin/boot2docker init Generating public/private rsa key pair. Your identification has been saved in /Users/guutara/.ssh/id_boot2docker. Your public key has been saved in /Users/guutara/.ssh/id_boot2docker.pub. The key fingerprint is: da:15:10:5d:ae:16:87:59:0c:8d:11:81:12:6e:39:81 guutara@MBA20120331.local The key's randomart image is: l):237520331:~ guutara]$ /usr/local/bin/boot2docker up && export DOCKER_HOST=tcp://$(/usr/local/bin/boot2docker ip 2>/dev/nul Waiting for VM and Docker daemon to start... ............................................. Started. To connect the Docker client to the Docker daemon, please set: export DOCKER_HOST=tcp://192.168.59.103:2375 [MBA20120331:~ guutara]$ docker version Client version: 1.2.0 Client API version: 1.14 Go version (client): go1.3.1 Git commit (client): fa7b24f OS/Arch (client): darwin/amd64 Server version: 1.2.0 Server API version: 1.14 Go version (server): go1.3.1 Git commit (server): fa7b24f
この時点で、VirtulBoxに、VMが起動している。
docker pull
使用するコンテナのイメージを取って来る。とりあえず、centOSの7にした。
[MBA20120331:~ guutara]$ docker pull centos:centos7 Pulling repository centos 70214e5d0a90: Download complete 511136ea3c5a: Download complete 34e94e67e63a: Download complete
docker images
持っているコンテナのイメージを確認する。
[MBA20120331:~ guutara]$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos centos7 70214e5d0a90 2 weeks ago 224 MB
docker run -t -i
コンテナを起動する。
起動する際に、-t で、tty を確保して、-i で、標準出力を開き、/bin/bash で端末アクセスする。
exit で、抜けると停止する。
[MBA20120331:~ guutara]$ docker run -t -i --name centos7-up centos:centos7 /bin/bash bash-4.2# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 2.7 0.1 11744 2864 ? Ss 10:46 0:00 /bin/bash root 9 0.0 0.1 19752 2164 ? R+ 10:46 0:00 ps aux bash-4.2# cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core) bash-4.2# uname -a Linux b35fd83296dd 3.16.1-tinycore64 #1 SMP Fri Aug 22 06:40:10 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux bash-4.2# exit exit
docker start -i
停止したコンテナを起動する。
起動する際に、-t で、tty を確保して端末アクセスする。
exit で抜けると、停止する。
[MBA20120331:~ guutara]$ docker start -i centos7-up centos7-up bash-4.2# cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core) bash-4.2# uname -a Linux b35fd83296dd 3.16.1-tinycore64 #1 SMP Fri Aug 22 06:40:10 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux bash-4.2# exit exit
yum update
最新の状態にコンテナをアップデートしてみる。
[MBA20120331:~ guutara]$ docker start -i centos7-up centos7-up bash-4.2# yum update Loaded plugins: fastestmirror base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/4): extras/7/x86_64/primary_db | 26 kB 00:00:00 (2/4): base/7/x86_64/group_gz | 157 kB 00:00:00 (3/4): updates/7/x86_64/primary_db | 2.9 MB 00:00:02 (4/4): base/7/x86_64/primary_db | 4.9 MB 00:00:03 Determining fastest mirrors . . . Complete! bash-4.2# exit
docker commit
update したコンテナのイメージを作成する。
images で、確認しておく。
[MBA20120331:~ guutara]$ docker commit centos7-up chung/centos7-up 3a22ebba07c7741599a28eb21997f1cf6dbfdeb2202d230576051fc34d6eb4a6 [MBA20120331:~ guutara]$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE chung/centos7-up latest 3a22ebba07c7 34 seconds ago 288.3 MB centos centos7 70214e5d0a90 2 weeks ago 224 MB
docker rm
コンテナを削除する。
これで、yum update したコンテナは削除される。
MBA20120331:~ guutara$ docker rm centos7-up
centos7-up
docker ps -a
コンテナの状態を確認する。
- a で、動いていないコンテナも表示する。
MBA20120331:~ guutara$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES MBA20120331:~ guutara$ docker run -d -i -t --name centos7-chung chung/centos7-up /bin/bash df0684c80b17d8a90546cf7829e67f326fd172b5ea949bea00b966003c366878 MBA20120331:~ guutara$ docker run -d -i -t --name centos7-org centos:centos7 /bin/bash ea817f2e6e08c3686680d6660eedd1d973962a0a01f24a2bbd248729d0e0f330 MBA20120331:~ guutara$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ea817f2e6e08 centos:centos7 "/bin/bash" 7 seconds ago Up 4 seconds centos7-org df0684c80b17 chung/centos7-up:latest "/bin/bash" 35 seconds ago Up 33 seconds ce
docker run -d , docker attach
デーモンで動かす時には、-d を付ける。
動かしたまま、抜けるには、CTR-p,CTR-q で、抜ける。
docker start -i でも、再接続可能だけど、attachで、繋げられる。
MBA20120331:~ guutara$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ea817f2e6e08 centos:centos7 "/bin/bash" 5 minutes ago Up 5 minutes centos7-org df0684c80b17 chung/centos7-up:latest "/bin/bash" 6 minutes ago Up 5 minutes centos7-chung MBA20120331:~ guutara$ docker attach centos7-org bash-4.2# ps PID TTY TIME CMD 1 ? 00:00:00 bash 8 ? 00:00:00 ps CTR-p,CTR-q [MBA20120331:~ guutara]$ MBA20120331:~ guutara$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ea817f2e6e08 centos:centos7 "/bin/bash" 10 minutes ago Up 10 minutes centos7-org df0684c80b17 chung/centos7-up:latest "/bin/bash" 10 minutes ago Up 10 minutes centos7-chung
マカフィーいれると/usr/local のパーミッションが変更される
MBA20120331:~ guutara$ brew doctor Warning: The /usr/local directory is not writable. Even if this directory was writable when you installed Homebrew, other software may change permissions on this directory. Some versions of the "InstantOn" component of Airfoil are known to do this. You should probably change the ownership and permissions of /usr/local back to your user account.
マカフィーをいれると、こうなってしまうので、直す。
MBA20120331:~ guutara$ ls -l /usr total 4 drwxr-xr-x 8 root wheel 272 9 22 2013 X11 lrwxr-xr-x 1 root wheel 3 9 22 2013 X11R6 -> X11 drwxr-xr-x 1069 root wheel 36346 4 23 15:06 bin drwxr-xr-x 288 root wheel 9792 11 28 17:29 include drwxr-xr-x 344 root wheel 11696 4 23 15:06 lib drwxr-xr-x 143 root wheel 4862 4 23 15:07 libexec drwxr-xr-x 7 root wheel 238 1 28 2012 llvm-gcc-4.2 drwxr-xr-x 18 root wheel 612 3 29 12:13 local drwxr-xr-x 259 root wheel 8806 4 23 15:05 sbin drwxr-xr-x 66 root wheel 2244 11 28 17:29 share
755を、変更するのと、グループの変更。
sudo chmod 775 /usr/local sudo chgrp admin /usr/local
upgrade したあと、update したら、エラーがでたので、対処。
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master MBA20120331:~ guutara$ cd $(brew --prefix) MBA20120331:local guutara$ git fetch origin remote: Counting objects: 345, done. remote: Compressing objects: 100% (162/162), done. remote: Total 345 (delta 130), reused 345 (delta 130) Receiving objects: 100% (345/345), 124.79 KiB | 109.00 KiB/s, done. Resolving deltas: 100% (130/130), done. From https://github.com/Homebrew/homebrew * [new branch] gh-pages -> origin/gh-pages * [new branch] go -> origin/go MBA20120331:local guutara$ git reset --hard origin/master Checking out files: 100% (2295/2295), done. HEAD is now at 355e06d Remove support for version "schemes", just pass version objects directly MBA20120331:Versions guutara$ brew doctor Your system is ready to brew.
GO Lang を弄ってみる こんにちはせかい (1)
GoCON 行くので、少しでも、弄っておく。
インストールから、こんにちは世界まで。。
MBA20120331:golang guutara$ brew install go ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/go-1.2.2.lion.bottle.tar.gz ######################################################################## 100.0% ==> Pouring go-1.2.2.lion.bottle.tar.gz ==> Caveats As of go 1.2, a valid GOPATH is required to use the `go get` command: http://golang.org/doc/code.html#GOPATH `go vet` and `go doc` are now part of the go.tools sub repo: http://golang.org/doc/go1.2#go_tools_godoc To get `go vet` and `go doc` run: go get code.google.com/p/go.tools/cmd/godoc go get code.google.com/p/go.tools/cmd/vet You may wish to add the GOROOT-based install location to your PATH: export PATH=$PATH:/usr/local/opt/go/libexec/bin Bash completion has been installed to: /usr/local/etc/bash_completion.d zsh completion has been installed to: /usr/local/share/zsh/site-functions ==> Summary sh: find: command not found 🍺 /usr/local/Cellar/go/1.2.2: 115M MBA20120331:golang guutara$ go run hellow.go hello, world
go install で、パッケージでやってみる。
パッケージにする為に、goの作業用ディレクトリにsrc/helloを作り、ソースを配置した。
$GOPATH なしだと、エラーになった。
$GOPATH 設定して、無事作成完了。
$GOROOT は、なしでいけた。
MBA20120331:bin guutara$ mkdir -p ~/golang/src/hello MBA20120331:bin guutara$ ls ~/golang/src/hello/ hellow.go MBA20120331:bin guutara$ echo $GOPATH MBA20120331:bin guutara$ go install hello can't load package: package hello: cannot find package "hello" in any of: /usr/local/Cellar/go/1.2.2/libexec/src/pkg/hello (from $GOROOT) ($GOPATH not set)
MBA20120331:bin guutara$ export GOPATH=/Users/guutara/golang MBA20120331:bin guutara$ echo $GOPATH /Users/guutara/golang MBA20120331:bin guutara$ go install hello MBA20120331:bin guutara$ ls $GOPATH/bin hello MBA20120331:bin guutara$ /Users/guutara/golang/bin/hello hello, こんにちは世界
fluentdのちょっとしたチューニングの代理の報告
はじめに
色々、テストをしてみてる結果をまとめてみた。
検証は、自分がやっている訳ではないので、検証結果からのまとめ。
あと、公開出来ない部分もあったるするので、若干、整理しきれてないけど
その辺は、また、修正出来るかな。
以下の感じで繋がっている。
td-agent --> td-agent out_webhdfs ---> HDFS ZeroMQ_pub ---> Subscriber
ここまでのチューニングで、上記の2つのPluginが、ボトルネックになるという事がわかった。
ZeroMQ_pubは、Aggregatorに仕込んであり、情報が見たい時に、自由に件数などを見れる様にしているらしい。
ということで、以下、チューニング。
チューニング
zmq_pubについて
zmq_pubは単一スレッドで動いている。その場合、fluentdがflushできるのは1秒間に1チャンクのみ。
従って、デフォルトのbuffer_chunk_limit 8mで、1KBのメッセージを送った場合、8MB/1KB=8000msg/secが限界となる.
実際には、flush_interval 1sによりチャンク一杯にならずに送られるケースもあるので、限界はこれより小さくなる.
そこで、スループットを上げるためにチャンクのサイズを24Mまで増やし、以下の設定とした。
<store> type zmq_pub pubkey ${tag} bindaddr tcp://*:5556 buffer_chunk_limit 24m flush_interval 1s </store>
HDFSへの格納について
HDFS格納用fluentdでは、以下のような送信エラーが多発しており、これがスループットを落としたり、キューにデータが溜まる原因となっていた。
[warn]: fluent/output.rb:337:rescue in try_flush: temporarily failed to flush the buffer. next_retry=xxx error_class="WebHDFS::IOError" error="{\"RemoteException\":......
http://blog.father.gedow.net/2012/07/13/fluentd-webhdfs-writing-problem/
を参考に、以下の変更を行った。
time sliceを1日→1時間に変更. flush_intervalを削除
num_threadsを10→1(デフォルト)へ
これにより、設定は以下のようになる。
<match {p2,msr}.**> type forest subtype webhdfs <template> namenode data.local:50070 standby_namenode data.local:50070 path /log/private2/${tag}/%Y%m%d/${tag}.%Y%m%d-%H.${hostname}.24224.log output_data_type ltsv output_include_tag true output_include_time true username user </template> </match>
テストケースと結果
以下のケースを実施した。
並列度12で単一fluentdに送信
並列度16で2プロセスのfluentdに送信
並列度24で3プロセスのfluentdに送信
いずれのケースも、aggregator, HDFS格納用fluentdともにキュー溢れは発生していない
後半の3つの山が今回のテスト時のもの
メッセージ送信量(メッセージ/分)
ケース1は最大60万msg/分(10000msg/秒)出ている
ケース2, 3では各プロセス40万msg/分(6500msg/秒)で、プロセスを増やすことでスケールしている
最大で、3プロセス使うことで110万msg/分(18300msg/秒)流れている
【Intel Galileo:3】sip server をいれる。 (cross compile)
Sip Serverにしてみようと、思いついてできたので、記録。
partysip-2.2.3
(wget http://download.savannah.gnu.org/releases/partysip/partysip-2.2.2.tar.gz)
libosip2-2.2.2
(wget http://ftp.gnu.org/gnu/osip/libosip2-2.2.2.tar.gz)
VM は、前回作成したものを使用。
libosipのmake
cross compile する。
インストールは、自分のディレクトリの中。
source /opt/clanton-tiny/1.4.2/environment-setup-i586-poky-linux-uclibc ./configure $CONFIGURE_FLAGS --prefix=/home/guutara/libosip2-2.2.2/local make make install
確認。
guutara@gtr01:~/libosip2-2.2.2$ ls local/* local/include: osip2 osipparser2 local/lib: libosip2.a libosip2.so libosip2.so.3.0.0 libosipparser2.la libosipparser2.so.3 pkgconfig libosip2.la libosip2.so.3 libosipparser2.a libosipparser2.so libosipparser2.so.3.0.0 local/man: man1
partysipのmake
cross compile する。
一度、Terminalを閉じて、新しいセッションで作業する。
インストールは、/partysipを作成してそこに。
sudo mkdir partysip sudo chmod 0777 /partysip source /opt/clanton-tiny/1.4.2/environment-setup-i586-poky-linux-uclibc ./configure --build=i686-linux --host=i586-poky-linux-uclibc CPPFLAGS="-I/home/guutara/libosip2-2.2.2/local/include" LDFLAGS="-L/home/guutara/libosip2-2.2.2/local/lib" LIBS="-losipparser2" --prefix=/partysip make make install
確認。
guutara@gtr01:~/partysip-2.2.3$ ls -l /partysip/*/partysip/bin: 合計 432 -rwxr-xr-x 1 guutara guutara 406080 1月 29 16:31 partysip -rwxr-xr-x 1 guutara guutara 3994 1月 29 16:31 partysip-config -rwxr-xr-x 1 guutara guutara 27162 1月 29 16:31 psp_users /partysip/etc: 合計 4 drwxr-xr-x 2 guutara guutara 4096 1月 29 16:31 partysip /partysip/include: 合計 8 drwxr-xr-x 2 guutara guutara 4096 1月 29 16:31 partysip drwxr-xr-x 2 guutara guutara 4096 1月 29 16:31 ppl /partysip/lib: 合計 208 -rw-r--r-- 1 guutara guutara 110034 1月 29 16:31 libppl.a -rwxr-xr-x 1 guutara guutara 966 1月 29 16:31 libppl.la lrwxrwxrwx 1 guutara guutara 15 1月 29 16:31 libppl.so -> libppl.so.2.2.3 lrwxrwxrwx 1 guutara guutara 15 1月 29 16:31 libppl.so.2 -> libppl.so.2.2.3 -rwxr-xr-x 1 guutara guutara 90663 1月 29 16:31 libppl.so.2.2.3 drwxr-xr-x 2 guutara guutara 4096 1月 29 16:31 partysip
それぞれを、tarで、固める。
guutara@gtr01:~$ tar czf libosip2-2.2.2.tar.gz libosip2-2.2.2/local
guutara@gtr01:~$ tar czf partysip.tar.gz /partysip
あとは、VMから一旦、HOSTへscpして、Gallileoに、SCPする。
SD Linuxにインストール
SD Linux には、ldconfigはない。
Link時に、パスを埋め込んでいない場合は、/usr/libの配下に置けば認識する。
libosipの設置
root@clanton:~# tar zxf libosip2-2.2.2.tar.gz root@clanton:~# cp -r libosip2-2.2.2/local/lib/* /usr/lib/ root@clanton:~# ls -l libosip2-2.2.2/local/lib/ -rw-r--r-- 1 1000 1000 350926 Jan 29 2014 libosip2.a -rwxr-xr-x 1 1000 1000 896 Jan 29 2014 libosip2.la lrwxrwxrwx 1 root root 17 Jan 1 00:14 libosip2.so -> libosip2.so.3.0.0 lrwxrwxrwx 1 root root 17 Jan 1 00:14 libosip2.so.3 -> libosip2.so.3.0.0 -rwxr-xr-x 1 1000 1000 237274 Jan 29 2014 libosip2.so.3.0.0 -rw-r--r-- 1 1000 1000 586532 Jan 29 2014 libosipparser2.a -rwxr-xr-x 1 1000 1000 881 Jan 29 2014 libosipparser2.la lrwxrwxrwx 1 root root 23 Jan 1 00:14 libosipparser2.so -> libosipparser2.so.3.0.0 lrwxrwxrwx 1 root root 23 Jan 1 00:14 libosipparser2.so.3 -> libosipparser2.so.3.0.0 -rwxr-xr-x 1 1000 1000 415038 Jan 29 2014 libosipparser2.so.3.0.0 drwxr-xr-x 2 1000 1000 1024 Jan 1 00:14 pkgconfig root@clanton:~# ls -l /usr/lib/libosip* -rw-r--r-- 1 root root 350926 Jan 1 00:15 /usr/lib/libosip2.a -rwxr-xr-x 1 root root 896 Jan 1 00:15 /usr/lib/libosip2.la lrwxrwxrwx 1 root root 17 Jan 1 00:15 /usr/lib/libosip2.so -> libosip2.so.3.0.0 lrwxrwxrwx 1 root root 17 Jan 1 00:15 /usr/lib/libosip2.so.3 -> libosip2.so.3.0.0 -rwxr-xr-x 1 root root 237274 Jan 1 00:15 /usr/lib/libosip2.so.3.0.0 -rw-r--r-- 1 root root 586532 Jan 1 00:15 /usr/lib/libosipparser2.a -rwxr-xr-x 1 root root 881 Jan 1 00:15 /usr/lib/libosipparser2.la lrwxrwxrwx 1 root root 23 Jan 1 00:15 /usr/lib/libosipparser2.so -> libosipparser2.so.3.0.0 lrwxrwxrwx 1 root root 23 Jan 1 00:15 /usr/lib/libosipparser2.so.3 -> libosipparser2.so.3.0.0 -rwxr-xr-x 1 root root 415038 Jan 1 00:15 /usr/lib/libosipparser2.so.3.0.0
partysipの設置。
patysipは、plugin,confの位置を、Link時のprefixから埋め込んでいる。
root@clanton:~# cd / root@clanton:/# ls bin dev home lost+found mnt proc sketch tmp var boot etc lib media opt sbin sys usr root@clanton:/# tar zxf ~/partysip.tar.gz root@clanton:/# ls bin dev home lost+found mnt partysip sbin sys usr boot etc lib media opt proc sketch tmp var root@clanton:/# ls bin dev home lost+found mnt proc sketch tmp var boot etc lib media opt sbin sys usr root@clanton:/# tar zxf ~/partysip.tar.gz root@clanton:/# ls bin dev home lost+found mnt partysip sbin sys usr boot etc lib media opt proc sketch tmp var root@clanton:/# cd partysip/ root@clanton:/partysip# ls bin etc include lib
起動
confの設定をする。
vi etc/partysip/partysip.conf serverip = 10.29.58.65, 127.0.0.1 ### When dynamic_ip is set to "on", then the ip is reloaded periodically. ### # dynamic_ip = on ### ### enable IPv6 support. (IPv4 should be fully functionnal anyway) ### # serverip6 = fe80::240:f6ff:fe74:7a75, ::1 # enable_ipv6 = on ### ### servername must be edited. ### ### Please give the list of all FQDNs of your host separated by commas. servername = 10.29.58.65, 127.0.0.1 serverport_udp = 5060 # transport protocol: udp/tcp/sctp # UDP: ok # TCP: not supported (please contribute!) # SCTP: supported only in previous release (0.X.X) # You can port the old plugin which can be found at: # http://osip.atosc.org/download/partysip/sctp_plugin-0.5.4.tar.gz transport = udp
起動する。
root@clanton:/partysip# cd bin root@clanton:/partysip/bin# ./partysip -d 6 -l /var/log/partysip.log & [2] 1500 [1] Done(127) partysip -d 6 -l /var/log/partysip.log root@clanton:/partysip/bin# DEBUG: [get_output_if] connect: Network is unreachable Default Gateway Interface detection failed. Please define "serverip" in the config file Server: WellX Telecom/Partysip/2.2.3 Debug level: 6 Config name: /partysip/etc/partysip/partysip.conf ServerIP: (IPv4) 10.29.58.65, 127.0.0.1 ServerName: 10.29.58.65, 127.0.0.1 ServerRealm: '"wellx.org"' Log name: /var/log/partysip.log
テスト
Telephone-1.0.4 を使ってテストしてみる。
こんな感じで、設定した。
つなぐと、サーバのLogでちゃんと、登録されたのがわかる。
SIP/2.0 200 OK Via: SIP/2.0/UDP 10.29.58.64:60307;rport=60307;branch=z9hG4bKPjEW8qqlYKAuQZ2sEjPvsax80dK6.dL3Sy From: "ms@10.29.58.64" <sip:guutara@10.29.58.65>;tag=d1HhsWxSCMU8DoWwNQvkwcTOvCjSa1y4 To: "ms@10.29.58.64" <sip:guutara@10.29.58.65>;tag=151861976 Call-ID: hE5aAYbvuk3KIFUHa0M9WFGrKcFqcfKZ CSeq: 65357 REGISTER Contact: "guutara@10.29.58.64" <sip:guutara@10.29.58.64:60307;ob>;expires=300 Content-Length: 0
つぎは
全然、センサーとかいじってないけど。。
いいのかこれで。。 (´・ω・`)