新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

ラベル TokyoTyrant の投稿を表示しています。 すべての投稿を表示
ラベル TokyoTyrant の投稿を表示しています。 すべての投稿を表示

2010-08-02

[Linux]TokyoTyrantの相互レプリケーション

今更なタイトルですが、忘れっぽいオイラ自身のためのメモですので、「出遅れすぎ」とかいうツッコミは全力スルーさせていただきますw

要するに、ttserverのオプションに -ulog、-mhost、-mport、-sid を渡してあげれば良いんです。

ノード1(192.168.1.1)

# mkdir /var/ttserver/ulog
# ttserver -port 1978 -sid 1 -mhost 192.168.1.2 -mport 1978 -ulog /var/ttserver/ulog casket-1.tch

ノード2(192.168.1.2)

# mkdir /var/ttserver/ulog
# ttserver -port 1978 -sid 2 -mhost 192.168.1.1 -mport 1978 -ulog /var/ttserver/ulog casket-1.tch

これだけで、相互レプリケーションなKVSをセットアップ出来ちゃうんですねー。素晴らしいです。

2010-8-27 追記
Xen環境だと、以下のエラーが出ました。
そもそもレプリケーション出来ない模様です。
do_repl: tculrdnew failed

2010-04-16

[Perl]Data::ModelをインターフェースとしてTokyoTyrantへデータの出し入れをする際にハマった

YappoLogs: KVSでORマッパーを使うという事を参考に、スキーマクラスを構築して、データの出し入れをしました…が、

Can't use string ("k… ÎKÇ
» Ú") as a HASH ref while "strict refs" in use at /usr/lib/perl5/site_perl/5.8.8/Data/Model/Driver/Memcached.pm line 188.

というエラーを吐いてしまい、データの出し入れどころじゃない状態になってしまいました。どうやらデータのシリアライズ処理に問題が発生しているようです…
で、念のためData::Modelのテストコード[t/060_driver/memcached/serializer.t]を読んでみたわけですが、シリアライズ処理のテストの冒頭で、テスト数が分岐していました。条件は、$Data::MessagePack::VERSIONが0.05以上か否か。0.05未満ならテスト数は20…。 ええ?Data::MessagePackってrequiredじゃないん?
もしや…早速このテストコードを実行。

# perl t/060_driver/memcached/serializer.t
1..20
ok 1
ok 2
ok 3
:
(中略)
:
ok 18
ok 19
ok 20

はわわわ…やはりData::MessagePackが(0.05未満|入っていない)って事ですねorz
んじゃ、とっとと入れましょうかということで

# cpanm Data::MessagePack
Fetching http://search.cpan.org/CPAN/authors/id/T/TO/TOKUHIROM/Data-MessagePack-0.10.tar.gz ... OK
Configuring Data-MessagePack-0.10 ... OK
Building and testing Data-MessagePack-0.10 for Data::MessagePack ... OK
Successfully installed Data-MessagePack-0.10

はい、Data::MessagePack 0.10が入りました!

では気を取り直して、再度テストコードを実行します。

# perl t/060_driver/memcached/serializer.t
1..100
ok 1
ok 2 - pack
ok 3 - unpack
ok 4
ok 5 - NOT INT: pack with Data::MessagePack
:
(中略)
:
ok 99
ok 100 - INT: pack with Data::MessagePack

おほー!来たよ来たわよ来ましたよ!!
この後、TokyoTyrantのデータをvanishしてから、データの出し入れが可能になりました!

2010-06-01 追記
当たり前といえばそれまでですが、TokyoTyrantをデータストアとして扱う場合、Data::Model::Driver::Memcachedのインスタンス生成時には、以下のように必ずSerializerを"Default"に設定する必要があります。

my $tokyo_tyrant = Data::Model::Driver::Memcached->new(
memcached => Cache::Memcached::Fast->new( {
servers => [qw/ 127.0.0.1:1978 /],
} ),
serializer => 'Default',
);

2010-04-15

[OpenVZ]centos-5-x86_64-default なVEコンテナでttservctl走らせる時の注意

TokyoTyrantをインストールすると、/usr/local/sbin/ttservctlと/usr/local/bin/ttserverができます。
普通だと

# ttservctl start
Starting the server of Tokyo Tyrant
Executing: ttserver -port 1978 -dmn -pid /var/ttserver/pid
Done

となるところ、centos-5-x86_64-default なVEコンテナでは

# ttservctl start
Starting the server of Tokyo Tyrant
Executing: ttserver -port 1978 -dmn -pid /var/ttserver/pid
/usr/local/sbin/ttservctl: line 72: ttserver: command not found
The server could not started

となってしまい、起動できません。
これは/usr/local/binにパスが通っていないのが原因なので、ここにパスを通すか、

# ln -s /usr/local/bin/ttserver /usr/bin/

とすれば、詮なく起動できるようになります。

[TokyoCabinet]CentOS5へのインストールメモ

しょっちゅう忘れるのでメモ。

・TCのconfigureにはlibbz.hが必須。

だから

# yum -y install zlib2-devel

と言う風にしなさい、なんですよ。