はじめに
この記事は「クラウドインテグレーション事業部 SRE 第三セクションブログリレー」の5回目(全6回)の記事です。
システムの構築後、監視通知テストや障害試験を実施する機会があるかと思います。Amazon Linux 2(以降、AL2)では、eth0のネットワークインターフェースをダウンさせることでヘルスチェックを失敗させることができました。しかし、Amazon Linux 2023(以降、AL2023)でそのまま実行するとエラーになります。理由はネットワークインターフェースを管理する方法が変わったからです。
本ブログではその内容を備忘録として記事にしました。
AL2023で実施する場合
次のコマンドはAL2で実行していたコマンドをAL2023で実行した場合の結果です。
エラーメッセージには、「そのようなデバイスはありません」と言った内容が出力されました。
$ ifconfig eth0 down eth0: ERROR while getting interface flags: No such device
IP アドレスとプロパティ情報を確認する
そこで、IP アドレスとプロパティ情報を確認すると、eth0ではなくenX0があることが判断できました。
そのため、ifconfigコマンドの実行内容をenX0にして実行してみます。
$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: enX0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc fq_codel state UP group default qlen 1000 link/ether 06:00:6e:b9:f1:9d brd ff:ff:ff:ff:ff:ff altname eni-00db547cd7d59802f altname device-number-0.0 inet 10.0.7.90/20 metric 512 brd 10.0.15.255 scope global dynamic enX0 valid_lft 3152sec preferred_lft 3152sec inet6 fe80::400:6eff:feb9:f19d/64 scope link proto kernel_ll
ネットワークインターフェースをダウンさせる
$ ifconfig enX0 down
最長5分ほど待ち、マネージメントコンソールのStatus Checksが黄色い⚠︎のアイコンに変化して表示されます。
インスタンスの復旧
一時的にダウンさせただけになるので、インスタンスの再起動を実行すればステータスチェックは正常になります。
インスタンスステータスチェックが失敗した場合は通常、自分自身で (例えば、インスタンスを再起動する、インスタンス設定を変更するなどによって) 問題に対処する必要があります。
AL2 からAL2023 の変更点
AL2 ではISC dhclient または dhclient を使用していましたが、AL2023 はsystemd-networkd システムサービスで管理されるようになりました。
試しにsystemctlコマンドでsystemd-networkdのステータス状況を確認したところ、確かに動作していることがわかりました。
https://docs.aws.amazon.com/ja_jp/linux/al2023/ug/compare-with-al2.html#networkd
$ systemctl status systemd-networkd.service ● systemd-networkd.service - Network Configuration Loaded: loaded (/usr/lib/systemd/system/systemd-networkd.service; enabled; preset: enabled) Active: active (running) since Thu 2024-10-31 01:32:17 UTC; 42min ago TriggeredBy: ● systemd-networkd.socket Docs: man:systemd-networkd.service(8) man:org.freedesktop.network1(5) Main PID: 1948 (systemd-network) Status: "Processing requests..." Tasks: 1 (limit: 1112) Memory: 3.3M CPU: 44ms CGroup: /system.slice/systemd-networkd.service └─1948 /usr/lib/systemd/systemd-networkd Oct 31 01:32:17 ip-10-0-7-90.ap-northeast-1.compute.internal systemd[1]: Started systemd-networkd.service - Network Configuration. Oct 31 01:32:17 ip-10-0-7-90.ap-northeast-1.compute.internal systemd-networkd[1948]: enX0: Configuring with /usr/lib/systemd/network/80-ec2.network. Oct 31 01:32:17 ip-10-0-7-90.ap-northeast-1.compute.internal systemd-networkd[1948]: enX0: Link UP Oct 31 01:32:17 ip-10-0-7-90.ap-northeast-1.compute.internal systemd-networkd[1948]: enX0: Gained carrier Oct 31 01:32:18 ip-10-0-7-90.ap-northeast-1.compute.internal systemd-networkd[1948]: enX0: DHCPv4 address 10.0.7.90/20, gateway 10.0.0.1 acquired from 10.0.0.1 Oct 31 01:32:18 ip-10-0-7-90.ap-northeast-1.compute.internal systemd-networkd[1948]: enX0: Gained IPv6LL Oct 31 01:32:18 ip-10-0-7-90.ap-northeast-1.compute.internal systemd-networkd[1948]: enX0: Reconfiguring with /run/systemd/network/70-enX0.network. Oct 31 01:32:18 ip-10-0-7-90.ap-northeast-1.compute.internal systemd-networkd[1948]: enX0: DHCP lease lost Oct 31 01:32:18 ip-10-0-7-90.ap-northeast-1.compute.internal systemd-networkd[1948]: enX0: DHCPv6 lease lost Oct 31 01:32:18 ip-10-0-7-90.ap-northeast-1.compute.internal systemd-networkd[1948]: enX0: DHCPv4 address 10.0.7.90/20, gateway 10.0.0.1 acquired from 10.0.0.1
まとめ
AL2023での変更点が多いことは知っていましたが、実際にAL2023上で試してみていい気づきになりました。
AL2023でインスタンスステータスチェックを意図的に失敗させる場合、インターフェースが変更されていることを知っておくとスムーズに監視通知テストや障害試験を行うことができるので覚えておくといいでしょう。