• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
20080617 ejabberd and erlang
 

20080617 ejabberd and erlang

on

  • 4,941 views

 

Statistics

Views

Total Views
4,941
Views on SlideShare
4,931
Embed Views
10

Actions

Likes
2
Downloads
28
Comments
0

2 Embeds 10

http://www.slideshare.net 8
http://www.slideee.com 2

Accessibility

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    20080617 ejabberd and erlang 20080617 ejabberd and erlang Presentation Transcript

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