コンピューティングノードでタスクを設定したいが、コンピューティングノードの時刻と日付がヘッドノードと同期していないことを確認して確認します。
ヘッドノード表示:2015年7月22日水曜日16:57:32 PDT
ノード2表示:2015年7月22日水曜日11:52:21 PDT
ノード3表示:2015年7月22日水曜日12:00:38 PDT
ヘッドノードの時間を変更せずにヘッドノードと同期させたい(ヘッドノードに時間関連の作業があるため、邪魔にならないことが重要です)。ヘッドノードと同期する方法を知っていますか?
ntpd
コンピューティングノードでサービスを再起動するコマンドを使用するように指示されましたが、service ntpd restart
これがヘッドノードに影響を与えるかどうかはわかりません。
答え1
ヘッドノードでSSHを実行していると仮定すると、SSHを介してコマンドを使用して、ヘッドノードから現在の時刻を簡単に取得できますdate
。
ssh user@host date
ヘッドノードを使用した認証が最も簡単で安全です。秘密鍵認証そのため、パスワードを入力しなくてもログインできます。
スレーブノードでは、次のコマンドで取得した値を使用して現在時刻を設定できます。rootユーザーとして:
date --set=STRING
STRING
ヘッドノードから取得した文字列値はどこにありますか?これは以下を使用して単一のコマンドに結合できます。コマンドの置き換え
date --set="$(ssh user@host date)"
少し認める貧しい人々の時間同期ソリューションところで、なぜ動作しないのか理解できません。スクリプトによる変更が変更されないように、時間同期サービスを完全にオフにしてください(存在する場合)。例:
/etc/init.d/ntpd stop
システムに関する多くの情報を提供していないので、これが私ができることです。適切な時間同期ツールを構成する方が良いですが、これには実行中の展開などのシステムに関する追加情報が必要です。
答え2
ノードへのルートアクセス権がある場合は、時刻同期を設定する必要があります。最も一般的に使用されるツールは次のとおりです。エンテフード、最も専門的なLinuxディストリビューション(および他のUnixシステム)を除くすべてのディストリビューションで利用できます。 Ntpdは定期的にネットワークを介してクエリを送信し、現在時刻を取得し、ローカルクロックのドリフトを測定し、ローカルクロックを調整してドリフトを補償します。 LAN経由でミリ秒以上の精度を得ることができます。
最良の結果を得るには、ヘッドノードなどの1つまたは複数のノードをサーバーとして選択します。 NTPサーバーパッケージ(ntp
Debian / Ubuntu / Mint、Fedora / RHEL / CentOSなど)をインストールし、サーバーをヘッドノードと一部のインターネットサーバーとして構成します。構成ファイルには、/etc/ntp.conf
次の内容が必要です。
server 0.fedora.pool.ntp.org
server 1.fedora.pool.ntp.org
server 2.fedora.pool.ntp.org
server 3.fedora.pool.ntp.org
server head1.mycluster.internal.example.com
server head2.mycluster.internal.example.com
(distro設定ラインを維持し、distroを追加します)。ヘッドノードに行がある場合は、restrict
すべてのノードのIPアドレスが許可されていることを確認してください。他のノードではrestrict 127.0.0.1
。
今後NTPを設定し、時計をほぼ正確な時間に設定します。 Ntpdは、時間が20分を超える場合、時間を同期しません(タイムゾーンを誤って設定したか、時計やネットワークに問題があると仮定)。したがって、まず時計を手動で設定します。たとえば、まずローカルコンピュータで正しい日付と時刻を設定してから使用できます。
ssh somenode "date -d $(date +%m%d%H%M%Y.%S)"
時計をsomenode
ローカル時計より数十秒遅く設定します。これを完了したら、ntpをインストールしてください。または、すでにインストールされている場合は、ディストリビューservice ntpd restart
ションで使用する方法を使用してデーモンを再起動します。