スケールアウト型OSSクラウド基盤に最適なUbuntu Serverをひも解く 9

[実践編] Ubuntu Serverの運用・管理、商用製品の利用メリットと今後の展望(前編)

大量の管理対象ノードの管理スケールアウト型システムでは、管理対象サーバーの台数が増えるため、OSやアプリケーションの設定を一斉に行いたいニーズがあります。クラスターのノード全体が1つの用途に特化している場合やソフトウェアのバージョンが固定化されている場合は、全ノードに一斉にオペレーションを行う運用

古賀 政純

2014年5月13日 20:20

大量の管理対象ノードの管理

スケールアウト型システムでは、管理対象サーバーの台数が増えるため、OSやアプリケーションの設定を一斉に行いたいニーズがあります。クラスターのノード全体が1つの用途に特化している場合やソフトウェアのバージョンが固定化されている場合は、全ノードに一斉にオペレーションを行う運用がみられます。

一方、OSやアプリケーションのアップデート作業が個別に発生する場合や、Hadoopクラスター、OSS系のデータベース・システムのように、マスター・スレーブ方式のシステムの場合は、クラスター全体で一斉に設定を施すことが難しい場合もあります。また、科学技術計算用途のスーパーコンピューターや分析基盤として近年導入が進んでいるHadoopクラスターでは、全体のクラスターを、ユーザーの用途やアプリケーションに応じたサブ・クラスターに分割して運用する場合もあります。
マスター・スレーブ間や複数のサブ・クラスター間の設定ファイル、オペレーションの出力結果の違いを差分表示させることで、システムの構築、運用の効率化を図る運用もみられます。

以下では、スケールアウト型基盤特有の管理手法について、いくつかご紹介します。

スケールアウト型基盤におけるコマンドラインでの作業効率を高めるためには、コマンド発行用のスクリプトをいくつか用意しておくことが一般的です。また、管理の半自動化を実現する便利なツール類がUbuntu Serverの環境で利用可能です。

スケールアウト基盤における公開鍵認証キーのコピー作業

スケールアウト型システムの管理ノードへのファイルコピーやコマンド発行を行うために、公開鍵の登録を行うのが一般的です。事前準備として、/etc/hostsに管理対象サーバーのIPアドレスとホスト名の対応を記述しておきます。

# vi /etc/hosts
172.16.12.1     node001.jpn.linux.hp.com		node001
172.16.12.2     node002.jpn.linux.hp.com		node002
...
172.16.12.254   node254.jpn.linux.hp.com		node254

公開鍵の登録作業は、id_rsa.pubファイルを接続先のホストにscpコマンドによってコピーし、接続先にログイン後、ユーザーのホームディレクトリ配下の.sshディレクトリの下にauthorized_keysファイルとして登録することで実現が可能ですが、ssh-copy-idコマンドを利用することによって、登録作業を簡素化することができます。

大量の管理対象サーバーへの公開鍵の配布を簡素化するコマンド例を以下に示します。

# ssh-keygen -t rsa -b 2048
# for i in `seq -f %03g 1 254`; do ssh-copy-id root@node$i; done

[注意] ssh-copy-idコマンドによる公開鍵登録の初回は、SSH接続先のユーザーのパスワード認証による人間の入力作業が必要になりますので注意してください。

サーバー台数が数百台規模になるようなスケールアウト型システムの場合、ホスト名に数値を与え、先述の/etc/hostsファイルに記述したホスト名のように、ホスト名の一部にゼロ埋めを施したホスト名で管理する場合が少なくありません。ゼロ埋めを施した数値を自動的に生成するには、seqコマンドに-fオプションを付与し、その後に、C言語のprintf関数の数値を表す書式を付与します。

コマンド一斉発行ツール「Taktuk」をスケールアウト型基盤に導入する

Taktukは、複数の管理対象サーバーにコマンドをブロードキャストで発行できる管理ツールです。Ubuntu用のパッケージが用意されており、apt-getコマンドで簡単にインストールすることができます。Taktukを使うには、管理対象となる全てのノードにTaktukをインストールする必要があります。前述のssh-copy-idコマンドによる公開鍵の登録を行えば、公開鍵認証により、パスワード認証による人間のパスワード入力作業を行うことなく、全ノードに対してTaktukパッケージのインストール作業を自動化することができます。
Taktukパッケージのインストールは、apt-getコマンドで行いますが、全管理対象サーバーに対してsshコマンドを使って行いますので、for文を組み合わせてインストールを行います。下記は、管理対象サーバーnode001からnode253までの合計253台のマシンにTaktukをインストールする例です。

# for i in `seq -f %03g 1 253`; do ssh root@node$i "apt-get update -y; apt-get install taktuk -y" ; done

Taktukは、管理対象サーバーをリストアップしたファイルを読み込ませることによって、複数の管理対象サーバーに対してコマンドをブロードキャストで発行することができます。管理対象サーバーをリストアップしたファイルを作成します。

# vi ~/.hostlist
node001
node002
...
node253

Taktukの運用例としては、複数の管理対象サーバーのハードウェア資源の利用状況の確認や、パッケージの一斉インストールなど様々ですが、今回は、Taktukを使って全管理対象サーバーの時刻を合わせてみましょう。

# taktuk -f ~/.hostlist -l root broadcast exec [ " date 040906532014; hwclock --systohc" ]

上記は、dateコマンドで、全管理対象サーバーの時計を2014年4月9日の午前6時53分に合わせる例です。HadoopクラスターやGlusterFS、Cephクラスター等のノード群が協調して稼働するようなスケールアウト型システムでは、初回導入時だけでなく、日常的な利用においても、NTPを使ってノード群の時計を合わせておくことが正常稼働に重要です。

しかし、構築スケジュールや技術要員確保の関係上、NTPサーバーに接続できない状況でクラスターを構築しなければならない場合もあります。このような場合、時計のズレによるソフトウェアの誤動作を回避するためにも、OSおよびハードウェアの時刻を手動で調整する場合があります。

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る