さて、構築に入る前に今回構築する環境について簡単に説明します。
まずはLVS(Linux Virtual Server)です。
LVSとは「Linux Virtual Server」の略で、その名通り、仮想サーバを構築する技術(プロジェクト)の事で、
「The Linux Virtual Server Project」で進められています。
その中で現在主に認知されているものとしては「IPVS(IP Virtual Server)」が有名です。
今回は、このIPVSと「keepalived」を組み合わせて、
MySQL Clusterのブローカーとして動作させます。
まず最初にこれまでの説明で構築できたMySQL Cluster環境のおさらいと、
その問題点について再度確認をします。

前回も述べたとおり、現状の構成の問題点は、言うまでもなく折角MySQLが
Cluster環境となっているにも係らず、そのMySQLDノードの状態を自ら把握し、
正常なノードに接続するような対応をする必要があります。
今回は、IPVSとKeepalivedを使い、ブローカーを構築します。
ブローカーを介するとどのような利点があるかまずは次の図を見てください。

ブローカーの役割は、正常なMySQLDノードに対してクライアントからの要求を転送する機能を有します。
こうすることで、クライアントノードは接続に際して
実サーバであるMySQLDノードを意識する必要がありません。
また、図中ではMySQLDノード(1)に対してのみアクセスしているようにみえますが、
実際は、MySQLDノードの状態に応じて、両サーバに対して負荷分散させたり、
いずれかのノードに障害がでている場合は、縮退し正常なノードにのみ転送が行われるようになります。
但し、上記の説明にもありますが、ここでいう構築を想定しているブローカーにも一部難点があります。
それは、Webサービスを構築する場合や、バックエンドにアプリケーションサーバを配置する場合等、
データベースとの接続に永続的接続を利用する場合があります。
今回構築するブローカーはMySQL自体をクラスタリングしているわけではない為、
残念ながら接続済みのセッションのフェールオーバーは行えません。
永続的な接続を利用するアプリケーションに対するブローカーとしては、
本方式は利用できませんのであらかじめご理解ください。
さて、少し注意事項を説明したので、本来の説明に戻ります。
ここまでの説明の機能は、IPVSのみで実現することが可能です。
冒頭でも述べたとおり、今回は「keepalived」も組み合わせます。
「keepalived」とはLVSの冗長化を実現する仕組みで、簡単にIPVSを二重化させることができます。
上記でも述べたとおり、今後はブローカ経由でクライアントは実サーバにアクセスするわけですが、
ブローカをシングル構成にしていては折角のMySQL Clusterの意味がありません。
そこでkeepalivedを組み合わせてブローカ自体を二重化し冗長性を確保します。
今回は次回以降の準備作業を行う必要がありますので、その説明に入ります。
なお、対象の環境がCentOS5.1であることを前提にしています。
異なる環境である場合は適時読み替えてください。
基本的なファイルはyumで導入が可能なのですが、
残念ながら「keepalived」についてはCentOS5.1ではyumおよびRPMでの導入ができません。
そこで、今回はあらかじめRPMをつくりそれを利用することにします。
RPMをつる方法としてはいろいろありますが、
今回はFedoraCoreのSRPMを元にリビルドして作成します。
必要なものは以下のものです。
- kernel-devel
- rpm-build
- gcc
- keepalived-1.1.13-6.fc6.src.rpm
- linux-2.6.18.8.tar.gz
「kernel-devel」と「rpm-build」そして「gcc」についてはyumで導入できます。
「keepalived-1.1.13-6.fc6.src.rpm」はリビルドする元となるファイルです。
「kernel-devel」と「linux-2.6.18.8.tar.gz」はリビルドする上で必要となるファイルです。
「rpm-build」はリビルドを行うコマンドである「rpmrebuild」を提供します。
「gcc」はいうまでもなくリビルド時に必要となるコンパイラです。
では早速説明を行います。
1.「kernel-devel」の導入
「kernel-devel」はyumで導入が可能です。
>yum install kernel-devel
2.「rpm-build」の導入
「rpm-build」も「kernel-devel」同様にyumで導入が可能です。
> yum install rpm-build
3.「gcc」の導入
「gcc」も「rpm-build」同様にyumで導入が可能です。
> yum install gcc
4.「keepalived-1.1.13-6.fc6.src.rpm」を配置
さて、いうまでもなくCentOS5.1用のRPMがないわけなので、
もちろんCentOS5.1用のRPMからリビルドはできないわけです。
方法としては、ソースファイルから自前でもろもろ準備する方法もあるわけですが、
ちょっと今回は手抜きをします。
Fedoraa6用のSRPMが流用できることがわかったのでベースはこちらを利用します。
なお、「keepalived-1.1.13-6.fc6.src.rpm」の入手は以下のミラーサーバよりどうぞ。
・KDDI研究所(FedoraCore6-extras:SRPM)
・理科学研究所(FedoraCire6-extras:SRPM)
・IIJ(FedoraCire6-extras:SRPM)
パッケージを取得したら、作業ディレクトリを作成します。
>mkdir /usr/src/redhat/
作業ディレクトリの作成を行ったらパッケージを展開します。
>rpm -i keepalived-1.1.13-6.fc6.src.rpm
実行後、「/usr/src/redhat/」配下に「SOURCES」及び「SPECS」ディレクトリが作成されます。
まずは、ここで作業を次に進めます。
5.「/net/core/」関連のファイルを配置
このまま作業を進めると「Use LinkWatch」が有効になりません。
これを有効にする為の作業を行います。
まずは、コチラから「linux-2.6.18.8.tar.gz」を取得します。
>wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.8.tar.gz
取得が完了したらまずはファイルを展開します。
>gunzip linux-2.6.18.8.tar.gz
>tar xvf linux-2.6.18.8.tar
これで「linux-2.6.18.8」配下にファイルが展開されます。
今回はこの中から「/net/core/」配下のみを「/usr/src/kernel/net/core/」配下に配置します。
なお、対象のディレクトリには「Makefile」が存在しておりコピーの再に上書きされる為、
念のためリネームしてた上でコピーを行います。
>cd /usr/src/kernels/2.6.18-53.1.14.el5-i686/net/core/
>mv Makefile Makefile.old
>cd
>cd ./linux-2.6.18.8/net/core/
>cp * /usr/src/kernels/2.6.18-53.1.14.el5-i686/net/core/
以上の操作でリビルド時に必要となるファイルはそろいました。
6.SPECファイルの編集
このままリビルドを実施すると「–with-kernel-dir」が指定されていません。
少なくともCentOS5.1では、指定しない場合「Use IPVS Framework」等が有効になりません。
そこで、SPECファイル内の「%configure」部分を少し修正します。
1 2 3 4 | # 修正前 #%configure --with-kernel-dir="/lib/modules/%{kernel}/build" # 修正後 %configure --with-kernel-dir="/usr/src/kernels/2.6.18-53.1.14.el5-i686" |
「2.6.18-53.1.14.el5-i686」の部分についてはご自身の環境に合わせてください。
これでリビルドの事前作業は完了しました。
7.RPMの作成
最後に実際にリビルドを実施し、CentOS5.1用のkeepalivedのRPMを作成します。
>rpmbuild -bb /usr/src/redhat/SPECS/keepalived.spec
正常にリビルドが完了すると「/usr/src/redhat/RPMS/i386/」配下に
「keepalived-1.1.13-6.i386.rpm」が作成されているはずです。
※「i386」は環境によって異なります。
以上でCentOS5.1用のkeepalivedのRPMが完成しました。
最後に、本エントリを書くにあたり以下のBlogを参考にさせていただきました。
次回からLBノードの構築について説明します。
お疲れ様でした。
- Newer: LVSを使ったブローカーの構築:LVS(シングル構成)の構築と確認
- Older: LVSを使ったブローカーの構築
Comments:1
- danbo-ace 09-02-20 (金) 19:36
-
前回の記事のとおり設定しましたが、設定できませんでした。
確認をお願いします。
Trackback+Pingback:0
- TrackBack URL for this entry
- http://blog.technology-knowledge.jp/2008/05/09/148/trackback/
- Listed below are links to weblogs that reference
- LVSを使ったブローカーの構築:構築環境についての説明 from SeeIn開発日誌
