<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns="http://purl.org/rss/1.0/">
  <channel rdf:about="http://doruby.kbmj.com:80/tacchi_on_rails/20071227/DRBD_/feed">
    <title>tacchi&#12398;&#20013;&#36523;&#65288;ruby on rails&#12398;&#12471;&#12473;&#12486;&#12512;&#38283;&#30330;</title>
    <link>http://doruby.kbmj.com:80/tacchi_on_rails</link>
    <description></description>
    <image rdf:resource="http://doruby.kbmj.com:80/users/tacchi/thumbnail.png"/>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://doruby.kbmj.com:80/tacchi_on_rails/20071227/DRBD_"/>
      </rdf:Seq>
    </items>
  </channel>
  <image rdf:about="http://doruby.kbmj.com:80/users/tacchi/thumbnail.png">
    <title>tacchi&#12398;&#20013;&#36523;&#65288;ruby on rails&#12398;&#12471;&#12473;&#12486;&#12512;&#38283;&#30330;</title>
    <link>http://doruby.kbmj.com:80/tacchi_on_rails</link>
    <url>http://doruby.kbmj.com:80/users/tacchi/thumbnail.png</url>
  </image>
  <item rdf:about="http://doruby.kbmj.com:80/tacchi_on_rails/20071227/DRBD_">
    <title>DRBD&#12398;&#12452;&#12531;&#12473;&#12488;&#12540;&#12523;</title>
    <link>http://doruby.kbmj.com:80/tacchi_on_rails/20071227/DRBD_</link>
    <description>DRBDDRBD&#12392;&#12399;Distributed Replicated Block Device&#12398;&#30053;&#12391;&#12289;&#26412;&#23478;WEB&#12469;&#12452;&#12488;&#12399; http://www.drbd.org/&#12391;&#12377;&#12290;&#12502;&#12525;&#12483;&#12463;&#12487;&#12496;&#12452;&#12473;&#20840;&#20307;&#12434;&#12493;&#12483;&#12488;&#12527;&#12540;&#12463;&#32076;&#30001;&#12391;&#12511;&#12521;&#12540;&#12522;&#12531;&#12464;&#12375;&#12390;&#12356;&#12414;&#12377;&#12290;&#35201;&#12399;&#12289;&#26132;&#12399;rsync&#12392;cron&#12434;&#21033;&#29992;&#12375;&#12390;&#12511;&#12521;&#12540;&#12522;&#12531;&#12464;&#12375;&#12390;&#12356;&#12383;&#12418;&#12398;&#12434;&#12289;DRBD&#12391;&#12391;&#12365;&#12385;&#12419;&#12358;&#12424;&#12392;&#12356;&#12358;&#12371;&#12392;&#12391;&#12377;&#12290;Ruby&#26696;&#20214;&#12391;&#24517;&#35201;&#12384;&#12387;&#12383;&#12398;&#12391;DRBD&#12392;HeartBeat&#12434;&#21033;&#29992;&#12373;&#12379;...</description>
    <content:encoded>
      <![CDATA[<h4>DRBD</h4><br />DRBDとはDistributed Replicated Block Deviceの略で、本家WEBサイトは <a href="http://www.drbd.org/" target="_blank">http://www.drbd.org/</a>です。<br /><br />ブロックデバイス全体をネットワーク経由でミラーリングしています。<br />要は、昔はrsyncとcronを利用してミラーリングしていたものを、DRBDでできちゃうよということです。<br /><br />Ruby案件で必要だったのでDRBDとHeartBeatを利用させてもらいました。<br />なかなか苦戦しましたが、先駆者がのこしてくれているありがたい情報を元に設定を行っていきました。<br />参考にさせていただいたのは、以下のサイトです。<br /><ul><li><a href="http://www.wbc.co.jp/~drbd/" target="_blank">http://www.wbc.co.jp/~drbd/</a></li><li><a href="http://www.valinux.co.jp/contents/tech/techlib/eos/drbd_heartbeat/drbd_heartbeat_01.html">http://www.valinux.co.jp/contents/tech/techlib/eos/drbd_heartbeat/drbd_heartbeat_01.html</a></li></ul><br /><br />Webサーバが2台あり、テストサーバから本番サーバへのデプロイを同時に反映させること、差異のないアプ<br />リケーションを稼働させるという意図から、DRBDを利用。<br /><br /><br />テストサーバとWebサーバをDRBDで結ぶという案もありましたが、実際に稼働しているアプリケーションを<br />容易に変更できないようにという意図から、テストサーバとWebサーバ間はrsyncで結び、デプロイシェルを<br />作成し、それを叩けば本番に反映できるようにしました。（やり方は、沢山考えられますが、今回はこれで<br />行きました。）<br /><br /><br />じゃぁ実際の設定を以下に示します。<br /><br />■まず、DRBDのインストールから（Web01とWeb02にインストール）<br /><br /><div class="blue">wget http://oss.linbit.com/drbd/8.0/drbd-8.0.5.tar.gz<br />tar zxvf drbd-8.0.5.tar.gz<br />cd drbd-8.0.5<br />make rpm<br />cd dist/RPMS/x86_64<br />rpm -ivh drbd-8.0.5-3.x86_64.rpm drbd-km-2.6.18_8.1.8.el5-8.0.5-3.x86_64.rpm<br />drbd-debuginfo-8.0.5-3.x86_64.rpm</div><br /><br />■設定ファイルをいじりましょう。(/etc/drbd.conf) ※もちろんWeb01とWeb02に設定<br /><br /><div class="blue">resource r0 {<br /><br />protocol C;<br /><br />startup {<br />degr-wfc-timeout 120; # 2 minutes.<br />}<br /><br />disk {<br />on-io-error detach;<br />}<br /><br />syncer {<br />rate 100M;<br />}<br /><br />on igpweb01 {<br />device /dev/drbd0;<br />disk /dev/sda3;<br />address 192.168.2.79:7789;<br />flexible-meta-disk internal;<br />}<br /><br />on igpweb02 {<br />device /dev/drbd0;<br />disk /dev/sda3;<br />address 192.168.2.222:7789;<br />meta-disk internal;<br />}</div><br /><br />■iptablesを利用しているならiptablesの設定も必要！<br />tcpの7789ポートを利用しますので、アクセス許可を行います。※もちろんWeb01とWeb02に設定<br /><br /><div class="blue">/sbin/iptables -I INPUT -p tcp -m tcp --dport 7789 --syn -j ACCEPT<br />/etc/rc.d/init.d/iptables save<br />service iptables restart</div><br /><br />■サービスの起動をしてみましょう　※Web01とWeb02で起動。<br /><div class="blue">service drbd start</div><br /><br />■使ってみましょう<br />　Web01 以下を実行<br /><br /><div class="blue">cat /proc/drbd</div><br />上記コマンドをたたくと以下が表示される。今は両方セカンダリですよーって表示。<br /><div class="blue">cs:Connected st:Secondary/Secondary</div><br /><br /><br />■じゃぁWeb01をプライマリに変更しましょう。<br /><div class="blue">drbdsetup /dev/drbd0 primary<br />cat /proc/drbd<br /></div>以下の表示に変わったはず。<br /><div class="blue">cs:Connected st:Primary/Secondary</div><br /><br /><br />Web01<br />■じゃぁマウントしてみましょう。<br /><div class="blue">mount /dev/drbd0 /mnt/drbd0</div><br />■ファイルを作っておいてみる<br /><div class="blue">touch /mnt/drbd0/test</div><br />■マウント解除して、Web02の方でmountできるようにsecondaryにする。<br /><div class="blue">umount /dev/drbd0<br />drbdsetup /dev/drbd0 secondary</div><br /><br />Web02<br /><br /><div class="blue">drbdsetup /dev/drbd0 primary<br />（primaryにする。）<br />mount /dev/drbd0 /mnt/drbd0<br />ls /mnt/drbd0<br /></div><br />こちらにもtestができてればOK<br /><br />これで設定完了です。]]>
    </content:encoded>
    <dc:creator>tacchi</dc:creator>
    <dc:date>2007-12-27T22:55:00+09:00</dc:date>
  </item>
</rdf:RDF>
