シリアル接続などのコンソールを操作できるようになります。
Conserverとは
シリアル、ssh、telnet等でのサーバへの接続を一元管理するアプリケーションです。各接続先サーバへのアクセス権限の管理や操作ログの保存、複数ユーザによる同時モニタリングなどが可能です。多数のサーバ/ネットワーク機器などの管理が必要となる環境で、必要とされる機能が多数用意されています。今回の例ではサーバを接続先の対象にしていますが、ルータやスイッチなどのネットワーク機器や制御機器などでも同様に利用可能です。
準備
Conserverのインストール
OBS600のWebインターフェースのアプリケーションマネージャ、またはコマンドラインから「Conserver」をインストールします。コマンドラインからのインストールは次のようにpkg_addコマンドを使用します。
機器構成
今回は3台のサーバを用意して、シリアル/telnet/sshの通信プロトコルで動作を確認します。
server1のCOM1ポートとOBS600の背面にあるRS232Cポートを、標準添付の変換コネクタとケーブルで接続します。server2、server3は、図1のとおりにネットワーク設定を行い、sshやtelnetでの接続準備を行っておきます。
OBS600の設定
OBS600にシリアルコンソール、またはsshで接続して作業を行います。シリアルコンソールでの接続方法については、本製品の簡単導入ガイドを参照してください。sshによる設定方法は、OBS600のWebインターフェースにアクセスして[システム]→[基本設定]ページの「SSH Server」を「有効」に設定して、OBS600を再起動します。
接続対象のホスト名の設定
通常ホストの設定は/etc/hostsファイルに記述しますが、OBS600のWebインターフェースの設定に基づき、OBS600が起動するごとに/etc/hostsファイルを再作成する仕様になっています。接続先ホストの設定はWebインターフェースの[ネットワーク]→[その他]で設定するか、/usr/pkg/etc/hosts.appendファイルを編集することで行うことができます。記述方法はhostsファイルと同様です。図1の機器構成にしたがってホストを追加します(リスト1)。
rc.confの編集
ConserverをOBS600起動時に自動実行する場合は、/etc/rc.confに記述する必要があります。Conserverの起動スクリプトは/usr/pkg/etc/rc.dにあり、図2のように実行します。
設定内容を本体のFlashROMに保存
OBS600の通常起動時ではRAMディスクにルートファイルシステムを展開しているため、明示的に保存の操作を行わない限り、再起動すると変更内容が初期状態に戻ります。変更内容を保存するには、次のコマンドを実行します。なおこのコマンドは、シャットダウン処理の中でも自動的に実行されます。
conserver.cfの編集
アプリケーションマネージャ、またはpkg_addコマンドでインストールしたプログラムの設定ファイルは、/usr/pkg/etcディレクトリに置かれます。Conserverの設定ファイル名は、conserver.cfとなります(/usr/pkgディレクトリはCFメモリをマウントしているため、FlashROMに保存する必要はありません)。
conserver.cfはリスト2のように編集します。
①default fullブロック:ユーザのアクセス制御の設定
rwはキーボード入力できるattach read/write権限で、rootとplathomeユーザに与えています。roは参照のみのread only権限で、watchユーザに与えています。全員にrw権限を与える場合は “rw *”と記述します。“ro !root”と記述すると、rootユーザ以外全員をro権限に設定できます。
②default *ブロック:conso leブロックの共通の設定
logfile行のログファイル名に “&”を指定することでコンソールごとの別ファイルで保存することができます。 logfilemax行でログのローテートサイズを指定します。今回は1Mバイトに設定しています。timestamp行で1時間ごとにタイムスタンプをログファイルに出力する設定にしています。そのログが出力された日時がわかるようになります。
1h | 1時間。他に分(m)、日(d)、ログ(l)の行数で指定可能 |
a | コンソールへの接続/切断のログを出力 |
b | break信号をログに出力 |
③コンソールごとの設定
ssh、telnetは外部コマンドを使用するので、type行がexecとなります。exec行で起動するコマンドと起動オプションを記述します。serialは、シリアルポートに接続しますので、type行がdeviceとなります。device行でデバイスファイルとボーレートなどの通信設定を記述します。
conserver.passwdの編集
今回、 Conserverにアクセスするパスワードはシステムのパスワードと同一にしたため、リスト3の記述になります。
server1の設定
server1は、入出力をCOM1ポートでもできるように設定します。
grubの設定
カーネルの起動オプションにconsole出力の設定を行います。/boot/grub/menu.lstファイルのkernel行に、“console=tty1 console=ttyS0,115200”を追加します(リスト4)。
inittabの設定
ttyS0の設定を追加します(リスト5)。
動作確認
Conserverの起動
Conserverの起動スクリプトを実行します(図3)。設定で指定したssh、telnetの各コマンドが常駐します。
Consoleコマンド
コンソールへの接続は、consoleコマンドで行います。consoleコマンドは、/usr/pkg/etc/conserver.cfで定義したコンソール名(ssh、telnet、serial)を引数にして実行します。consoleコマンド実行中の操作は、ctrl+e、c、?を順番に押下することで、簡単なヘルプが表示されます。
ssh、telnet、serialでの接続をそれぞれ図4、5、6のように行います。
終了コマンド
consoleコマンドの終了方法は、ctrl+e、c、.を順番に押下します。ctrl+eを入力しても画面に変化はありません。cを入力すると“[”が表示され、.を入力すると“disconnect]”が表示されてコンソールが切断されます(図7)。
コンソールの切り替え
ctrl+e、c、;を順番に押下することで、コンソールを切り替えられます。“[console:”の後にコンソール名を入力します(図8)。
同一コンソールへの接続
Conserverでは1つのコンソールに対して1人のみキー入力ができます。後からの接続はRead onlyとなります。Read onlyコンソールは入力権限を持っているユーザのキー入力を1文字ずつリアルタイムでモニタリングします。入力権限を持っているユーザが切断した場合、入力権限が回ってきます。
図9はrootユーザがsshのコンソールに接続しているときに、後からplathomeユーザが同じコンソールに接続したときのplathomeユーザのコンソール出力です。
- ①rootユーザがすでに接続している
- ②plathomeユーザは参照のみ
コンソールの操作をしたい場合は、ctrl+e、c、fを押下することで強制的に入力権限を得ることができ、rootユーザがRead Only権限に変更されます
- ③rootユーザがpwdコマンドを実行した結果が表示
- ④rootユーザが切断したため、入力権限を取得
ログファイル
コンソールのログファイルは、conserver.cfで設定した/usr/pkg/var/consoles/にコンソール名ごとに別ファイルで格納されています。
sshのログ
ログファイルから、図9のログを抜粋します(リスト6)。
- ①接続/切断のログ(conserver.cfのtimestamp 1habのaの機能)
- ②タイプミスもロギングされる
serialのログ
console serialのログを抜粋します(リスト7)。
- ①接続/切断のログ
- ②タイムスタンプのログ(conserver.cfのtimestamp 1habの1hの機能)
まとめ
OpenBlockS 600とConserverでコンソールサーバを構築しました。ログファイルから以前の操作手順を参照したり、オペレータの教育に利用したりとさまざまな使い方ができると思います。
弊社ではOpenBlockSのカーネルのデバッグを行う際に、ネットワーク越しにカーネル起動ログを確認する用途などで重宝しています。コンソールサーバのようなCPUパワーを必要とせず、省スペース、低消費電力、メンテナンスフリーを重要視される場面は、当製品の得意分野です。この記事を機会に、OpenblockS 600をはじめとするマイクロサーバ製品に興味を持っていただけたら幸いです。
参考ページ
- Conserver
- URL:http://www.conserver.com/