何の問題なくなく起動していたCognosのサービスが急に、使用ポートがバッティングしているとエラーになり起動できなくなった際に確認したい点です。
実際に遭遇したのは下記の構成の環境です。
- OS : Linux
- バージョン : Cognos Analytics 11.1.5
- サーバー台数 : 2台構成 (各サーバー共にオプションのGW層、アプリ層、データ層をインストールした冗長構成)
原因はゾンビプロセスの存在
ポートバッティングを起こして原因は、9300を使用するCognosサーバーのゾンビプロセスが起動していたからです。
対処方法
下記の順で対応をしていくことで環境復旧ができました。
1. ゾンビプロセスの存在を確認
下記コマンドでCognos Analyticsのサービス稼働状況を確認します。
ps -ef | grep cognosserver
ps -ef | grep runAsDaemon
それぞれ1つ以上ある状態は異常な状態とみなすことができます。
プロセスの数と同時に起動ユーザー、プロセス開始時刻を確認します。
プロセスの数が複数ある場合は、想定したユーザー以外でのCognosの起動が原因となることがよくあります。
プロセスを実行しているユーザーでCognosサービスの停止を試みる
まずは、ゾンビプロセスが本当にゾンビが確認します。
下記コマンドを実行して想定外のユーザーでcognosのサービスを停止します。
su - <プロセスを停止したいユーザー>
/opt/ibm/cognos/analytics/bin64/cogconfig.sh -stop
設計通りのユーザーで起動されたプロセスでもあきらかにプロセス開始日時がおかしい場合はプロセス停止を実施します。
ゾンビプロセスをkillする。
上記の手順でプロセスを実行してもプロセスが停止できない場合は、ゾンビプロセスをkillします。
プロセスをkillするときは、runAsDemon → cognosserver の順番でkillを行います。
kill -9 <runAsDaemonのPID>
kill -9 <cognosserverのPID>
ファイルの権限を修正する
想定外のユーザーでプロセスを起動した場合、構成ファイルやログファイルのオーナーが設計から変更されていることがあります。
設計内容にしたがってファイルの権限を変更します。
ログファイルをインストールディレクトリから外出ししている場合、変更が漏れないように注意してください。
気を付けたいこと
プロセス(Cognosサービス)の起動ユーザーを間違えないこと!
今回のケースでは、Cognos用の起動ユーザーを作成し起動ユーザーでサービスを起動したあとに、rootでサービスの起動を行ってしまったことが根本原因でした。
rootで起動したプロセスが残ったまま、起動ユーザーでプロセス起動した際にポートバッティングで怒られていたのです。
起動ユーザーを設計する場合、そのユーザーで起動するための運用手順もあるはずなので、それに従ったサービス起動が必要となります。
以上、正常に稼働していたCognosサーバーが急にポートバッティングで起動できなくなった際に確認してほしいことになります。