本トピックでは、Linux システムソフトウェアの既知のバグにより、Elastic Compute Service (ECS) インスタンス上でサービスが利用できない、または期待どおりに動作しない問題を解決するために、インスタンスの Linux オペレーティングシステム内のソフトウェアパッケージをアップグレードする方法について説明します。
利用シーン
Linux システムソフトウェアの既知のバグにより、Linux ECS インスタンス上で特定のサービスが利用できない、または期待どおりに動作しない場合があります。ECS インスタンスの Linux オペレーティングシステムが最新バージョンでない場合、オペレーティングシステム内のソフトウェアパッケージをアップグレードすることで、この問題を解決できます。
Linux システムソフトウェアの既知のバグにより、以下の問題が発生する可能性があります。
インスタンスのオペレーティングシステムのソフトウェアパッケージのアップグレードで解決できる問題
CentOS または RHEL 7 インスタンスでのサービスまたはプロセスの起動時に発生するポート競合
現象
特定のバージョンの CentOS または RHEL 7 を実行している ECS インスタンスでサービスまたはプロセスを起動すると、ポート競合を示すエラーメッセージが表示され、プロセスが起動できない、またはサービスが利用できなくなることがあります。netstat コマンドを実行してポートの使用状況を照会すると、サービスまたはプロセスが使用するポートが、次の図に示すように、すでに dhclient によって使用されていることがわかります。dhclient は、Internet Systems Consortium (ISC) の動的ホスト構成プロトコル (DHCP) クライアントの略です。

原因
通常、dhclient はポート 67 または 68 で DHCP バージョン 4 (DHCPv4) パケットを、ポート 546 または 547 で DHCP バージョン 6 (DHCPv6) パケットをリッスンします。特定のバージョンの CentOS または RHEL 7 を実行する ECS インスタンスには、4.2.5-60 より前のバージョンの dhclient が付属しています。4.2.5-60 より前のバージョンの dhclient にはバグが含まれており、ポート 67、68、546、547 以外のポートでリッスンすることがあります。ECS インスタンス上の他のサービスやプロセスもこれらのポートを使用する場合、ポート競合が発生し、他のサービスやプロセスが起動に失敗したり、利用できなくなったりする可能性があります。
解決策
CentOS または RHEL 7 インスタンスの dhclient パッケージを最新バージョンにアップグレードします。詳細については、本トピックの「特定のソフトウェアパッケージの最新バージョンへのアップグレード」または「すべてのソフトウェアパッケージの最新バージョンへのアップグレード」セクションをご参照ください。
長時間稼働している CentOS または RHEL 7 インスタンスへの SSH 接続の低速化
現象
CentOS または RHEL 7 インスタンスが長時間稼働している場合、インスタンスへの SSH 接続が遅くなることがあります。コマンドを実行してシステムプロセスの CPU 使用率を照会すると、systemd-logind プロセスが 100% の CPU 使用率で実行されていることがわかります。CentOS または RHEL 7 インスタンスのシステムログに、次のようなメッセージが表示されます。
# journalctl -u dbus
Mar 30 17:23:19 localhost dbus[21]: [system] Activating via systemd: service name='org.freedesktop.login1' unit='dbus-org.freedesk...
Mar 30 17:23:42 localhost dbus[21]: [system] Failed to activate service 'org.freedesktop.login1': timed out...原因
上記の問題は、systemd-logind および D-Bus コンポーネントの既知のバグが原因で発生します。これらのコンポーネントをアップグレードすることで、問題を解決できます。
解決策
CentOS または RHEL 7 インスタンスの dbus パッケージを最新バージョンにアップグレードします。詳細については、本トピックの「特定のソフトウェアパッケージの最新バージョンへのアップグレード」または「すべてのソフトウェアパッケージの最新バージョンへのアップグレード」セクションをご参照ください。
すべての Linux オペレーティングシステムで D-Bus コンポーネントを最新バージョンにアップグレードすることを推奨します。
openSUSE および SUSE Linux Enterprise Server: D-Bus パッケージ名は
dbus-1です。その他の Linux ディストリビューション: D-Bus パッケージ名は
dbusです。
Linux ECS インスタンスのオペレーティングシステムにおけるソフトウェアパッケージのアップグレード
Linux ECS インスタンスでサービスが使用できない、または期待どおりに動作しない問題が Linux システムソフトウェアの既知のバグによって発生した場合、オペレーティングシステムのコンポーネントをアップグレードして問題を解決します。詳細については、本トピックの「特定のソフトウェアパッケージの最新バージョンへのアップグレード」または「すべてのソフトウェアパッケージの最新バージョンへのアップグレード」セクションをご参照ください。以下の例では、dhclient パッケージを使用します。他のソフトウェアパッケージをアップグレードする手順は、dhclient パッケージをアップグレードする手順と似ています。
特定のソフトウェアパッケージの最新バージョンへのアップグレード
Linux ECS インスタンスに接続します。詳細については、「ECS リモート接続方法の選択」をご参照ください。
特定のソフトウェアパッケージを最新バージョンにアップグレードします。
ソフトウェアパッケージのアップグレードに使用できるコマンドは、オペレーティングシステムによって異なります。
Alibaba Cloud Linux 2.1903、AnolisOS 7、CentOS 7 以前、および RHEL 7 以前で使用できるコマンド:
sudo yum update <Software package name>AlmaLinux、AnolisOS 8 以降、CentOS 8 以降、CentOS Stream 8 以降、Fedora 33 以降、RHEL 8 以降、および Rocky Linux で使用できるコマンド:
sudo dnf update <Software package name>Debian および Ubuntu で使用できるコマンド:
# ローカルデバイスに保存されているソフトウェアリポジトリ情報を更新して、ソフトウェアパッケージに関する最新情報を取得します。 sudo apt update # 特定のソフトウェアパッケージを最新バージョンにアップグレードします。 sudo apt upgrade <Software package name>openSUSE および SUSE Linux Enterprise Server で使用できるコマンド:
# ローカルデバイスに保存されているソフトウェアリポジトリ情報を更新して、ソフトウェアパッケージに関する最新情報を取得します。 sudo zypper refresh # 特定のソフトウェアパッケージを最新バージョンにアップグレードします。 sudo zypper update <Software package name>
すべてのソフトウェアパッケージの最新バージョンへのアップグレード
Linux ECS インスタンスに接続します。詳細については、「ECS リモート接続方法の選択」をご参照ください。
すべてのソフトウェアパッケージを最新バージョンにアップグレードします。すべてのソフトウェアパッケージのアップグレードに使用できるコマンドは、オペレーティングシステムによって異なります。
Alibaba Cloud Linux 2.1903、AnolisOS 7、CentOS 7 以前、および RHEL 7 以前で使用できるコマンド:
sudo yum updateAlmaLinux、AnolisOS 8 以降、CentOS 8 以降、CentOS Stream 8 以降、Fedora 33 以降、RHEL 8 以降、および Rocky Linux で使用できるコマンド:
sudo dnf updateDebian および Ubuntu で使用できるコマンド:
# ローカルデバイスに保存されているソフトウェアリポジトリ情報を更新して、ソフトウェアパッケージに関する最新情報を取得します。 sudo apt update # インストールされているすべてのソフトウェアパッケージを最新バージョンにアップグレードします。 sudo apt upgradeopenSUSE および SUSE Linux Enterprise Server で使用できるコマンド:
# ローカルデバイスに保存されているソフトウェアリポジトリ情報を更新して、ソフトウェアパッケージに関する最新情報を取得します。 sudo zypper refresh # インストールされているすべてのソフトウェアパッケージを最新バージョンにアップグレードします。 sudo zypper update