[Linux-ha-jp] tomcatのリソース定義ファイル記述方法に関しまして

Back to archive index

Takehiro Matsushima takeh****@gmail*****
2015年 2月 12日 (木) 18:28:55 JST


北林 さん

松島です。ひとまず動作したとのことで、安心致しました。

> 上記に
> ”touch `/var/lib/tomcat/logs/catalina.out': 許可がありません”
> とあることから「権限の問題だろうか」と思い、
> かなり強引ではありますが
>
> #chmod 777 /var/lib/tomcat/logs/catalina.out
>
> としたところ、pacemakerに認識させることに成功致しました。

もしかしたら動作確認のためにrootユーザで実行した際に/var/lib/tomcat/logs/catalina.outが
作成されたのかもしれません。
root:root 640 とか644とかで作成されてしまうと、tomcatユーザは書き込みが出来ないので、
このようなエラーになる可能性があります。
一旦rootユーザで/var/lib/tomcat/logs/catalina.outを削除してしまってからPacemakerを起動すれば
適切なパーミッションで作成されると思います。(本当に適切かどうかは別として)
もしくは、
# chown tomcat. /var/lib/tomcat/logs/*
# chmod 640 /var/lib/tomcat/logs/*
しても良いかもしれません。(640で良いのかどうか自信ないです...)


> (ここまでたどり着けたのは松島様のおかげです。
>  多くの時間を割いてくださり、本当にありがとうございます。)
いえいえ、こちらこそレスの間隔が開いてしまい申し訳ございません。


> 次に
> ここで浮かんだ疑問なのですが、
> #chmod 777 /var/lib/tomcat/logs/catalina.out
> と設定することは、セキュリティ的に・もしくはLINUXのお作法的に問題ないのかということです。
> お恥ずかしながらIT初心者のため、
> こういった知識がございません。

適切な設定となると、実は個人や企業、ディストリビューションによってもまちまちだと思いますし、
Tomcatの作法は存じませんので、あくまでも私の考えを書かせていただきます。

777に設定してしまうと、全く関係のないユーザがログの読取りと書き込み(改ざん)が出来てしまいます。
加えて、ログファイルに実行ビットは明らかに不要です(ディレクトリは実行ビットがないとcd出来ません)。
グループに対しては、同じグループに所属するユーザが他にいないのであれば、許可は不要になります。
従って、この場合には、640もしくは600が良いのではないかと考えます。
644という手もありますが、オーナでもグループに所属しても無いユーザがログを読めるというのは
少し怖い気もしますが、これは運用次第になるかもしれません。

また、これもエンジニアの思想次第なのですが、私はSELinuxはEnforcing派です。
これについては本当に色々な思想がありますので...

> (略)
> 上記はどのような意味をもつのでしょうか。
> この部分を抜くと、
> #crm configure load update でエラーになってしまいます。

property cib-bootstrap-options: \
        dc-version=1.1.12-561c4cf \
        cluster-infrastructure=corosync \
        no-quorum-policy=ignore \
        stonith-enabled=false \
        pe-input-series-max=3000 \
        pe-error-series-max=3000 \
        pe-warn-series-max=3000

ここの部分でしょうか。
末尾の3行については記事冒頭のリンク先で述べているとおり、ポリシエンジンの世代管理の設定です。
正直なところ、こちらは無くても問題はないと思います。
それ以外の部分を順に見てまいりますと、

property cib-bootstrap-options: \
ここはクラスタの属性を設定する部分と宣言しています。

        dc-version=1.1.12-561c4cf \
ここはDC(Designated Coordinator)のバージョンを示しています。書かなくても自動的に追加されますし、
手で書かないほうが良いと思います。
DCはクラスタに於ける指揮者のような立場のノードのことです。
あくまでも統括の代表であって、優先的にマスターになるとかという意味はありませんが、
ログはDCの方がたくさん情報が出ます。

        cluster-infrastructure=corosync \
クラスタの基盤(ノード同士の通信をする部分)がCorosyncであることを示しています。
ここも自動的に追加されますし、手で書かなくても良い部分です。

        no-quorum-policy=ignore \
クオーラムを取得できなかった場合の挙動を"ignore(無視)"に設定しています。
クオーラムというのは定足数のことで、ノードが投票をしあって過半数を取得したノードがDCになれます。
簡単ではありますが以下にまとめています。
http://goo.gl/QT8k8Y

        stonith-enabled=false \
STONITH(Shoot The Other Node In The Head)を有効にするかどうかの設定で、今回は無効にしています。
STONITHは「生きているか死んでいるかわからないノード」を強制的にクラスタから排除する仕組みです。
よくつかわれるのがDellのiDRACやhpのiLOといった管理モジュールを操作して強制的に電源を切るというものです。
これらはOSとは独立して動作しているため、Kernel Panicを起こしていても操作可能です。

STONITHのリソースの設定をしていない場合には、stonith-enabled=falseの設定をしておきます。

ご存知かもしれませんが、行末の"\"は本来一行で書かれるべき設定を複数行に分割するための、改行を無視する記号です。
タブ文字はパラメータの区切りの空白として扱ってくれないようで、"\"の前にスペースを入れておかないとエラーになります。
また、本来複数の行にわけなければならない設定を"\"で結合してもエラーになります。
行の追加や削除をした場合には、このルールをご確認ください。

以上、回答になっておりますでしょうか。長くなってしまい申し訳ございません。

----
Takehiro Matsushima



Linux-ha-japan メーリングリストの案内
Back to archive index