By ribbon @
2025-04-07 11:59
たぶん期待通りの動作になりました。 要は、IPaddr2に渡すパラメータを調整すれば良いわけで、いろいろ見て、clone-max=1 と言うパラメータを、crm 設定ファイルに追加すれば良さそうと。で
group g-storage dlm lvmlockd group vip-group vip clone cl-storage g-storage \ meta interleave=true target-role=Started clone vip-clone vip-group \ meta clone-max=1
のように書き換えたところ、たぶん期待通りの動作になりました。ノードを standby 状態にすると、IP アドレスが相手側に移動します。 なので、IPaddr2 の動作としては問題ないし、heartbeat としての動作も問題ないけれど、パラメータの設定がミソ、という感じです。この辺 SLES のドキュメントには無いので、もう少し追記してもらえればありがたかったかなと。
By ribbon @
2025-04-06 17:58
IP_CIP が yes になる条件が分かりました。 ソースを見ると、IPaddr2 の ip_init() 関数の中で、
if [ "$IP_INC_GLOBAL" -gt 1 ] && ! ocf_is_true "$OCF_RESKEY_unique_clone_address"; then
IP_CIP="yes"
IP_CIP_HASH="${OCF_RESKEY_clusterip_hash}"
という行があるのですね。IP_CIP を yes にしているのはここだけです。で、IP_CIP を yes にする条件は、IP_INC_GLOBAL が2以上の時(1より大きいとき)、で、IP_INC_GLOBAL を設定しているのは、やはり ip_init() の始まりの方で、
IP_INC_GLOBAL=${OCF_RESKEY_CRM_meta_clone_max:-1}
IP_INC_NO=`expr ${OCF_RESKEY_CRM_meta_clone:-0} + 1`
という行の所。で、OCF_RESKEY_CRM_meta_clone_max を設定しているのは IPaddr2 内ではなくて、これを起動する heartbeat。情報は https://clusterlabs.org/projects/pacemaker/doc/2.1/Pacemaker_Administration/html/agents.html にあります。あとhttps://blog.drbd.jp/2017/12/advance_resource/ も参考になります。どうやら、OCF_RESKEY_CRM_meta_clone_max が2に設定されているみたいです。なので、iptables を動かすロジックに進んでしまったみたい。
By ribbon @
2025-04-04 23:04
openSUSE で動かないので、では、本家本元の Red Hat Enterprise Linux ではどうなのか、を調べてみました。RHEL では IPaddr2 からのメッセージは ocf_log という関数を使っているようで、add_interface() 関数内にある ocf_log に少し細工をして、実行コマンドと引数が表示されるようにしてみました。すると、
4月 04 21:38:17 rh9-a IPaddr2(ClusterIP)[467709]: INFO: Adding inet address 192.168.3.179/24 with broadcast address 192.168.3.255 to device ens18 ip -f inet addr add 192.168.3.179/24 brd 192.168.3.255 dev ens18 4月 04 21:38:17 rh9-a avahi-daemon[749]: Registering new address record for 192.168.3.179 on ens18.IPv4. 4月 04 21:38:17 rh9-a IPaddr2(ClusterIP)[467715]: INFO: Bringing device ens18 up ip link set ens18 up
と表示されていたんですね。つまり、RHEL では ip コマンドを使って IP アドレスを設定していると。 おそらく、どこかの引数で、ip コマンドを指定していると思うのですが、そこが分かれば RHEL と同じように openSUSE でも設定すれば、うまくいきそうです。
2025/4/5 追記 で、IPaddr2 にあっちこっち logger 入れて調べてみたら、
Apr 05 20:59:41 clvm-a root[7827]: ip_served cur_nic=,IP_CIP=yes,OCF_RESKEY_ip=192.168.3.169 Apr 05 20:59:41 clvm-a root[7828]: ip_saved return no Apr 05 20:59:41 clvm-a root[7829]: ip_start: IP_CIP=yes,IP_STATUS=no Apr 05 20:59:41 clvm-a root[7830]: IP_CIP=yes,ip_status=noq Apr 05 20:59:41 clvm-a root[7833]: iptables-legacy -I INPUT -d 192.168.3.169 -i eth0 -j CLUSTERIP –new –
と言うトレース結果が。あれ、IP_CIP は IP アドレスじゃなくて yes が入っている! RHEL だとここには何も入らないか、IPアドレスのどちらか。なので、IP_CIP に yes が入ることがおかしい。でソースを読むと、IP_CIP が 空 じゃなくて、 ip_status が no だとすると、iptables を呼び出す模様。どうやら IP_CIP が yes なので誤動作した感じ。
By ribbon @
2025-03-23 13:13
openSUSE でSLES のマニュアルを見ながら、クラスタのテストをしています。clvm 環境ができたので、今度は仮想IP のテストをしようとしたらハマりました。
仮想IP の定義後、ノードを再起動すると、syslog に
Mar 23 12:28:31 clvm-a IPaddr2(vip)[3495]: ERROR: iptables failed Mar 23 12:28:31 clvm-a pacemaker-execd[3148]: notice: vip start (call 25, PID 3394) exited with status 1 (iptables failed) (execution time 73ms) Mar 23 12:28:31 clvm-a pacemaker-controld[3151]: notice: Result of start operation for vip on clvm-a: error (iptables failed) Mar 23 12:28:31 clvm-a pacemaker-controld[3151]: notice: vip_start_0@clvm-a output [ iptables v1.8.7 (legacy): chain name not allowed to start with -'\n\nTry
iptables -h’ or ‘iptables –help’ for more information.\nocf-exit-reason:iptables failed\n ]
調べて見たところ、crm から呼び出している IPaddr2モジュールの中で、iptables を呼び出し、それがエラーを出していました。どうも、openSUSE 15.6 にインストールされている iptables バージョン1.8.7 ではクラスタ関係の機能が無いのですね。それで動作しなかったという次第。
さて、どう対処したものか。
By ribbon @
2025-02-07 10:01
Proxmox VE を使い、openSUSE (だけじゃなくて、たぶん他のLinuxディストリビューションも)を動かし、ネットデバイスを再作成すると、OSから見たデバイス名が変わることがあります。たとえば今まで eth0 だったものが eth1 になるなどです。どうやら、MAC アドレスが変わると別デバイスと認識して、デバイス名を割り当て直すようです。これは、 /etc/udev/rules.d/70-persistent-net.rules を観て気がつきました。
対応としては、70-persistent-net.rules を観て、Proxmox VE で、ネットデバイスの MAC アドレスを eth0 として認識しているデバイスのものに変えてあげればうまくいきます。
この辺も参考になります。https://syu-m-5151.hatenablog.com/entry/2017/11/03/162656
By ftake @
2024-12-26 01:07
openSUSE Advent Calendar 2024 最後の記事です。openSUSE.Asia Summit の反動や、海外への旅立ちなどなど、なかなか厳しい結果となりました。そんな中でも若手メンバー3人が書いてくれたので、まぁ良かったかなと思います。
最後は、恒例の1年の振り返りです。
1月
OSC 大阪に出店しました。新幹線+宿のセットプランで行ったら、平日ということで色々なクーポンがついてきたため、前日に百舌古墳群に行ったり、あべのハルカスに行ったりと、大阪観光を満喫していました。夜はユーザ会関係者で前夜祭ということで、気づいたらたくさん串揚げを食べていました(2周目に入ったところで終了)
2月
Asia Summit の企画書を書く会議をした記録があります。
3月
OSC 2024 Tokyo/Spring に出展しました。オフラインの OSC も定着してきたので、関東に住んでいる若手にも新しく手伝ってもらいました。20代が3人もいて頼もしかったです。
4月
OSunC 川越に参加しました。
5月
まずは技書博こと技術書同人誌博覧会に参加しました。なんだかんだ出展者としての参加は初めてでした。奥に樽酒が少し写っていますが、懇親会で鏡割りが行われました。
OSC名古屋にも参加しました。
6月
久しぶりにOSC北海道に参加しました。しかも、一人だけではなく、今年は修太さんに加え、rlysleepynickさんがブース番をしてくれました。北海道は頼んだ!
OSC後はちょっと足を伸ばして知床へ行ってきました。
7月
openSUSE.mini Summit & Leap 15.6 リリースパーティ を開催しました。懇親会枠が早々に埋まってしまいましたが、久しぶりの人が多い単独イベントになって良かったです。
OSC京都に参加しています。私は参加していないので記録なし。
8月
コミックマーケットC104に参加しました。Geeko Magazine Special Edition 2024夏号を頒布しました。今回の表紙はパイナップルでした(そろそろネタ切れ)。
9月
Open Developers Conference (ODC) に参加しました。
10月
OSC東京/Fallに参加しました。この日から Open Source Summit Japan、Open Compliance Summit、Japan SBOM Summit、openSUSE.Asia Summitと10日間連続イベントで、かなりハードなスケジュールでした。
11月
openSUSE.Asia Summit 2024 を7年ぶりに日本で開催しました。アジアを中心に世界各地から約150名が麻布台ヒルズに集まりました。会場として株式会社SHIFT 様に、本社のエントランスホールとカンファレンスルームを提供いただきました。
イベントレポートは年明けになりそうです。
12月
今年もopenSUSE Advent Calendarを開催しました。Advent Calendarはコミュニティ活動への入りやすい入り口ですので、ぜひ、来年はご参加ください。
12月30日にはコミックマーケットC105に出展し、Geeko Magazine Special Edition 2024冬号 を頒布します。ぜひお越しください。
おわりに
2024年はAsia Summit開催のため奔走した1年となりました。2025年は2日間オフライン開催、セミナーありのフルサイズの OSC 東京/Spring が帰ってきます。会場は23区内、駒澤大学です。これ以外にも国内イベントや、できればハンズオンなどのイベントも開催していければと思います。
By ftake @
2024-12-16 00:32
12月30日(月)コミックマーケット C105 2日目に Geeko Magazine Special Edition 2024 冬号を発行します。スペースは西2ホール”う”-04a です。午後は比較的空いていますので、チケットを事前にご購入の上、お越しください。
今回の内容は次のようになっています:
openSUSE.Asia Summit 2024 開催
Proxmox VE の CPU 回りの変更を少しだけ追いかけてみた
AVX 命令を使うプログラムが Proxmox の仮想マシンで動かない
ARM サーバーのリファレンスモデル “SBSA” ゲストを KVM ホスト上で動作させてみよう
小説エーデル・シュティメ「秋雨のカメレオン・パニック」
Krita と AI で描く賑やかな openSUSE.Asia Summit の光景