アプリのログデータを収集するためのユーティリティサーバとして利用できるサーバにWindows Serverがある。
現状はタスクスケジューラでバッチをいろいろ動かしているけども、実行するバッチは別のサーバーにあるんだけども依存関係があったりして、今は時間間隔を調整して整合性が取れるようにしている。
しかし、いつかは破綻するのでそろそろちゃんとしたいなということで調査した結果、Jar単体で動作するRundeckを採用した。
環境
今回使っている環境は以下の通り
- Windows Server 2008 R2 SP1(64bit)
セットアップ
インストールの流れは下記の通り。
- Javaのインストール
- Rundeckのインストール
- nssmのインストール
- Win32-OpenSSHのインストール
Win32-OpenSSHについては、ローカルのWindowsマシンでジョブを実行しないのであれば必要ない。
アプリケーションの事前準備
以下のツールをダウンロードしておく
名称 | バージョン | 内容 |
---|---|---|
Rundeck | 2.6.9 | ジョブ管理 |
nssm | 2.24 | アプリケーションのサービス化サポートツール |
Win32-OpenSSH | sshサーバ | |
Java | 1.7_79 | Oracle Java SE |
Javaのインストール
- Javaのインストーラーを実行
- 環境変数JAVA_HOMEを追加する
- コマンドプロンプトを起動し、
java -version
と入力し、Javaのバージョンが表示されることを確認
Rundeckのインストール
- Rundeckを%HOME%以下の任意の場所(例: %HOME%\rundeck)へ展開する
- コマンドプロンプトを開き、
java -XX:MaxPermSize=256m -Xmx1024m -Xms256m -server -jar rundeck-launcher-2.6.9.jar
を入力してRundeckをStandaloneで起動する - Webブラウザで
http://localhost:4440
へアクセスし、ページが表示されることを確認する
3でアクセスできない場合はファイアーウォールの設定で4440のポートを開けるか、Webブラウザの例外設定にlocalhostを入れる。
nssmのインストール
- Rundeckの起動スクリプトを作成する
- コマンドプロンプトより、nssmを展開したディレクトリまで移動する
-
nssm install [command name]
を入力し、設定ウィンドウを起動する - 必要な情報を入力
start.bat
@echo off
java -XX:MaxPermSize=256m -Xmx1024m -Xms256m -server -jar rundeck-launcher-2.6.9.jar %1
Win32-OpenSSHのインストール
- OpenSSHを%HOME%以下の任意の場所へ展開する
- 環境変数Pathに、上記のパスを設定する
- コマンドプロンプトを起動し、
ssh-keygen.exe -A
を実行する - ファイアーウォールで受信ルールにTCPに22を追加する
- コマンドプロンプトで1のパスへ移動し、setup-ssh-lsa.cmdを実行する
- OSを再起動する
-
sshd install
を実行してサービスへインストールする - サービスから登録したsshdを起動する
- コマンドプロンプトから、
ssh [コンピュータ名]
を入力し、ログインする -
ssh-keygen -t rsa
を実行し、公開鍵と秘密鍵を生成する。このとき、パスワード入力を求められるが今回はパスワード入力をスキップさせるため、空欄にしておく - etc\sshd_configをテキストエディタで開き、PubkeyAuthenticationがyesになっていることと、AuthorizedKeysFileが.ssh/authorized_keysになっていることを確認する
- .ssh/id_rsa.pubを.ssh/authorized_keysへリネームする
- sshdを再起動する
- パスワードなしでログインできることを確認する