Google Cloudを再起動しましたVMになり、ssh経由でアクセスできなくなりました。ログから以下のメッセージが表示されます-
Sep 26 21:51:02 NetworkManager[1300]: <info> [1569523862.8802] dhcp4 (eth0): canceled DHCP transaction
Sep 26 21:51:34 NetworkManager[1300]: <info> [1569523894.8143] device (eth0): state change: ip-config -> failed (reason 'ip-config-unavailable', sys-iface-state: 'managed')
Sep 26 21:51:34 NetworkManager[1300]: <info> [1569523894.8148] manager: NetworkManager state is now DISCONNECTED
Sep 26 21:51:34 NetworkManager[1300]: <warn> [1569523894.8151] device (eth0): Activation: failed for connection 'System eth0'
Sep 26 21:51:34 NetworkManager[1300]: <info> [1569523894.8153] device (eth0): state change: failed -> disconnected (reason 'none', sys-iface-state: 'managed')```
エラーメッセージは、dhclientが正常に実行できなかったことを示しています。ログにはdhcp4 (eth0): client pid XXXX exited with status 127
のようなものもありましたか?または、そうでない場合、dhcp4
に関連する他のログエントリはありますか?
エラーexited with status 127
が発生したと想定して、解決策を提案します。 (別のエラーがある場合はお知らせください。回答を編集します。)
ネットワーク接続がないため、シリアルコンソールからVMにログインし、rootへのSudoアクセスを持つユーザーアカウントのパスワードで認証する必要があります。
終了コード127は、プログラムが実行できなかったことを意味します。どうして?まあ、それを試してください:dhclient
コマンドを実行して何が起こるか見てください:
#> Sudo dhclient --help
dhclient: error while loading shared libraries: libdns-export.so.1102: cannot open shared object file: No such file or directory
わかりました、この場合、dhclient
は必要なライブラリをロードできません。 Googleを検索すると この古いredhatバグ が見つかるかもしれません。これは、ライブラリをldconfig
に再リンクすることで問題が修正されたことを示唆しています:
#> Sudo /sbin/ldconfig
その後、dhclient
は正常に実行されます。
#> Sudo dhclient --help
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
[…]
次に、NetworkManagerの再起動が成功します。
#> Sudo systemctl restart NetworkManager.service
そして、ネットワークが稼働しています:
#> ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=52 time=1.98 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=52 time=0.258 ms
インスタンスの起動時にネットワークスタックが失敗するのは、VMの起動ディスクが100%使用されているためです。
解決策は、ディスクのサイズを大きくすることです。
必要な手順を詳しく説明するこの記事を書きました。
以下は一時的に私の問題を修正します。
(i)シリアルコンソール経由でVMにログインします。ログインを表示するには、戻るボタンをクリックする必要がある場合があります。
(ii)VMメモリとディスク領域に問題がないことを確認します。`df-hなどのツールを使用してディスク領域を確認できます。十分でない場合は、次のようにしてください John Hanley 上記のチュートリアルでそれを増やします。すべてが正常で、唯一のネットワークが失敗している場合は、ステップiiiに進みます。
(iii)CentOSでNetworkManagerを無効にしてネットワークを手動で設定するには、次のようにします。
systemctl stop NetworkManager
systemctl disable NetworkManager
ifconfig eth0 <internal_ip> netmask 255.255.255.0
route add default gw <your-cloud-gateway>
上記の後、あなたはあなたのGoogle VMへの完全なアクセス権を持っています、しかし、あなたはVMは他のVMから見えません、あなたは以下のようにrouteコマンドを使用してこれを設定する必要があります
route add <other-VM-internal-IP> netmask 0.0.0.0 gw <you-cloud-gateway>
すべてのVM仮想サーバーから見えるようにしたい場合は、上記のことを行う必要があります。
この修正は一時的なものであり、再起動時に設定が失われる可能性があるため、起動時にこれらのコマンドを/etc/rc.localに配置して実行することができます。
免責事項:私はあまり経験がありませんが、上記は、メーデーがあり、永続的な解決策を探すときにクライアントにサービスを迅速に復旧させる必要がある重要なサーバーを修正する方法でした。