Subcribe via RSS

stormのcluster環境のセットアップ(前編)

2012/1/9 | Posted in centos, storm

Stormと、その開発環境の設定やローカルモードでの実行は下記の記事を参照してください。


今回は、stormのnimbusやsupervisorを利用する、クラスタ環境をセットアップするときのメモです。
centosで試していますが、linux環境であれば同じような感じで動くと思います。
マシンは複数台を想定していますが、1台の中で動かすこともできます。

関連モジュールのインストール

stormを動かすのに必要なものをインストールします。
基本的には、ここに書かれている手順に従います。
バージョンが、最新版じゃないものを入れるものも多いので、注意して下さい。
また、今後変わることもありますので、上記の公式ページを確認するのがいいと思います。

Java

Javaが必要です。環境変数JAVA_HOMEも設定してください。

zookeeper のセットアップ


Apache zookeeper からリリースのアーカイブを取得(今回は 3.3.3 を使いました)

wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//zookeeper/zookeeper-3.3.3/zookeeper-3.3.3.tar.gz
tar zxf zookeeper-3.3.3.tar.gz
sudo cp -R zookeeper-3.3.3 /usr/local/
sudo ln -s /usr/local/zookeeper-3.3.3/ /usr/local/zookeeper


インストールしたディレクトリを ZOOKEEPER_HOME に設定し、$ZOOKEEPER_HOME/bin の実行パスに設定。
export ZOOKEEPER_HOME="/usr/local/zookeeper" 
export PATH=$PATH:$ZOOKEEPER_HOME/bin

$ZOOKEEPER_HOME/conf/zoo.cfg を作成する
zoo_sample.cfg をベースに修正。
sudo cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg 
dataLogDir を追加して、ログの場所を決める。今回は “/var/log/zookeeper” とした。(これ不要かもしれない)
dataDir=/tmp/zookeeper
dataLogDir=/var/log/zookeeper
zookeeper ver3.3.3のzoo.cfgでは、コメントアウトしている設定まで読み込まれるっていうひどい仕様になっているので気をつけてください。結構はまりました。

例えば、zoo.cfgはこんな感じになります。
zookeeperも本来は複数台で使うものですが、とりあえず1台で動かします。
# The number of milliseconds of each tick
tickTime=2000

# The number of ticks that the initial 
# synchronization phase can take
initLimit=10

# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5

# the directory where the snapshot is stored.
dataDir=/tmp/zookeeper
dataLogDir=/var/log/zookeeper

# the port at which the clients will connect
clientPort=2181

# server settings
server.1=localhost:2888:3888
#server.1=zookeeper1:2888:3888
#server.2=zookeeper2:2888:3888
#server.3=zookeeper3:2888:3888

ついでに、必要があればzookeeperのlog4jの設定もしましょう。
やらなくても動きます。Consoleじゃなくてファイルにログを残したい場合だけ変えてください。

ディレクトリの作成も忘れずに。
sudo mkdir /tmp/zookeeper
sudo mkdir /var/log/zookeeper


zeromq & jzmq のインストール


以下の手順に従ってインストール。

まずzeromq.
wget http://download.zeromq.org/historic/zeromq-2.1.7.tar.gz
tar zxf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./configure
make
sudo make install
uuid-dev が無いと言われたら yum install uuid-devel

LD_LIBRARY_PATH に /usr/local/lib を追加しておく。
そのあと
sudo ldconfig

次に、jzmq.
#install jzmq
git clone git://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh
./configure
make
sudo make install
libtoolやautomake, autoconf, pkg-configなどがないと言われたらyum等で入れましょう。

python 2.6.6 インストール


centos5だとpython のバージョンが 2.4.3 だったので 2.6.6 を入れる。

以下を参考に、古いものを共存させながらインストール。



Stormのインストール

前の記事と同様です。
https://github.com/nathanmarz/storm/downloads から最新のstormをダウンロードして、zipを解凍してください。(2011/12/27の最新verは0.6.0)

そして、storm-*.*.*/binにpathを通します。

$ wget https://github.com/downloads/nathanmarz/storm/storm-0.6.0.zip --no-check-certificate
$ unzip storm-0.6.0.zip
$ sudo cp -R storm-0.6.0 /usr/local/
$ export STORM_HOME=/usr/local/storm-0.6.0
$ export PATH=$PATH:$STORM_HOME/bin

今回はここまで。
次回は、1台のマシンでnimbusもsupervisorも動かして、クラスタモードでサンプルプログラムを動かすところまでを書きます。


参考になりそうな日本語サイト




Tags:

nginxでスマホからのアクセスをリダイレクト

2012/1/8 | Posted in linux, server

nginxでiPhoneやAndroidからのアクセスをリダイレクトする方法のメモ。

Apacheなら.htaccessなどを使ってリダイレクトしますが、nginxだとちょっと違います。
/etc/nginx/sites-available/ にある設定から行います。


$vi /etc/nginx/sites-available/example.com

以下のように、rewriteを使ってリダイレクトします。

server {
    listen 80;      
    server_name example.com;
    access_log  /var/log/nginx/example.com.access.log;
    error_log  /var/log/nginx/example.com.error.log;

    (中略)
    # スマホからのトップページへのアクセスを、/mobile にリダイレクト
    if ($http_user_agent ~* “2.0\ 2MMP|240×320|400X240|BlackBerry|Cellphone|Googlebot-Mobile|Opera\ Mini|iPhone|iPod|Android|BlackBerry9530|Nokia5800″) {
           rewrite ^/$ /mobile last;
    }
}


スマホ判定の部分は、どこかから持ってきたやつを適当にいじっただけなので、よく分からない端末名も入ってます。

if 文は、ifのあとにスペースがないとダメみたいなので注意。
if (      #OK
if(       #NG

あと、以下も注意。


参考にしたサイト

2つめのサイトでは、rewriteのflagの使い方なども載っていて、参考になります。





Tags: , ,

kyoto tycoonをcentosにセットアップ

2011/12/23 | Posted in centos, db

前準備

依存するpackageのインストール
gcc44がないと、makeできないから注意です。

sudo yum install gcc44 gcc44-c++ boost-devel zlib-devel
(libbzip2も必要かも)

kyoto cabinetインストール

まずはkyoto cabinetを入れます。

wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.70.tar.gz
tar zxf kyotocabinet-1.2.70.tar.gz 
cd kyotocabinet-1.2.70
./configure CC=gcc44 CXX=g++44
make
sudo make install

/etc/ld.so.conf に /usr/local/lib を追加
sudo ldconfig

kyoto tycoonのインストール


wget http://fallabs.com/kyototycoon/pkg/kyototycoon-0.9.52.tar.gz
tar zxf kyototycoon-0.9.52.tar.gz 
cd kyototycoon-0.9.52
./configure CC=gcc44 CXX=g++44
make 
sudo make install
sudo ldconfig


kyoto tycoonの起動


memcachedプロトコルで使いたいので、memcachedプラグインを有効にします

ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222'
永続化するためには、db ファイル名を指定する必要があるようです。
ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222' [db filename]

[db filename]は、拡張子によってKyoto Cabinet内のdb(索引付け)が変わります。

(null): オンメモリ
“.kch”: ハッシュDB
“.kct”: ツリーDB
“.kcd”: ディレクトリハッシュdb
“.kcf”: ディレクトリツリーdb


ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222' test.kch

参考:





Tags: , , ,

Kestrelをcentosにセットアップ

2011/12/20 | Posted in centos

# 2011/12/01時点のものです、最新のものがあるかもしれないので確認してください。

Kestrelは、twitterが使ってるらしいメッセージキューです。

前準備


まずgitが必要となるので、gitを使えるようにしてください。

sbtのインストール


sbtというのはscalaをビルドするためのツールです。
sbtというコマンドを作成します、ディレクトリなどは適宜読み替えてください。
sbtコマンドが、実行するディレクトリに依存しているので注意してください。
# install scala, sbt
wget http://simple-build-tool.googlecode.com/files/sbt-launch-0.7.4.jar
mv sbt-launch-0.7.4.jar ~/bin/
echo 'java -Xmx512M -jar `dirname $0`/sbt-launch-0.7.4.jar "$@"' >> ~/bin/sbt
chmod +x ~/bin/sbt

kestrelのインストール

次はkestrelをインストールします。
# install kestrel
git clone git://github.com/robey/kestrel.git
cd kestrel
sbt clean update package-dist

(時間がかかる)

mkdir /usr/local/kestrel
cp -R ./dist/kestrel-2.*.* /usr/local/kestrel/
ln -s /usr/local/kestrel/kestrel-2.*.* /usr/local/kestrel/current
mkdir /var/run/kestrel


daemonのインストール

daemonを使ってkestrelの起動の管理ができるようになります。


#install daemon

wget http://libslack.org/daemon/download/daemon-0.6.4.tar.gz
cd daemon-0.6.4
./configure
make
make -d install

kestrelの実行

ここまでが全てうまく行っていれば、
/usr/local/kestrel/current/script/kestrel.sh
から実行できます。

kestrel.sh内のHeapサイズが4Gとなっているので、動かない場合はそこを調整してみてください。

直接jarを叩いて実行もできます。
java -jar /usr/local/kestrel/current/kestrel-2.0.0-SNAPSHOT.jar

動作確認


kestrelを起動したら、telnetで接続して動作を確認します。
$ telnet 127.0.0.1 22133
Trying 127.0.0.1... 
Connected to 127.0.0.1.
Escape character is '^]'. 
STATS 
STAT uptime 185 
STAT time 1295254423 
STAT version 1.2.9-SNAPSHOT 
STAT curr_items 0 

以上です。


参考にしたページ:




Tags: , ,

Ubuntuのufwでファイアウォール設定

2011/5/28 | Posted in server, ubuntu

vpsなど自分で管理するサーバーは、ちゃんと自分で守らなくては、ということでファイアウォールを設定していたのを思い出したのでメモ。
最近のubuntuはufwで設定するらしい。iptablesのフロントエンドらしい。

まずはufwを有効に。

$ sudo ufw enable

次に、基本的に拒否して、使うポートだけ開けていきます。
$ sudo ufw default DENY

今回開けるのは、とりあえずhttpとssh。
sshは攻撃を受けやすいので、portを変えましょう。

それが無理ならLIMITにしましょう。
LIMITは30秒間に6回アクセスしてきた IP の接続を一定時間拒否するという設定です。ブルートフォース対策です。

$ sudo ufw allow 80/tcp
$ sudo ufw limit ssh

現状を確認
$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     LIMIT       Anywhere
80/tcp                     ALLOW       Anywhere

以上です。

参考:




Tags: ,
  • 書いてる人:

    Junichiro Takagi
    高木潤一郎

    http://tjun.jp
    t.junichiro@gmail.com

    技術的なメモを書いています。
    このブログは、会社とは関係なく個人の意見を書いています。

    RSS:


  • friendfeed: