なぜまさにクラスターなのか?
請求は可能な限りフォールトトレラントであるべきだという大きな秘密を明かさないことを願っています。 そしてご存じのとおり、フォールトトレランスを実現する主な方法は冗長性です。 Ganetiを通じてこれを達成します。
Ganetiは、XenまたはKVM仮想化システムに基づく仮想化クラスター管理システムです。 DRBDを使用して、フェールオーバークラスターを整理します。
このアイデアを実装するには、Debian lennyがプリインストールされた2つのサーバーが必要です。 実際、1つの「課金が開始される」と、2つ目はホットリザーブになります。
サーバーの1つをnode1とし、残りの1つをnode2にします。
次のすべてを各ノードで実行する必要があります。
ディスクのパーティション分割から始めましょう。 各サーバーには2つの同一のハードドライブがあると想定されています。 インストール中に、サイズが2 GBのソフトウェア「ミラー」レイドを作成し、ベースシステムをインストールしました。
こんな感じです。
node1:~# fdisk -l /dev/hda
Device Boot Start End Blocks Id System
/dev/hda1 1 243 1951866 fd Linux raid autodetect
node1:~# fdisk -l /dev/hdb
/dev/hdb1 1 243 1951866 fd Linux raid autodetect
node1:~# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hda1[0] hdb1[1]
1951744 blocks [2/2] [UU]
ここで、別のミラー化されたRAIDアレイを作成してみましょう。たとえば、サイズが5 GBで、作成されたアレイのサイズですが、両方のノードが必ず一致する必要があります。
node1:〜#fdisk -l / dev / hda
/ dev / hda1 1 243 1951866 fd Linux raid autodetect
/ dev / hda2 244865 4996215 83 Linux
node1:〜#fdisk -l / dev / hdb
/ dev / hdb1 1 243 1951866 fd Linux raid autodetect
/ dev / hdb2 244865 4996215 83 Linux
レイドを作成します。
node1:〜#mdadm --create / dev / md1 --level 1 --raid-devices = 2 / dev / hda2 / dev / hdb2
起動時に登録します。
node1:〜#mdadm --examine --scan | grep -v / dev / md0 >> /etc/mdadm/mdadm.conf
/ etc / hostsにホストの説明を追加します。正しい承認のために必要です
node1:〜#mcedit / etc / hosts
192.168.0.111 node1.name.org node1
192.168.0.112 node2.name.org node2
192.168.0.113 cluster1.name.org cluster1
192.168.0.114 inst1.name.org inst1
インターフェースの設定の説明は省略します。これは自分で処理できると思います。
LVM2パッケージをインストールする
node1:〜#apt-get install lvm2
node1:〜#pvcreate / dev / md1
物理ボリューム「/ dev / md1」が正常に作成されました
node1:〜#vgcreate xenvg / dev / md1
ボリュームグループ「xenvg」が正常に作成されました
ガネーティを入れる
node1:〜#apt-get install ganeti
Xenをカスタマイズする
node1:〜#mcedit /etc/xen/xend-config.sxp
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-relocation-address '')
(ネットワークスクリプトネットワークブリッジ)
#(network-script network-dummy)
(vif-script vif-bridge)
(dom0-min-mem 0)
GRUBをカスタマイズする
node1:〜#mcedit /boot/grub/menu.lst
##デフォルトのXenブートオプションで使用するXenハイパーバイザーオプション
#xenhopt = dom0_mem = 256M
ブートローダーの更新
node1:〜#/ sbin / update-grub
リブートし、すべてが機能する場合、クラスターの作成に進みます。
DRBDをインストールする
node1:〜#apt-get install drbd8-modules-2.6.26-2-xen-686 drbd8-utils
スタートアップに追加
node1:〜#echo drbd minor_count = 64 >> / etc / modules
モジュールをロードします(もちろん、ノードを再起動しなかった場合)
node1:〜#modprobe drbd minor_count = 64
LVMを構成します
node1:〜#mcedit /etc/lvm/lvm.conf
filter = ["r | / dev / cdrom |"、 "r | / dev / drbd [0-9] + |"]
これで、クラスターを開始する準備がすべて整いました。 クラスターをnode1が所有するようにします。
最初のノード(node1)でコマンドを実行します
node1:〜#gnt-cluster init -b eth0 -g xenvg --master-netdev eth0 cluster1.name.org
node2をクラスターに追加します。
node1:〜#gnt-node add node2.name.org
すべてがうまくいった場合、インスタンスを作成します(請求が機能する仮想マシン)
node1:〜#gnt-instance add -t drbd -n node2.name.org:node1.name.org -o debootstrap -s 2g --swap-size 128 -m 256 --kernel /boot/vmlinuz-2.6.26 -2-xen-686 --ip 192.168.0.114 inst1.name.org
したがって、このコマンドは想定しています。
1. inst1.name.orgというクラスターに新しい仮想マシンを作成します
2. 2 GBのディスク、128 MBのスワップファイル、および256 MBのランダムアクセスメモリを割り当てました。
3.仮想マシンの配布-Debian(debootstrap)、xenカーネル
4. -nオプションに注意を払ってください。 どのノードがメインになり、どのノードが予約されるかを決定します。
したがって、エントリnode2.name.org:node1.name.orgは、node2がプライマリであり、node1が補助(ホットスタンバイ)であることを意味します。
クラスターの所有者が最初のノード(node1)である場合、インスタンスは2番目のノード(node2)で実行することをお勧めします。 最初のノード(node1)に障害が発生した場合、最初のノード(node1)が動作に戻るとすぐに課金が継続されます。ネットワークRAIDは同期し、クラスターは通常の動作に復元されます。 2番目のノード(node2)に障害が発生した場合、クラスターの制御を維持し、最小限のダウンタイムで最初のノード(node1)にインスタンスを転送し、「スプリットブライアン」を恐れることなく2番目のノードを静かに運用する機会があります。
インスタンスにアクセスするために、いくつかの操作を実行します。
node1:〜#gnt-instance shutdown inst1.name.org
node1:〜#gnt-instance startup --extra "xencons = tty1 console = tty1" inst1.name.org
今だけフルアクセスを取得できます
node1:〜#gnt-instance console inst1.name.org
「内部」インスタンスの操作のリスト(デフォルトでは、ルートには空のパスワードがあります)。
ネットワークをセットアップします。 (もう一度、あなたの知性、または忍耐力を願っています)
aptを構成します。
openssh-serverとudevをインストールします
/ etc / fstabに行を追加します
なし/ dev / pts devpts gid = 5、モード= 620 0 0
echo inst1> / etc / hostname(ホスト名の構成)
apt-getインストールロケール
dpkg-reconfigureロケール
tasksel install standard(「標準アセンブリ」に含まれるパッケージのインストール)
クラスタの初期セットアップが完了しました。
ganetiのドキュメントを必ず学習することをお勧めします。 通常モードでノードからノードにインスタンスを転送する方法、事故で転送する方法などを明確にする必要があります。 繰り返しますが、メモを作成することが不可欠です:事故が発生することはほとんどなく、脳は忘れがちであるため、緊急時にどのように行動し、ラミネートし、目の前に吊るすか
クラスターを起動した後、最初に何を考えるべきですか? 個人的には、何かを拒否するのが非常に難しい重度の仮面の男性の予期せぬ訪問に、あなたは非常に準備する必要があるように思えます。 準備は、すべての貴重なデータの暗号化とそのタイムリーなバックアップで構成されます。
その他の設定はすべて、仮想マシン(インスタンス)に直接関連しています。
暗号化から始めましょう。 このようにして実行します。 インスタンスが起動すると、ベースシステムがロードされ、システムは暗号化されたパーティションでファイルをマウントするためのパスフレーズを期待します。その後、データベース、請求、その他の「必要なサービス」を開始します。
これにより、すべてがインスタンス内に保存されますが、移行のためにマシンを完済する必要があります(暗号化されたパーティションをアンマウントします)。
必要なパッケージをインストールします。
inst1:〜#apt-get install loop-aes-modules-2.6.26-2-xen
inst1:〜#apt-get install loop-aes-utils
「古い」モジュールをアンロードします(インスタンスを再ロードできますが、これは確実です)
inst1:〜#modprobe -r loop
更新されたモジュールをダウンロードする
inst1:〜#insmod /lib/modules/2.6.26-2-xen/updates/loop.ko
暗号化されたパーティションのファイルを作成します
inst1:〜#dd if = / dev / zero of = / var / encrypt_file bs = 4k count = 10000
作成したファイルをマウントします。 パスフレーズについては推奨しませんが、それは好みの問題です。
inst1:〜#losetup -e AES256 / dev / loop1 / var / encrypt_file
ファイルシステムを作成し、ext2の複製レベルで十分です
inst1:〜#mkfs -t ext2 / dev / loop1
ファイルをアンマウントします
inst1:〜#losetup -d / dev / loop1
暗号化されたパーティションをマウントする例
inst1:〜#ボリュームのマウント-o loop = / dev / loop1、暗号化= AES256 / var / secure / -t ext2
スワップファイルの暗号化はあなたの裁量ですが、注意してください-パラノイアは伝染性のものです。
データのバックアップを整理する方法は? クラウンですばらしいバックアップスクリプトを実行できます。 または、責任を持ってアプローチし、一元化されたバックアップシステム(たとえば、bacula)をセットアップすることができます。チューニングの推奨事項と例は、Baculaの構成と理解を参照してください 暗号化されたパーティションにもバックアップを保存することをお勧めします。また、サーバーを遠く離れた場所に、狭い人々に知られている場所に保管することをお勧めします。
データベースをバックアップするには、ジョブの説明に行を追加することをお勧めします
ClientRunBeforeJob = "/ usr / local / bin / create_mysql_dump"
ClientRunAfterJob = "/ bin / rm -f /var/lib/bacula/mysql.dump"
データベースはサイズが大きくなる傾向があるため、データベースのダンプ時間が増加していることに注意してください。 この問題を回避するには、アセンブリ006以降に実装されたアーカイブテーブルの機能を使用できます。ロジックは単純です。アーカイブテーブルを別のデータベースに保存し、請求カーネルにアクセスしてデータをアーカイブし、アーカイブテーブルにビューを作成します。 データ自体はなく、ビューの構造のみが保存されるため、バックアップは大幅に高速化されます。 アーカイブテーブルのデータはバックアップできません。火災が発生した場合に保存するコピーは2つだけで十分です。
上記のすべての結果は、ディスクサブシステムの冗長性を高めたフェイルセーフクラスターの作成、ノードの地理的多様性、貴重なデータの暗号化とバックアップになります。
PSなぜNetUR UTM5を選んだのですか?
会社がこのライセンスを購入したとき、最初は詳細なドキュメントが原因であると考えました。詳細なドキュメントは2006年末の時点で260ページにも及ぶことが判明しました。 それから私は有能なもののためだと思った。 サポート。 私は主張しませんが、サポートは高レベルであることが判明しましたが、例外的な「非友好的」であり、生のドキュメントと相まって「製品」を購入する喜びを覆い隠し、移行を1年以上延長しました。 結局、すべてがシンプルであることが判明し、私たちの監督は友人に会いに行きました。そして、あなたが知っているように、猿は他の猿が同じことをしているのを見た場合にのみ狂乱で赤い果実を食べます。 したがって、ここで私たちはこの「製品」の所有者を誇りに思っています。
最後に正直に言うと、「製品」は非常に気まぐれで、文書化が不十分であることが判明しましたが、正しく構成された場合、非常に安定していたことが判明したため、調整されたシステムは、介入なしで1年以上機能しました。唯一のことはベースをきれいにすることでした