OSS よろず相談室問い合わせ事例集 1
お問い合わせ事例 1 前提 [1] 4 つのイーサネットワークポート (NIC ポート ) を持つサーバーがあります [2] eth0 と eth2 を bonding 致しました ( デバイス名 :bond0) [3] 3 台の同環境のサーバーがあります 状況 [1] それぞれ 3 台サーバーの /etc/modprobe.conf に差異があります [2] それぞれ 3 台サーバー /etc/sysconfig/network-scripts の ifcfg-eth1 と ifcfg-eth3 に差異が生じました 質問内容 kudzu サービスもしくは setup コマンドにて bond0 の ip アドレスを変更した場合 /etc/modprobe.conf が差異が現れることはありますか? kudzu サービスもしくは setup コマンドにて bond0 の ip アドレスを変更した場合に /etc/modprobe.conf の設定に差異が発生する可能性があると考えます VMware 上に RHEL5.2 の仮想環境を最初は NIC1 枚の状況で作成し VMware 側で NIC を 3 枚追加し 立ち上げ直したところで bonding の設定を行い bonding の動作確認を行いました その後 再起動しましたが /etc/modprobe.conf が書き換えられることはありませんでした したがって setup コマンドで bond0 のアドレスを変更した場合には設定ファイル /etc/sysconfig/networkscript/ifcfg-bond0 が書き換えられ その後の kudzu の動作にも影響します 3 台目で modprobe.conf から bonding の設定部分がなくなったのは setup コマンドによるアドレス変更を行った可能性があると考えます 本書の事例 ( 質問 / 内容 ) は サービスの概要をイメージしていただくために取りまとめられております 全ての事例は実際の対応履歴をベースとしておりますが システム内容 各種条件 技術説明や途中経過の記載などを数多くの を削除しています そのため 記載内容に関する技術的正確性は保証されておりません 予めご了承ください 2
お問い合わせ事例 2 PostgreSQL の設定で 当方の環境 ( メモリ 512MB) では shared_buffers のデフォルト設定が 28MB となっていました マニュアル等の内容を見ていると デフォルト設定は 32MB と書かれていました initdb 時にこの値が決められるようですが 何を基準に決められているのでしょうか 環境設定に問題があるのでしょうか initdb コマンドは データベースクラスタを作成する際に max_connections と shared_buffers の値をデフォルト値 ( それぞれ "100" と "32MB") に設定し 実際にテストモードでのデータベースサーバの起動を試みて 設定が可能かどうかを確認します メモリ不足や 共有メモリの上限を超える等の理由でテスト起動に失敗すると initdb は 徐々に max_connections と shared_buffers の値を下げながら 起動可能な値を探ります 該当コードは src/bin/initdb/initdb.c:test_config_settings() になります 下記のように max_connections の候補となる数字と shared_buffers の候補となるサイズ ( ブロック数単位 ) が羅列されています ソースコード内部での説明値が絞られた原因としましては メモリは 512MB と それほど少なくはありませんので 共有メモリの上限設定が小さい (/etc/sysctl.conf の "kernel.shmmax") のではないかと推測されます 生成された設定ファイルの max_connections と shared_buffers の値をデフォルト値に修正してから起動を試みれば おそらく起動に失敗して その原因がログに出力されますので それをご参考に環境設定を修正していただくことを推奨します 本書の事例 ( 質問 / 内容 ) は サービスの概要をイメージしていただくために取りまとめられております 全ての事例は実際の対応履歴をベースとしておりますが システム内容 各種条件 技術説明や途中経過の記載などを数多くの を削除しています そのため 記載内容に関する技術的正確性は保証されておりません 予めご了承ください 3
お問い合わせ事例 3 アプリケーションが syslog-ng へログを出力する流れを確認させてください 1. 1syslog-ng を使用してログを出力したいアプリケーションが syslog-ng へデータ ( ログ ) の転送を行う 2. データ ( ログ ) を受け取った syslog-ng が 一旦 connect をコールし /dev/log へ接続し対応するログを処理するためのソケットを作成する 3. その後で 現在の接続数と最大接続数を比較して接続数が最大接続数以上になる場合には 2. 作成したソケットをクローズする ( 最大でなければ このソケットを対応するログを処理するハンドラに割り付ける ) 最大接続数以下の場合は データ ( ログ ) を出力し 書き込み完了後 2. で作成したソケットをクローズする 4. 3. で最大接続数を超えた場合 データ ( ログ ) はログファイルへは書き込まれない 5. main_loop の io_iter の中で 処理が完了してソケットのに空きが出来れば コネクションが開放され 3. の ( ) 内の処理でログが処理される 確認 1 アプリケーション syslog-ng ログファイルへのデータの流れは上記でよいでしょうか 確認 2 1 のアプリケーションから syslog-ng へのデータを受け渡すさいはどのような流れになるのでしょうか 確認 3 上記の流れで 5 のリトライが行われる前にアプリケーション側のタイムアウトが発生した場合 結果としてこのときにログ消失となる場合が稀にあるということでよろしいでしょうか 確認 4 上記内 5 での syslog-ng 内部でのリトライは どのような間隔で実施されるものでしょうか 本書の事例 ( 質問 / 内容 ) は サービスの概要をイメージしていただくために取りまとめられております 全ての事例は実際の対応履歴をベースとしておりますが システム内容 各種条件 技術説明や途中経過の記載などを数多くの を削除しています そのため 記載内容に関する技術的正確性は保証されておりません 予めご了承ください 4
お問い合わせ事例 4 1. ブラウザから Web サーバーへの要求は https である 2. SSL は Apache で終端している 3. Web サーバ (Apache) と AP サーバ (JBoss EAP xxxxxxx) は mod_jk により連携し mod_jk によるロードバランスを行っている 4. ロードバランサでは ソース IP でのパーシステンスを行っている 5. workers.properties には以下の通りに設定している 上記の動作環境において 以下の事象が発生しました [1] ブラウザからの最初のリクエストは AP サーバー 1 で処理された [2] 何回かアクセスしているうちに mod_jk が AP サーバー 1 に対して接続エラーを検知し AP サーバー 2 へフェイルオーバーされた [3] 再度ログインして 何回かアクセスしたが そのリクエストは AP サーバー 2 で処理された [4] 約 1 分後 ブラウザからアクセスしたところ AP サーバー 1 に接続された [ 質問 1] 事象 [3] で再度ログインをすることで AP サーバー 2 の JBoss により新しいセッション ID が生成され それ以降は sticky_session=1 の設定により AP サーバー 2 に接続され続けることを想定していましたが そのような動作とはなりませんでした sticky_session の値が true であることから [4] の際にブラウザから送信されたクッキー内のセッション ID が [1] で生成されたものと同じだったと考えていますが そのような事象となる可能性はあるでしょうか [ 質問 2] 質問 1 が yes の場合... 本書の事例 ( 質問 / 内容 ) は サービスの概要をイメージしていただくために取りまとめられております 全ての事例は実際の対応履歴をベースとしておりますが システム内容 各種条件 技術説明や途中経過の記載などを数多くの を削除しています そのため 記載内容に関する技術的正確性は保証されておりません 予めご了承ください 5
お問い合わせ事例 5 時期的なアクセスピークに備え 負荷分散のためアプリケーションサーバーを増やしました 結果 アクセスピークにも関わらず JavaHeap の OutOfMemoryError は発生せず Tomcat がシステム停 することはありませんでした イベントログを確認する限りは Tomcat の 動再起動が行われたようです ==Windows のイベントログ == 1.Tomcat の 動再起動はどのようなタイミングで行われるのでしょうか? 2.Tomcat の 動再起動 体は正常処理の範疇なのでしょうか? 3. ノード追加前の構成では OutOfMemoryError が発生しているようで 追加後構成では OutOfMemoryError が発生することなくシステム停 を防いでいるように思われます なぜ 追加前構成では 動再起動が行われなかったのでしょうか? squid の LDAP 認証に関して障害が派生しているため 原因追究に協力をお願いします 既存環境 : LDAP:MiracleLinu4.0(Asianux1.0) openldap-servers-2.1.30-1 Proxy:RHEL4.7 squid- 2.5.STABLE14-4.el4 今回 LDAP サーバを れ替えました 新規環境 :RHEL6.1 新規環境の OpenLDAP へデータを移行したのですが squid の認証がうまくいきません vsftpd の設定について (RHEL6) implicit_ssl を設定することで vsftpd が FTPS の implicit モードに対応しますが これを使うと平 での通信が出来なくなるので vsftpd で FTP(21 番 ) と FTPS(990 番 ) をリスンする必要性が出てくると思います listen_port 設定に 2 つのポート番号を指定できないのですが vsftpd を xinetd 経由で 2 つ起動させないと 21 番と 990 番をリスンする事は出来ないのでしょうか? 本書の事例 ( 質問 / 内容 ) は サービスの概要をイメージしていただくために取りまとめられております 全ての事例は実際の対応履歴をベースとしておりますが システム内容 各種条件 技術説明や途中経過の記載などを数多くの を削除しています そのため 記載内容に関する技術的正確性は保証されておりません 予めご了承ください 6