はじめに

この記事は「クラウドインテグレーション事業部 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が黄色い⚠︎のアイコンに変化して表示されます。

インスタンスの復旧

一時的にダウンさせただけになるので、インスタンスの再起動を実行すればステータスチェックは正常になります。

インスタンスステータスチェックが失敗した場合は通常、自分自身で (例えば、インスタンスを再起動する、インスタンス設定を変更するなどによって) 問題に対処する必要があります。

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html

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でインスタンスステータスチェックを意図的に失敗させる場合、インターフェースが変更されていることを知っておくとスムーズに監視通知テストや障害試験を行うことができるので覚えておくといいでしょう。