質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Pacemaker

Pacemakerとは、クラスタ管理システム(CRM)を実装したオープンソースのソフトウェアです。CorosyncやHeartbeatと協調して動作し、高可用クラスタ上で稼働するアプリケーションなどのリソースを監視・起動・停止できます。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

2回答

6671閲覧

pacemaker+corosyncでのtomcat連携について

nob777

総合スコア112

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Pacemaker

Pacemakerとは、クラスタ管理システム(CRM)を実装したオープンソースのソフトウェアです。CorosyncやHeartbeatと協調して動作し、高可用クラスタ上で稼働するアプリケーションなどのリソースを監視・起動・停止できます。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2017/01/26 21:43

編集2017/01/29 09:29

★以下について、tomcat@tomcat.serviceを作成することでtomcat登録が正常に行えました。
しかし、なぜpacemaker+corosyncはtomcat.serviceではなく、tomcat@tomcat.service
必要としていたのでしょうか?
【追記】tomcat@tomcat.serviceは既存のtomcat.serviceをコピーして作成しました。

pacemaker+corosyncに、リソースとしてtomcatを登録したいのですが、下記エラーが発生し、登録に失敗します。

corosync.log

1Jan 27 06:33:11 [32248] osact lrmd: notice: operation_finished: Tomcat_Cluster_start_0:5314:stderr [ Failed to start tomcat@tomcat.service: Unit not found. ]

エラー要因はなんでしょうか?
tomcat@tomcat.serviceが無いことらしいのですが、
/usr/lib/systemd/system配下には、tomcat.serviceおよびtomcat@.service
存在します。
※pacemaker+corosyncを介さずに、systemctl start tomcat で正常にtomcat起動でき、http://localhost:8080へも正常アクセスできることは確認済みです。

■環境情報
OS:CentOS7.3.1611
pacemake:1.1.15
corosync:2.4.0
tomcat:8.5.11

■(追記)pcs config実行結果

pcs

1[root@osact ~]# pcs config 2Cluster Name: cluster_os 3Corosync Nodes: 4 osact ossby 5Pacemaker Nodes: 6 osact ossby 7 8Resources: 9 Resource: VIP (class=ocf provider=heartbeat type=IPaddr2) 10 Attributes: ip=192.168.172.9 cidr_netmask=24 11 Operations: start interval=0s timeout=20s (VIP-start-interval-0s) 12 stop interval=0s timeout=20s (VIP-stop-interval-0s) 13 monitor interval=10s (VIP-monitor-interval-10s) 14 Resource: Web_Cluster (class=ocf provider=heartbeat type=apache) 15 Attributes: configfile=/etc/httpd/conf/httpd.conf statusurl=http://127.0.0.1/server-status 16 Operations: start interval=0s timeout=40s (Web_Cluster-start-interval-0s) 17 stop interval=0s timeout=60s (Web_Cluster-stop-interval-0s) 18 monitor interval=1min (Web_Cluster-monitor-interval-1min) 19 Resource: Tomcat_Cluster (class=ocf provider=heartbeat type=tomcat) 20 Attributes: statusurl=http://127.0.0.1:8080/ java_home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64/jre catalina_home=/usr/tomcat8 tomcat_user=tomcat 21 Operations: start interval=0s timeout=60s (Tomcat_Cluster-start-interval-0s) 22 stop interval=0s timeout=120s (Tomcat_Cluster-stop-interval-0s) 23 monitor interval=1min (Tomcat_Cluster-monitor-interval-1min) 24 25Stonith Devices: 26Fencing Levels: 27 28Location Constraints: 29 Resource: VIP 30 Enabled on: osact (score:INFINITY) (role: Started) (id:cli-prefer-VIP) 31 Disabled on: ossby (score:-INFINITY) (role: Started) (id:cli-ban-VIP-on-ossby) 32Ordering Constraints: 33 start VIP then start Web_Cluster (kind:Mandatory) (id:order-VIP-Web_Cluster-mandatory) 34 start Web_Cluster then start Tomcat_Cluster (kind:Mandatory) (id:order-Web_Cluster-Tomcat_Cluster-mandatory) 35Colocation Constraints: 36 Web_Cluster with VIP (score:INFINITY) (id:colocation-Web_Cluster-VIP-INFINITY) 37 Tomcat_Cluster with VIP (score:INFINITY) (id:colocation-Tomcat_Cluster-VIP-INFINITY) 38 Resource Sets: 39 set VIP (id:pcs_rsc_set_VIP_Tomcat_Cluster) setoptions score=INFINITY (id:pcs_rsc_colocation_set_VIP_Tomcat_Cluster) 40 set VIP Tomcat_Cluster (id:pcs_rsc_set_VIP_Tomcat_Cluster-1) setoptions score=INFINITY (id:pcs_rsc_colocation_set_VIP_Tomcat_Cluster-1) 41Ticket Constraints: 42 43Alerts: 44 No alerts defined 45 46Resources Defaults: 47 No defaults set 48Operations Defaults: 49 No defaults set 50 51Cluster Properties: 52 cluster-infrastructure: corosync 53 cluster-name: cluster_os 54 dc-version: 1.1.15-11.el7_3.2-e174ec8 55 have-watchdog: false 56 last-lrm-refresh: 1485467664 57 no-quorum-policy: ignore 58 stonith-enabled: false 59 60Quorum: 61 Options: 62[root@osact ~]#

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikedas

2017/01/27 03:22

「crm configure show」の出力結果を提示して下さい。また、設定にあたって参考にした書籍やウェブサイトがあればその情報 (書名とページ、URLなど) を提示して下さい。
ikedas

2017/01/28 05:37

了解です。
guest

回答2

0

ベストアンサー

なぜpacemaker+corosyncはtomcat.serviceではなく、tomcat@tomcat.serviceを必要としていたのでしょう>か?

resource-agent の作りがそうなっているからだと思います。

(/usr/lib/ocf/resource.d/heartbeat/tomcat 抜粋) tomcatCommand() { if ocf_is_true $SYSTEMD; then systemctl $@ tomcat@${TOMCAT_NAME} else

$@ は "start" または "stop" です。
${TOMCAT_NAME}pcs resource create ... ocf:heartbeat:tomcat の引数 tomcat_name= で指定します。
指定しない場合、デフォルトの tomcat が設定されますので、tomcat@tomcat.service が必要です。

CentOS 7.3 で提供されている tomcat-7.0.69-10.el7.noarch であれば、/usr/lib/systemd/system/ に tomcat@.service ファイルあれば、tomcat@(任意の名前).service は必要ないのですが、tomcat-8.5.11 で提供される tomcat@.service ファイルは作りが違うのでしょうか?

投稿2017/01/28 03:38

TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nob777

2017/01/28 22:59

ご回答いただきありがとうございます。 既存に存在する他のserviceファイル群の名称と比べてもresource-agentが求める名称が異質であったため、わたしの環境が壊れているのではないかと思い、質問させていただきました。TaichiYanagiyaさんのおっしゃるとおり、わたしの環境のresouce-agentでもデフォルトがtomcat@tomcat.serviceとなっていました。なぜ、そのような異質(と思われる)な名称をデフォルトとしているのかは設計元の考えを確認しなければ分からないと思います(※tomcatを複数建てた場合を考慮している?)ので、本件はクローズとさせていただきます。
guest

0

リソースエージェントにおかしなところは見受けられませんので、tomcat@tomcat.serviceがうまく起動していないようです。

Tomcat_Clusterリソースを有効にしようとして今回のように失敗したら、次のコマンドを実行して出力される内容を確認下さい。原因がよくわからなければ、その出力をご質問に追記していただけますか。

systemctl status tomcat@tomcat.service journalctl -xn tomcat@tomcat.service

なお、サービスを直接起動された際にはroot権限で起動に成功されたと思います。まったくの推測ですが、tomcatが何かを書き込むディレクトリ (PIDファイルやログなど) が、tomcatユーザの権限で書き込めないのかもしれません。その場合、次のいずれかの方法で直るかもしれません。

  • Tomcat_Clusterリソースの属性に、tomcat_user=rootを指定する。

または、

  • 上述のディレクトリを探して、tomcatユーザが書き込めるようにする。

投稿2017/01/28 05:54

編集2017/01/28 05:55
ikedas

総合スコア4317

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nob777

2017/01/28 23:06

ご回答いただきありがとうございます。わたしの追記した★行の記載内容および、わたしの理解不足により、質問したい点が不明瞭となってしまい大変申し訳ありません。 最初に質問させていただいたtomcat起動が失敗する事象については、tomcat@tomcat.serviceを設置することで解消されました。しかし、なぜ既存の他サービスが必要としているようなサービス名.serviceやサービス名@.serviceではなく、tomcat@tomcat.serviceを必要としていたかが分からなかったため、追記の形で別質問をさせていただきました。
ikedas

2017/01/29 00:20

「tomcat@tomcat.serviceを設置」というのはどういう操作でしょうか。はまるひとが多そうなポイントなので、具体的な操作を追記していただくといいと思います。 CentOS7からは、tomcatのサービスが複数インスタンスあるときはサービステンプレートを使うようになったので、リソースエージェントでもそれに対応したものでしょう。
nob777

2017/01/29 09:31

ご確認ありがとうございます。 やはり複数インスタンスでしょうか。 ※tomcat@tomcat.serviceの作成について追記しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問