このトピックでは、Linux の Elastic Compute Service (ECS) インスタンス上のソフトウェアパッケージをアップグレードし、オペレーティングシステムの既知のソフトウェアの欠陥による問題を解決する方法について説明します。
シナリオ
Linux の ECS インスタンス上のサービスが想定外の動作をする場合、原因は古いオペレーティングシステムに存在するソフトウェアの欠陥である可能性があります。多くの場合、ソフトウェアパッケージをアップグレードすることで問題を解決できます。
既知のソフトウェアの欠陥は次のとおりです。
ソフトウェアのアップグレードによる問題の修正
CentOS または RHEL 7 でのポートの競合
症状
一部の CentOS または Red Hat Enterprise Linux (RHEL) 7 インスタンスでは、ポートの競合が原因でサービスまたはプロセスの起動に失敗し、利用不可になります。netstat コマンドでポート使用状況を確認すると、次の出力のように、ポートが dhclient プロセスによって占有されていることがわかります。
[xxx@xxx ~]# netstat -lnput |grep dhc
udp 0 0 0.0.0.0:24399 0.0.0.0:* 10994/dhclient
udp 0 0 0.0.0.0:68 0.0.0.0:* 10994/dhclient
udp6 0 0 :::21027 :::* 10994/dhclient
原因
通常、ISC DHCP クライアント (dhclient) サービスは、DHCPv4 ではポート 67/68、DHCPv6 ではポート 546/547 を使用します。特定バージョンの CentOS または RHEL 7 を実行している一部の ECS インスタンスでは、プリインストールされている dhclient のバージョンが 4.2.5-60 より古いものです。これらの旧バージョンにはソフトウェアの欠陥があり、dhclient が非標準ポートを占有してしまいます。インスタンス上の別のサービスまたはプロセスがこれらのポートのいずれかを使用しようとすると、ポートの競合が発生し、サービスまたはプロセスを起動できなくなります。
ソリューション
「特定のソフトウェアパッケージのアップグレード」または「すべてのソフトウェアパッケージのアップグレード」の手順に従って、CentOS または RHEL 7 システム上の dhclient ソフトウェアパッケージを更新してください。
CentOS または RHEL 7 での SSH 接続の低速化
症状
CentOS または RHEL 7 を実行している長時間実行の ECS インスタンスへの SSH リモート接続が遅くなる場合があります。システムプロセスの CPU 使用率を確認すると、systemd-logind プロセスが CPU を 100% 消費していることがあります。システムログには、次のようなエントリが含まれます。
# 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 コンポーネントの既知の欠陥が原因です。解決するには、これらのコンポーネント、特に D-Bus コンポーネントを更新する必要があります。
ソリューション
「特定のソフトウェアパッケージのアップグレード」または「すべてのソフトウェアパッケージのアップグレード」の手順に従って、CentOS または RHEL 7 システム上の dbus ソフトウェアパッケージを更新してください。
すべての Linux システムで、D-Bus コンポーネントを最新バージョンに更新することを推奨します。
-
openSUSE および SUSE Linux Enterprise Server の場合、ソフトウェアパッケージは
dbus-1です。 -
その他の Linux ディストリビューションの場合、ソフトウェアパッケージは
dbusです。
ソフトウェアパッケージのアップグレード
Linux オペレーティングシステムの既知のソフトウェアの欠陥が ECS インスタンス上で問題を引き起こしている場合は、影響を受けるコンポーネントをアップグレードすることで問題を解決できます。「特定のソフトウェアパッケージのアップグレード」または「すべてのソフトウェアパッケージのアップグレード」を選択できます。以降の手順では、例として dhclient を使用します。
特定のソフトウェアパッケージのアップグレード
-
Linux インスタンスにリモート接続します。詳細については、「接続方法」をご参照ください。
-
オペレーティングシステムに応じたコマンドを実行して、特定のソフトウェアパッケージをアップグレードします。
コマンドはオペレーティングシステムによって異なります。
-
Alibaba Cloud Linux 2.1903、AnolisOS 7、CentOS 7 以前、Red Hat Enterprise Linux 7 以前:
sudo yum update <package_name> -
AlmaLinux、AnolisOS 8 以降、CentOS 8 以降、CentOS Stream 8 以降、Fedora 33 以降、Red Hat Enterprise Linux 8 以降、Rocky Linux:
sudo dnf update <package_name> -
Debian および Ubuntu:
# まず、ローカルのソフトウェアリポジトリのメタデータを更新して、最新のパッケージ情報を取得します。 sudo apt update # 次に、指定したソフトウェアパッケージを最新バージョンにアップグレードします。 sudo apt upgrade <package_name> -
openSUSE および SUSE Linux Enterprise Server:
# まず、ローカルのソフトウェアリポジトリのメタデータを更新して、最新のパッケージ情報を取得します。 sudo zypper refresh # 次に、指定したソフトウェアパッケージを最新バージョンにアップグレードします。 sudo zypper update <package_name>
-
すべてのソフトウェアパッケージのアップグレード
-
Linux インスタンスにリモート接続します。詳細については、「接続方法」をご参照ください。
-
オペレーティングシステムに応じたコマンドを実行して、インストール済みのすべてのソフトウェアパッケージをアップグレードします。
-
Alibaba Cloud Linux 2.1903、AnolisOS 7、CentOS 7 以前、Red Hat Enterprise Linux 7 以前:
sudo yum update -
AlmaLinux、AnolisOS 8 以降、CentOS 8 以降、CentOS Stream 8 以降、Fedora 33 以降、Red Hat Enterprise Linux 8 以降、Rocky Linux:
sudo dnf update -
Debian および Ubuntu:
# まず、ローカルのソフトウェアリポジトリのメタデータを更新して、最新のパッケージ情報を取得します。 sudo apt update # 次に、インストール済みのすべてのソフトウェアパッケージを最新バージョンにアップグレードします。 sudo apt upgrade -
openSUSE および SUSE Linux Enterprise Server:
# まず、ローカルのソフトウェアリポジトリのメタデータを更新して、最新のパッケージ情報を取得します。 sudo zypper refresh # 次に、インストール済みのすべてのソフトウェアパッケージを最新バージョンにアップグレードします。 sudo zypper update
-