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

2014年5月13日(火)
古賀 政純

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

スケールアウト型システムでは、管理対象サーバーの台数が増えるため、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およびハードウェアの時刻を手動で調整する場合があります。

日本ヒューレット・パッカード株式会社 プリセールス統括本部 ソリューションセンター OSS・Linux担当 シニアITスペシャリスト

兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師を担当。科学技術計算サーバーのSI経験も持つ。2005年、大手製造業向けLinuxサーバー提案で日本HP社長賞受賞。2006年、米国HPからLinux技術の伝道師に与えられる「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。日本HPプリセールスMVPを4度受賞。現在は、Linux、FreeBSD、Hadoop等のOSSを駆使したスケールアウト型サーバー基盤のプリセールスSE、技術検証、技術文書執筆を担当。日本HPのオープンソース・Linuxテクノロジーエバンジェリストとして講演活動も行っている。Red Hat Certified Engineer、Red Hat Certified Virtualization Administrator、Novell Certified Linux Professional、EXIN Cloud Computing Foundation Certificate、HP Accredited Systems Engineer Cloud Architect、Red Hat Certified System Administrator in Red Hat OpenStack、Cloudera Certified Administrator for Apache Hadoop認定技術者。HP公式ブログ執筆者。趣味はレーシングカートとビリヤード

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています