Subversionのシステム構成を考えてみた

タグ:

全社的にSubversionを使えないか調べているんだけど、その構成に関する資料はとても少ない。
SVN1.5だとエンタープライズ環境におけるSubversionの複製アーキテクチャ by japan.internet.com デベロッパーとかSubversionを見直せ by プログラマの思索さんがとても詳しい。

そこで、Subversionのシステム構成をまとめてみた。いきなり「WebDAV Transparent Write-Through Proxyっすよ!」とMTGで提案するのも何なので、まずは整理。


単一サーバの場合


これは簡単。WindowsならばAll-in-one Tracとか使えばすぐ環境ができる。
昔の職場では、自分のPCに入れて使っていたのでこの構成になる。

いいところ
・シンプル
・小さいプロジェクトとかならこれで十分

悪いところ
・リポジトリが壊れるとバックアップからの復旧になる


複数サーバ・単一リポジトリの場合


NFSとかを使ってディクス共有ができるのであればこういう構成も可能。ただし、リポジトリは結局1つなので、Apacheは冗長になっているけど、リポジトリが壊れたらおしまい。サーバ間でリポジトリを同期しなくていいのが楽で、Apacheの故障であれば有効かもしれないけど、Apacheの冗長化があまり効果を発揮していない気もする。

こんときに注意しないといけないのが、SVNはApacheサーバはAct/Actでいいんだけど、両方にリクエストを渡すのはだめっぽい。どうも複数サーバから単一リポジトリにコミットなどWriteすると、リポジトリが壊れるみたい。
Act/Actにしておいて、片サーバのみにリクエストを投げるようにLBなりで設定しておかなければえらいめにあう。
LBが使えないなら、2つのSVNサーバそれぞれにドメインを割りあって、待機系のSVNサーバからはコミットできないようにしておかないとだめ。

いいところ
・Apacheの停止に強い
・サーバ間のリポジトリ同期が必要ない

悪いところ
・LBがない場合、マスタとスレーブの使い分けが必要
・リポジトリが壊れるとバックアップからの復旧になる


複数サーバ・複数リポジトリの場合(svnsync利用)


複数にリポジトリをとると、サーバ間の同期が気になると思う。
SVNはsvnsyncという機能を持っており、リモートやローカルの別リポジトリと同期し、レプリケーションを作成することができる。
この場合、ミラーリングしているので、障害時にApacheをスイッチできれば、SVNは止まらず利用できる。

ただし、通常利用するマスタSVNはRW。スレーブSVNはRとしておかないと、スレーブにコミットしたときに。同期はマスタ>スレーブの一方通行なので、マスタと同期がとれなくなる。
よって障害時はスレーブをRで運用しなければならない。

これは問題に感じるが、コミットの緊急性よりもチェックアウトの緊急性が高いはずなので、障害復旧まではコミットできないけど、チェックアウトはできるのでいいんじゃね?というポリシーに納得できれば、シェルを書くだけで簡単に組める。

LBが使えたらこの構成で十分そうだし、LBが使えず、ユーザの手間を気にしなくていいなら、2つのSVNサーバに2つのドメインを割り当てて使うのもありかなと。

いいところ
・Apacheの停止に強い
・リポジトリが壊れてもRでアクセスができるため可用性が高い

悪いところ
・LBがない場合、マスタとスレーブの使い分けが必要


WebDAV Transparent Write-Through Proxyを使う場合


SVN1.5の新機能。WebDAV 透過ライトスループロキシというらしい。

複数サーバ・複数リポジトリの場合(svnsync利用)に似ていて、svnsyncを使うのだけれども、ちょっと違うのが、LBなど使わずにDNSラウンドロビンで2サーバを活用する場合に便利そう。

LBが振り分けを判定するのではなく、SVNが判定する仕組みになっている。

スレーブSVNにリクエストが来た場合、コミットとかのWrite処理だったらマスタに透過的にProxyする。こちらもマスタだけがWrite処理というポリシーになっている。
Readだけなら

Gitのような分散リポジトリ構成を組めるので、理想形と言えば理想。Apache2.2系のmod_proxyを使っているらしいので、Apacheのバージョンに注意が必要。

いいところ
・Apacheの停止に強い
・リポジトリが壊れてもRでアクセスができるため可用性が高い
・LBとかいらない
・WriteはマスタだけになるがRは負荷分散できる

悪いところ
・特になし

参考

バージョン管理システム「Subversion」の開発者が執筆したSubversi... 続き
Subversionの導入から運用まで、即戦力の一冊。最短距離で目的にたどり着け... 続き
バージョン管理からプロジェクト管理へ。Subversionでコミットするだけ。W... 続き
この本は、Subversionというバックアップのためのソフトについて説明したも... 続き

トラックバック(0)

このブログ記事を参照しているブログ一覧: Subversionのシステム構成を考えてみた

このブログ記事に対するトラックバックURL: http://daipresents.com/mt/bin/mt-tb.cgi/2147

コメントする


画像の中に見える文字を入力してください。

著者:James Shore, Shane Warden 税込 2,100 円
アジャイル開発は人のなせる技である。アジャイル開発を極めるためには、その時々で無数の可能性を評価して最善の方策を選択することを学ぶ必要がある。本書は、あなたがアジャイル開発の「道」を極める手助けをしたい。・・・
著者:Yugui 税込 2,310 円
他言語でのプログラミング経験を持つ人を対象に、Rubyの特徴、Rubyならではの方法や慣習について解説。Rubyの基礎的な部分とメタクラスやブロック構文のような独自の概念、それらにまつわる文化を説明し、Ruby特有の考え方を知ってもらうことを目的としている。Ruby1.8及び1.9に対応している。 「BOOK」データベースより
著者:前田剛 税込 2,100 円
RubyonRailsで実施されたWebベースのプロジェクト管理システムRedmaineの解説書。

daipresents!!

҂̑蕨

tWn{ Google Code