安心ケータイサポートプラスを解除

特に大してメリットのない、auの「安心ケータイサポートプラス」。これを解除しようとすると、ウェブからは手続きができず、電話かauショップに行かなければならないという面倒くささ…。まぁ、解除させないためだどうけど。というわけで、電話で解除するためには解除したい携帯電話で157に電話すれば良い。そうすると、解除したいといえば、30分以内に解除されますと言われて手続き完了。面倒だからウェブから解除手続きさせてほしいところだな…。

FessCloudを作ってみる

ちょっと実験的な感じだけど、FessCloudを作ってみた。まぁ、FessCloudと言っても、SolrCloudを使ったFessみたいな感じです。なので、SolrCloudな感じだけど、Fess自体も適当に追加していけるから、ロードバランサとかで適当に負荷分散とかしてくれれば、Fessについてもクラウド的には使えるかと思う。
現状、これのリリース物があったりするわけじゃなくて、Linux(bash)で環境構築できる感じにした感じです。本当はAntとかでWindowsとかでも試せるようにしたかったのですが、時間の都合でシェルで作りました。

$ svn co http://svn.sourceforge.jp/svnroot/fess/fess-cloud/trunk fess-cloud
$ cd fess-cloud/

今回の構成は、全部ローカルで試す感じにしてみます。構成的にはSolrCloudのWikiにあるExample CのZooKeeper+Solrが3台とSolr単体が1台の構成にします(さらに別途Fessがいます)。ZooKeeper+Solrの構成では、Solrのポートを8180とした場合は、ZooKeeperのポートは+1000した9180を利用する仕組みになっています。環境構築時にZooKeeperのアドレスとポートを決めておく必要があります。今回は以下のような感じ。

Fess Solr ZooKeeper
Fess Server1 localhost:8080
ZK+Solr Server1 localhost:8180 localhost:9180
ZK+Solr Server2 localhost:8280 localhost:9280
ZK+Solr Server3 localhost:8380 localhost:9380
Solr Server4 localhost:8380

通常のFessだと、同じところにSolrを置いていますが、今回はSolrを取り除いています。今回はshardsの数はExample Cと同じように2で作ります。
それから環境をビルドします。引数にはZooKeeperのホストをカンマ区切りで記述します。

$ bash build.sh localhost:9180,localhost:9280,localhost:9380

実行するとtarget以下にfess-server-8.0.0とfess-cloud-jettyが生成されます。fess-cloud-jettyの方がZK+Solrの環境になります。Fessで利用しているSolrのschema.xmlなどが組み込まれています。
次に、fess-cloud-jettyコピーしてZK+Solr環境を作ります。今回はすべて同じサーバー上で行なっていますが、別サーバーで試すためには、fess-cloud-jettyをコピーすればOKです。

$ cd target
$ cp -r fess-cloud-jetty/ fess-cloud-1
$ cp -r fess-cloud-jetty/ fess-cloud-2
$ cp -r fess-cloud-jetty/ fess-cloud-3
$ cp -r fess-cloud-jetty/ fess-cloud-4
$ chmod +x fess-cloud-*/bin/*.sh
$ cd ..

あとは、順に起動していきます。server.shを含めてあるのでそれを実行すればOKです。(将来的にserver.shは変更するかも…)
別ターミナルで実行したほうがわかりやすいので、それぞれを順に上げていきます。
まず、ターミナル1でZK+Solr Server1を上げます。shardの数も2を指定します。

$ cd target/fess-cloud-1/
$ bash bin/server.sh leader 8180 2
$ tail -f logs/solrcloud.log

その他のZooKeeperが起動していないのでExceptionがでますが、無視して進めます。
ターミナル2でZK+Solr Server2を上げます。

$ cd target/fess-cloud-2/
$ bash bin/server.sh replica 8280
$ tail -f logs/solrcloud.log

ターミナル3でZK+Solr Server3を上げます。

$ cd target/fess-cloud-3/
$ bash bin/server.sh replica 8380
$ tail -f logs/solrcloud.log

ターミナル4でSolr Server4を上げます。

$ cd target/fess-cloud-4/
$ bash bin/server.sh solr 8480
$ tail -f logs/solrcloud.log

ここまでできたら、ブラウザから http://localhost:8180/solr/#/~cloud にアクセスしてみます。すると、SolrCloud図が表示されます。server.shスクリプトの第一引数がサブコマンドで、leaderにするとSolrのschema.xmlなどをZooKeeperに取り込みます。replicaはZKとSolrを起動して、別なZooKeeperから値を取得してきます。solrはZooKeeperなしでSolrだけ起動します。Solrだけを起動しますが、Solrの設定情報はZooKeeperから参照します。その他にstopとcleanがありますが、server.sh stop とすれば、起動したものを停止できます。clean で ZooKeeperで取り込んでいたものを削除します。インデックスまでは削除しません。(将来的にはこの辺のサブコマンドのあり方を見直したいです…)
次はFessです。target/fess-server-8.0.0のものを利用します。Fessも複数立ち上げたければ、それをコピーして別サーバーに持っていってください。

$ cd target/fess-server-8.0.0
$ ./bin/startup.sh

普通に起動するだけです。この辺は普通のFessと変わりません。あとは、いつのどおり、クロール設定をしてクロールして、検索してみてください。FessからはZooKeeperから取得できるSolrCloudの情報を元にアクセスするので、ZooKeeperのホスト指定を正しくしていれば、どっかのサーバーで起動すればSolrCloudから検索結果を取得することができると思います。これでFessCloudが完成です!
という感じで、FessCloudは以上ですが、現時点で気づいていることは、Fessの管理画面でシステム設定のSolrインスタンス情報がunknownになります。これは同じTomcatにないので仕方がないのですが…。Solrのスキーマについては、標準のschema.xmlにはtext_gosenのフィールド型があるのですが、gosenがあるとSolrCloudがgetConfigDir()的な(?)Exceptionが発生するため、取り除いてあります。あとは、本当はJettyでなく、Tomcatで動かしたかったのですが認証周りでいろいろとやる必要があるようで、ZooKeeperの知識を深めないとよくわかりません…(まだ、勉強不足です…)。そんな感じですが、普通に動いて、Fessからリクエストを送れば、SolrCloudの何かが返してくれるので、見ると面白いです。

Esperのautoidを試す

Esperは Complex Event Processing (CEP) のコンポーネントです。とりあえず、何か試せればと思い、サイトのQuick Startとか見てみるものの、いまいち実体がつかめない…。というわけで、まずはダウンロードしてみる。ここからダウンロードする。そんで、展開してみる。

$ tar zxvf ~/Downloads/esper-4.8.0.tar.gz
$ cd esper-4.8.0/

見てみると、examplesの中にいろいろあるので、とりあえず、autoidを見てみることにする。

$ cd examples/autoid/etc/

readmeもいるので、それにしたがって、動かしてみると

$ . setenv.sh
$ bash compile.sh
$ bash run_autoid.sh 100

とすれば、とりあえずは動かせる。ソースは../srcにあるので、AutoIdSimMainから見てみると良いと思う。まぁ、そこでEPServiceProviderを作って、RFIDTagsPerSensorStmtにRFIDTagsPerSensorListenerを渡しておいて、引数で渡された数だけのイベントを作って(イベントはDOM)、それをsendEventしている。実行結果に出力されるものはRFIDTagsPerSensorListenerに書いた内容が出力されている。処理するイベント自体はRFIDTagsPerSensorStmtでやっている(っぽい)。
なるほど、Esperはこんなノリで使えるのかね。でも、GPLっていうのが抵抗があるのだよね…。今、求めているもの的にはStormやS4の方が近いな…。他のexamplesは気が向いたら見ようかな…。