2025年01月04日(土) - 18:54 | カテゴリ:
Linux
“ns-lab BB”はRHEL系・Debian系・SUSE系の3ディストリビューションを併用し、
基本となるOS設計は合わせつつも導入時期によって微妙に違いがあったりする。
差異があると言ってもインターネットに接続しているサーバは、
セキュリティ対策としてファイアウォールでACLを書いてパケット制御もしている。
このACL設定量がかなりの大きさとなっており、
システムによって差異はあるとしてもACLを6,000~45,000行ほど書いている。
全盛期は60,000~70,000行はあったのでコレでも最適化して登録内容を減らした方だが、
とは言っても多いのは否めない状況になっている (´・ω・`)
話が変わり、年末年始にSUSE系のOSをアップグレードした所、
firewalldのポリシーを自動更新するスクリプトでエラーが出る様になった。
詳細を調べたら”firewall-cmd –reload”を実行した時に25秒以上の時間を要してしまい、
d-bus応答不能と判断されてプロセス間通信をぶった切ってしまう様だった。
ややこしいのが、SUSE系でのみ問題が発生してRHEL系・Debian系は発生しない所だった。
フォーラムを読むとOS毎にfirewall-cmdとd-busの細かい実装差異がある様で、
今回はSUSE系で問題を踏み抜いた形となった。
また、timeコマンドを使って処理秒数を計測したところ、
ACLを6,000行ほど読み込む段階で約26秒を要しておりコレが原因と言えそうだった。
最終的に次の設定を行い、d-busのservice_start_timeoutを60秒(60000ms)に拡張しつつ、
ACLをipsetでまとめる事にした。
………
ACL処理のipset化とd-bus拡張を同時に実行したので何方が効いたのかわからないが、
テスト段階では正常動作しており丸一日は自動制御含め処理を継続出来た。
$ cat /etc/dbus-1/system.d/system-local.conf
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<limit name="service_start_timeout">60000</limit>
</busconfig>
|
ACLを自動生成するスクリプトの改修も年始に行い日時処理が無事通るのかテストを実施中。
こちらは土日に高負荷の処理が走るので、それを無事にオールクリアしたら記事にしようと思う。
iptablesのACLをipsetでグループ化する方法はググればいくらでも出てくるので省略するが、
今回の改修で地雷ポイントも分かって来たので、こちらも時間があれば書きたい。
« 続きを隠す
2024年12月28日(土) - 22:30 | カテゴリ:
Linux
Zabbix 7.2.0が12月10日にリリースされた事に気づかず年末になってしまったので、
休みを使って自鯖のZabbixを7.2にアップグレードしてみた。
今回はLTSからのマイナーアップグレードという事もあり、目に見えて大きな変化は見当たらなかった。
主にテンプレート関係の拡充と内部処理の最適化が行われている様で、
刺さる機能が無ければスキップしても良いかもしれない。

画像は自作したダッシュボードだが、特に変化は見当たらなかった。
以前の大型アップデートではグラフが表示されなくなる事もあり、
再発を若干気にしていたものの杞憂に終わった。
筆者は利用してないが、今回からバックエンドDBとしてOracleがサポートされなくなった模様。
使うシーンは稀とは思うものの、エンタープライズ環境で利用している人は気を付けた方が良さそう。
2024年12月21日(土) - 23:29 | カテゴリ:
Linux
ns-lab BBのメールサーバではマルウェア対策でamavisとclamavを利用しており、
postfixからプロセス間通信でメールをリアルタイムで投げ込む様にしていたりする。
先日メールサーバをメンテナンスしていた所、
プロセス間通信の箇所が上手く動かずデータをロストしている事がわかった。
調べてみたら、プロセス間通信用のソケットファイルがsystemdでパス強制化されており、
本来の設定が上手く反映されておらずデータ損失をしていた。
amavisやclamavの設定を変更する事も考えたが他サーバとも構成を統一したかったので、
強制上書きされたファイルの保存先を書き換えてみた。
実施した事は簡単で、”systemctl edit example”でsystemdユニットファイルを上書きするのみ。
記載する内容にコツがあり、正規のユニットファイルで保存されたデータを一度初期化してから、
上書き内容を追記する必要があった。
例えば、ListenStream・SocketUser・SocketGroupを変更する場合、
“systemctl edit example”で実行した後に次の内容を追記する必要がある。
以下サンプルはソケットの設定だが、systemdユニットファイルでも同様の事が出来る模様。
[Socket]
ListenStream=
SocketUser=
SocketGroup=
ListenStream=/var/run/example/service.sock
SocketUser=exauser
SocketGroup=exagroup
|
最初に設定を初期化をしないと、変更前のユニットファイルで設定した内容に追記する形となる。
コレに気づくまでに丸一日を溶かしてしまった… (´・ω・`)
挙動についてArch Linuxのコミュニティーにも記載があるので詳細は以下の内容も読んで欲しい。
« 続きを隠す