naoya です。
フォト蔵などのサービスは、社内にあるサーバ群で運用しています。現在、サービスの規模が成長するにつれて、サーバの台数も約20台強くらいになってきました。
すべてのサーバには、Fedora Core 5がインストールされていて、すべてのサーバにまったく同じパッケージがインストールされています。パッケージの更新には、Fedora Core 5に付属しているyumを使ってすべてのサーバを定期的に更新をしているのですが、yum-fastestmirrorをインストールしている状態でもパッケージの更新に時間がかかるようなってきました。
そこで、一台のサーバにyumのローカルミラーリポジトリを構築してパッケージのダウンロード時間を減らしてみました。今日は、yumのローカルミラーリポジトリを構築する手順を紹介します。
1.必要なパッケージのインストール
yum-utilsとcreaterepoパッケージをインストールします。
# yum -y install yum-utils createrepo
2.リポジトリディレクトリの準備
ローカルミラーリポジトリ用のディレクトリ(例えば、/var/www/html/repos)を用意します。
3.同期用のシェルスクリプトの実行
Fedora repository mirroring script using reposyncにyumのローカルミラーリポジトリを同期するためのシェルスクリプトが紹介されていました。このままだと、Fedora Core5でうまく動作しないこと、最近CentOSの別サーバ群も増えたため、repos_sync.shとして変更しました。
repos_sync.shを使って、Fedora Core 5のアップデートパッケージを同期するには、次のように実行します。
# repos_sync.sh fedora updates
また、repos_sync.shをcronに登録しておけば定期的に更新できて便利です。
4.リポジトリの公開
ローカルミラーリポジトリをHTTPでアクセスできるように公開します。Apacheの設定ファイルに、次の内容を追加します。下記の設定は、ローカルミラーリポジトリのサーバ名をreposとしています。
<VirtualHost * *:443> ServerName repos DocumentRoot /var/www/html/repos </VirtualHost>
5.yumの設定変更
それぞれのサーバのyumで参照するミラーをローカルミラーリポジトリに変更します。yumで参照するミラーを変更するとには、/etc/yum.repos.d/*.repoファイルを変更します。例えば、/etc/yum.repos.d/fedora-updates/repoの場合は[updates]セクションのmirrorlistを次のように設定します。その他の*.repoファイルも同じように変更します。
mirrorlist=file:///etc/yum.repos.d/mirrorlist
/etc/yum.repos.d/mirrorlistを次の内容で作成します。
http://repos/repos/fedora/core/5/$ARCH
あとは、他のサーバからyum check-updateを実行して、正しくローカルミラーリポジトリが参照されていることを確認します。
また、社内にあるサーバ群は、社員の間でpermo(パーモ)と呼ばれているのですが、なかなか浸透しません。今、社内でこの名前を浸透させる作戦を模索中ですが、それはまた別の機会に紹介したいと思います。