機械翻訳について

dcliユーティリティを使用したクラスタ間でのコマンドの実行

dcliユーティリティは、Oracle Big Data Cloud Machine上のサーバー・グループ全体でコマンドを実行し、出力を戻します。

この章の構成は、次のとおりです。

dcliユーティリティの概要

dcliユーティリティは、Oracle Big Data Cloud Machineクラスタ内のノードのグループにわたってコマンドを実行し、出力を戻します。 dcliを使用して、クラスタ上のソフトウェアを再インストールまたは再構成します。

パスワードなしSSHの設定

dcliユーティリティには、ローカル・サーバーとすべてのターゲット・サーバーの間にパスワードなしのSecure Shell(SSH)が必要です。 dcliユーティリティをローカル・サーバー上で実行すると、dcliで指定されたコマンドがターゲット・サーバー上で実行されます。

2つのスクリプトは、Oracle Big Data Cloud MachineでのSSHの使用を容易にします: setup-root-sshおよびremove-root-ssh これらのスクリプトは、dcliでも使用される2つのオプションを受け入れます:

  • -C: Hadoopクラスタ内のすべてのサーバーを対象とします

  • -g: ユーザー定義のサーバー群を対象とします

これらのオプションの詳細については、「表4-*」を参照してください。

注意:

MammothおよびMammoth Reconfigurationユーティリティには、リモートのrootアクセスが必要です。 ただし、Oracle Big Data Cloud Machineは通常の操作では必要ありません。

rootのパスワードなしSSHを設定するには:

  1. PuTTYまたは同様のユーティリティを使用してノードに接続します。 SSH接続タイプを選択します。 「Secure Shell(SSH)を使用したクラスタ・ノードへの接続」を参照してください。

  2. rootとしてログインします。

  3. クラスタ全体でrootのパスワードなしSSHを設定します:

    # setup-root-ssh
    

    各サーバーからssh key addedというメッセージが表示されます。

  4. これで、パスワードを入力せずにラック内の任意のサーバー上で任意のsshコマンドを実行できるようになりました。 dcliコマンドに加えて、scpを使用してサーバー間でファイルをコピーすることができます。

  5. rootからパスワードなしのSSHを削除するには:

    # remove-root-ssh
    

setup-root-sshremove-root-sshの完全なパラメータの説明も参照してください。

dcliの基本的な使い方

ヘルプの参照

dcliヘルプ・ページを表示するには、-hまたは--helpオプションを指定してdcliコマンドを入力します。 オプションなしでdcliコマンドを入力すると、コマンドの説明を見ることができます。

ターゲット・サーバーの特定

コマンドを実行するサーバーをコマンドラインまたはファイルで指定できます。 デフォルトのターゲット・サーバーのリストについては、 -tオプションを使用してください。 現行コマンドのターゲット・サーバーを変更するには、「表4-*」で説明されている-cまたは-gオプションを使用します。

一緒に管理するサーバーのグループを持つファイルを手動で作成することができます。 たとえば、サーバー1〜4のような特別な機能がないため、サーバー5〜18を一緒に管理することができます。

コマンドの指定

通常は、コマンドラインでターゲット・サーバー上で実行するコマンドを指定します。 ただし、頻繁に一緒に使用する一連のコマンド用のコマンド・ファイルを作成することも、複雑な構文のコマンド用に作成することもできます。 「表4-*」-xオプションを参照してください。

また、-fオプションを使用してファイルを実行することなく、ターゲット・サーバーにファイルをコピーすることもできます。

出力レベルの制御

-vオプションを使用して、または-nオプションを使用してより多くの情報をリクエストすることができます。 --maxlinesオプションで返される行数を制限するか、一致する文字列を-rオプションで置き換えることもできます。

次に、さまざまな出力レベルの例を簡単な例を使って示します: Linuxのdateコマンド。

注意:

1つのサーバー(node07)からの出力のみが表示されます。 これらの例の構文は、すべてのサーバーでdateコマンドを実行します。

これはデフォルトの出力で、サーバーの後ろに日付が表示されます。

# dcli date 
bda1node07-adm.example.com: Tue Feb 14 10:22:31 PST 2016

最小限の出力は、実行が完了するとOKを返します:

# dcli -n date 
OK: ['bda1node07.example.com']

Verbose出力は、コマンドが実行された設定に関する詳細な情報を提供します:

dcli -v dateoptions.nodes: Noneoptions.destfile: Noneoptions.file: Noneoptions.group: dcserversoptions.maxLines: 100000options.listNegatives: Falseoptions.pushKey: Falseoptions.regexp: Noneoptions.sshOptions: Noneoptions.scpOptions: Noneoptions.dropKey: Falseoptions.serializeOps: Falseoptions.userID: rootoptions.verbosity 1options.vmstatOps Noneoptions.execfile: Noneargv: ['/opt/oracle/bda/bin/dcli', '-g', 'dcservers', '-v', 'date']Success connecting to nodes: ['bda1node07.example.com']...entering thread for bda1node07.example.com:execute: /usr/bin/ssh -l root bda1node07.example.com ' date' ...exiting thread for bda1node07.example.com status: 0bda1node07.example.com: Tue Feb 14 10:24:43 PST 2012]

dcliの構文

dcli [option] [command]

パラメータ

option
下記の表に記載されているオプション。 すべてのオプションを省略すると、クラスタ内のすべてのサーバーでコマンドを実行できます。
command

オペレーティング・システムのプロンプトから実行されるコマンド。 コマンドに区切り記号または特殊文字が含まれている場合は、コマンドを二重引用符で囲みます。

バックスラッシュ(\)はエスケープ文字です。 シェルによる解釈を防ぐために、コマンド行に次の特殊文字の前にバックスラッシュを付けます。 コマンド・ファイルにバックスラッシュは必要ありません。 コマンド・ファイルについては、-xオプションを参照してください。

  • $ (ドル記号)

  • ' (引用符)

  • <(より小さい)

  • > (より大きい)

  • ( ) (カッコ)

dcliのオプション

オプション 説明
-c nodes

コマンドが実行されるOracle Big Data Cloud Machineノードのコンマ区切りリストを指定

-C

/opt/oracle/bda/cluster-rack-infiniband内のサーバーのリストをターゲットとして使用します。 「ターゲット・サーバーの特定」を参照してください。

-d destfile

-fオプションのターゲット・ディレクトリまたはファイル名を指定

-f file

ターゲット・ノードのユーザー・ホーム・ディレクトリにコピーするファイルを指定します。 ファイルは実行されません。 -lオプションを参照してください。

-g groupfile

コマンドが実行されるOracle Big Data Cloud Machineノードのリストを含むファイルを指定します。 ファイル内のサーバー名またはIPアドレスを使用できます。

-h, --help

コマンドの説明を表示

-k

sshキーを各ノードの/root/.ssh/authorized_keysファイルにプッシュします。 より簡単な方法については、「パスワードなしSSHの設定」を参照してください。

-l userid

別のサーバーにログインするためのユーザーIDを指定します。 デフォルトのIDはrootです。

--maxlines=maxlines

複数のサーバーで実行されるコマンドから表示される出力の最大行を識別します。 デフォルトは10、000行です。

-n

エラー以外のメッセージの出力を省略します。 サーバーが通常の出力を戻すときには、サーバー名のみが表示されます(戻りコード0)。

-n-rオプションを一緒に使用することはできません。

-r regexp

指定された正規表現に一致する行のサーバー名を出力に置き換えます。

-s sshoptions

SSHに渡されるオプションの文字列を指定

--scp=scpoptions

これらのオプションがsshoptionsと異なる場合、セキュア・コピー(SCP)に渡されるオプションの文字列を指定

--serial

サーバー上で実行を直列化します。 デフォルトはパラレル実行です。

-t

ターゲット・サーバーを一覧表示

--unkey

ターゲット・サーバーのauthorized_keyファイルからキーを削除

-v

すべてのメッセージの冗長バージョンを表示

--version

dcliのバージョン番号を表示

--vmstat=VMSTATOPS

Linux仮想メモリー統計ユーティリティ(vmstat)の構文を表示します。 このコマンドは、プロセス、仮想メモリー、ディスク、トラップ、およびCPUアクティビティ情報を返します。

vmstatコマンドを入力するには、オプションを引用符で囲みます。 次に例を示します。

--vmstat="-a 3 5"

vmstatの詳細については、Linuxのマニュアルを参照してください。

-x execfile

ユーザーのホーム・ディレクトリにコピーしてターゲット・サーバーで実行するコマンド・ファイルを指定します。 -lオプションを参照してください。

dcliの戻り値

  • 0: コマンドはすべてのサーバーで正常に実行されました。

  • 1: 1つ以上のサーバーにアクセスできないか、リモート実行が0以外の値を返しました。 応答しないサーバーが一覧表示されます。 実行は他のサーバーでも継続されます。

  • 2: ローカル・エラーにより、コマンドの実行が妨げられました。

ローカルのdcliプロセスを中断すると、リモート・コマンドは出力またはステータスを返さずに続行することができます。

dcliの例

次に、dcliユーティリティの例を示します。

この例では、ターゲット・サーバーのデフォルト・リストを返します:

# dcli -t
Target nodes: ['bda1node01-adm.example.com', 'bda1node02-adm.example.com', 'bda1node03-adm.example.com', 'bda1node04-adm.example.com', 'bda1node05-adm.example.com', 'bda1node06-adm.example.com', 'bda1node07-adm.example.com', 'bda1node08-adm.example.com', 'bda1node09-adm.example.com']

次の例では、すべてのサーバーの温度をチェックします:

# dcli 'ipmitool sunoem cli "show /SYS/T_AMB" | grep value'

bda1node01-adm.example.com: value = 22.000 degree C
bda1node02-adm.example.com: value = 22.000 degree C
bda1node03-adm.example.com: value = 22.000 degree C
bda1node04-adm.example.com: value = 23.000 degree C
          .
          .
          .