2012年10月15日に glue 1.0.11 がリリースされました。

Hello,

The current glue repository has been tagged as 1.0.11.
The highlights:
  • lrmd sets max number of children depending on the number of processors
  • compatibility for stonith agents and hb_report for pacemaker v1.1.8
今回のリリースに含まれる変更点:
  • リソースエージェント(Resource Agent:RA)を実行する際にlrmdからforkされる子プロセスの数が、実行環境のプロセッサ数に応じて調整されるようになりました。
  • STONITHエージェントおよびhb_reportツールがPacemaker 1.1.8 に対応しました。
You can get the 1.0.11 tarball here: http://hg.linux-ha.org/glue/archive/glue-1.0.11.tar.bz2

Many thanks to all contributors!
Enjoy!

Lars Ellenberg
Dejan Muhamedagic
最新版のソースコードはこちらからダウンロードすることができます。

リリースノートがあっさりしすぎているのでちょっと補足。 リポジトリの更新状況を確認してみたんですが気になるのはこの二点。

* [Medium: LRM: set max-children depending on the number of processors](http://hg.linux-ha.org/glue/rev/1f36e9cdcc13)



* [Medium: LRM: lrmd: don't send parameters from ops back to crmd](http://hg.linux-ha.org/glue/rev/579e45f957b6)

一つ目の「Medium: LRM: set max-children depending on the number of processors」ですが、lrmdはRAを実行する際にRA実行用のプロセスをforkします。forkされる子プロセスの最大値は「LRMD_MAX_CHILDREN」という環境変数で定義されているのですが、デフォルト値は4でした。 管理するリソース数がたくさんある環境、つまりRAをたくさん設定する環境では、この値をもそっと大きくしてあげるとパフォーマンスが改善される場合もあります。 今回のリリースでは、LRMD_MAX_CHILDRENのデフォルト値が、実行環境のプロセッサ数に応じて調整されるようになりました。

calc_max_children()という関数が新しく追加されており、実行環境のプロセッサ数の1/2がLRMD_MAX_CHILDRENに設定されます。


   124 static int max_child_count		= 4;

  1082 static void
  1083 calc_max_children()
  1084 {
  1085 #ifdef _SC_NPROCESSORS_ONLN
  1086 	int nprocs;
  1087 
  1088 	nprocs = sysconf(_SC_NPROCESSORS_ONLN);
  1089 	if( nprocs < 1 ) {
  1090 		lrmd_log(LOG_WARNING, "%s: couldn't get the number of processors"
  1091 		, __FUNCTION__);
  1092 	} else {
  1093 		if( nprocs/2 > max_child_count ) {
  1094 			max_child_count = nprocs/2;
  1095 		}
  1096 		lrmd_log(LOG_INFO, "max-children set to %d "
  1097 		"(%d processors online)", max_child_count, nprocs);
  1098 		return;
  1099 	}

ちなみに、LRMD_MAX_CHILDRENの最少値は4なので、実行環境のプロセッサ数が4以下の場合、LRMD_MAX_CHILDREN=4となります。 手元の環境で試してみたらこんな感じでした。


# cat /proc/cpuinfo | grep processor (プロセッサ数=4)

processor       : 0
processor       : 1
processor       : 2
processor       : 3

# grep max-children /var/log/ha-log (LRMD_MAX_CHILDREN=4)

Oct 17 14:07:53 dl380g5d lrmd: [5545]: info: max-children set to 4 (4 processors online)

プロセッサをたくさんもっているお金持ちのみなさんはぜひ試してみてください。 ちなみに、LRMD_MAX_CHILDRENはオンラインでも変更できます。

現在のLRMD_MAX_CHILDRENを表示


# lrmadmin -g max-children
max-children: 4

LRMD_MAX_CHILDRENを変更


# lrmadmin -p max-children 10

# lrmadmin -g max-children
max-children: 10

lrmadminコマンドは実行したノードのLRMD_MAX_CHILDRENを変更します。 クラスタ全体のLRMD_MAX_CHILDRENを変更したい場合は、全ノードでlrmadminコマンドを実行する必要があります。 また、Pacemakerを再起動した場合は、デフォルト値に戻ってしまいますので注意してください。

そして、二つ目の「Medium: LRM: lrmd: don’t send parameters from ops back to crmd」ですが、これは日本語のメーリングリストで話題になっていたやつですな。 startオペレーションにinstance_attributesが設定されている場合(例:prereq属性など。ちなみにPaceamaker 1.0系ではprereqではなくrequiresに変更になっています)に、同じ症状が発生する可能性があります。 ちょっとわかりづらいログがでてしまうので、あれ?となりますが、クラスタの動作には影響ありません、glue 1.0.11 では紛らわしいログが出力されないように修正されています。