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

3,630
-1

Published on

Published in: Technology, News & Politics
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,630
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
29
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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. おしまい
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×