Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ejabberd  の仕組み と   erlang  のすごいところ  <ul><ul><li>hamano </li></ul></ul>
jabber.jp  について <ul><li>http://jabber.jp/ </li></ul><ul><li>KLab  が運用しているメッセージングサービス </li></ul><ul><li>去年まで  jabberd  で動いて...
XMPP  プロトコル c2s connection s2s connection client jabber.jp client client gmail.com twitter.com client client client
ejabberd  のプロセスモデル ejabberd_sup ejabberd listeners listeners_sup receiver_sup 5222 5223 5269 client2 receiver client1 rout...
ejabberd  の冗長化 node2 node3 node1 IPVS TCP 5222(c2s)  TCP 5223(c2s/ssl) TCP 5269(s2s)  ejabberd ejabberd mnesia ejabberd mn...
mnesia  レプリケーション ノード 1 ノード2 マルチマスター レプリケーション dirty_write dirty_read write read
** ERROR ** mnesia_event got {inconsistent_database <ul><li>矛盾してしまった。 </li></ul>ノード 1 ノード2 write 障害発生 ノード1 落ちたな ノード2 落ちたな ...
対応策 障害発生 障害発生 落ちた方が良いのかも 僕たちは 大丈夫! ノード 1 ejabberd ノード 2 ejabberd ノード 3 ejabberd
remote shell <ul><li>通常サーバーアプリケーションを起動する時は  erl  コマンドに  -noshell  オプションを付ける。 </li></ul><ul><ul><li>トラブった時どうするの? </li></ul>...
ホットコードスワッピング <ul><li>サービスを停止せずに、プログラムの更新が出来る ! </li></ul><ul><li>やりかたは簡単 </li></ul><ul><ul><li>remote shell  でアタッチする </li>...
おしまい
Upcoming SlideShare
Loading in …5
×

20080617 ejabberd and erlang

4,112 views

Published on

Published in: Technology, News & Politics
  • Be the first to comment

20080617 ejabberd and erlang

  1. 1. ejabberd の仕組み と erlang のすごいところ <ul><ul><li>hamano </li></ul></ul>
  2. 2. jabber.jp について <ul><li>http://jabber.jp/ </li></ul><ul><li>KLab が運用しているメッセージングサービス </li></ul><ul><li>去年まで jabberd で動いていたけど ejabberd に移行した。 </li></ul><ul><li>みんな使ってみてね。 </li></ul>
  3. 3. XMPP プロトコル c2s connection s2s connection client jabber.jp client client gmail.com twitter.com client client client
  4. 4. ejabberd のプロセスモデル ejabberd_sup ejabberd listeners listeners_sup receiver_sup 5222 5223 5269 client2 receiver client1 router router_sup local_sup local
  5. 5. ejabberd の冗長化 node2 node3 node1 IPVS TCP 5222(c2s) TCP 5223(c2s/ssl) TCP 5269(s2s) ejabberd ejabberd mnesia ejabberd mnesia mnesia
  6. 6. mnesia レプリケーション ノード 1 ノード2 マルチマスター レプリケーション dirty_write dirty_read write read
  7. 7. ** ERROR ** mnesia_event got {inconsistent_database <ul><li>矛盾してしまった。 </li></ul>ノード 1 ノード2 write 障害発生 ノード1 落ちたな ノード2 落ちたな write
  8. 8. 対応策 障害発生 障害発生 落ちた方が良いのかも 僕たちは 大丈夫! ノード 1 ejabberd ノード 2 ejabberd ノード 3 ejabberd
  9. 9. remote shell <ul><li>通常サーバーアプリケーションを起動する時は erl コマンドに -noshell オプションを付ける。 </li></ul><ul><ul><li>トラブった時どうするの? </li></ul></ul><ul><li>-remsh オプションで遠隔から VM に attach することが出来る。 </li></ul><ul><li>いつもの shell 立ち上がれば、その VM 上のあらゆる操作が可能になる。 </li></ul><ul><li>任意のプロセスの状態、変数を確認することが出来る。 </li></ul><ul><li>q(). で自爆。 </li></ul>
  10. 10. ホットコードスワッピング <ul><li>サービスを停止せずに、プログラムの更新が出来る ! </li></ul><ul><li>やりかたは簡単 </li></ul><ul><ul><li>remote shell でアタッチする </li></ul></ul><ul><ul><li>beam ファイルを配置して l(File). </li></ul></ul>
  11. 11. おしまい

×