GCP(Google Cloud Platform)で、構築して運用していたサーバのOSがCentos6で、サポートが切れているので、Centos7にバージョンアップしたら、GCPのコンソールSSHが繋がらなくなったお話。
Centos6からCentos7へのバージョンアップ経緯
GCPのGCE( Google Compute Engine)で新しくインスタンスを作成するときには、基本的にGCPが用意しているイメージからインスタンスを作成すると思います。
今回コンソールSSHが繋がらなくなったサーバもGCPが用意したイメージからインスタンスを構築したもの。ただ、OSがCentos6で、サポートが切れているのでCentos7にバージョンアップをしたい。
いろいろ、アプリケーションも載っているので、新規で構築するのは面倒くさい。
Centos(Redhat)からもCentos6から、Centos7へのバージョンアップ手順やツールが提供されているので、これらを使用してCentos6からCentos7へバージョンアップすることにした。
バージョンアップ後の事象
さて、バージョンアップツールなどでCentos7へのバージョンアップが完了し、バージョンアップ直後にSSHDが起動しないことは、事前に分かっていたのでGCEのシリアルコンソールは有効にしておき、OSログインできる状態でした。
シリアルコンソールでログインを行い、SSHDを起動させる。
Centos6のときに登録していたSSHKeyにてログインを試みると、SSHのエラーで接続できない。
おかしいと思い、コンソールSSHにて接続してみる。こちらも、バージョンアップ以前のCentos6では正常に行えていた。
コンソールから、再度SSHKeyの登録を実施したが、現象変わらず。。
SSH接続エラーの調査
一般的に、SSH接続エラーの原因は、ファイアウォールの開放や、SELinuxの無効化が原因の可能性が高いですが、今回はこちら解放済みで、無効済み。
そもそも、GCPのコンソールからSSHKeyの登録ができていないところがポイントで、Centos6からCentos7へのバージョンアップ時にもともとインストールされていたGCPのライブラリが動かなくなったのではと考えた。
そこで、SSH系のエラーではなく、GCPのイメージ系で調査。
すると、GCPの「 ゲスト環境のインストール 」という文書にたどり着く。
解決方法
GCPの「 ゲスト環境のインストール 」という文書 には、Google提供のイメージにはこのゲスト環境のライブラリが予めプリインストールされているという。このゲスト環境とはなんぞや?
ゲスト環境について調べてみると以下の説明を見つける
Google が提供する公開イメージを使用して仮想マシン(VM)インスタンスを起動すると、ゲスト環境が自動的に VM インスタンスにインストールされます。ゲスト環境は、Compute Engine で VM を適切に実行するために、メタデータ サーバーのコンテンツを読み取る一連のスクリプト、デーモン、バイナリから構成されます。メタデータ サーバーは、クライアントからゲスト オペレーティング システムに情報を転送する通信チャネルです。
Google Cloud
つまり、このゲスト環境が入っていないと、GCPのコンソールから制御ができないと。
ということで、ゲスト環境のインストールを開始。
/etc/yum.repos.d/google-cloud.repo の作成
こちらは、もともとCentos6で作成されているものがあるが、そのままだとうまく動かなかったので、以下のように設定。
[google-compute-engine] name=Google Compute Engine baseurl=https://packages.cloud.google.com/yum/repos/google-compute-engine-el7-x86_64-stable enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg [google-cloud-sdk] name=Google Cloud SDK baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
続いて、パッケージを更新
yum makecache yum updateinfo
最後に本題のゲスト環境のインストール
yum install -y google-compute-engine google-osconfig-agent
無事インストールが終わったら、OSの再起動を実施。
その後、恐る恐るコンソールSSHを起動してみる・・・・・・・・・キタ━━━━(゚∀゚)━━━━!!
コンソールSSH開通後に思うこと
さて、無事今こーソールSSHが接続でき、SSHのKey登録も正常に行えるようになりました。解決までに2日くらい費やしました。。
解決してから思うことは、クラウドサービスでWEBコンソールからVMを操作できるのだから、それなりのツールが入っていることが分かっていたのですが、まさかバージョンアップでそれが動かなくなることが想定していませんでした。結局、Centos6をCentos7へバージョンアップという方策を取りましたが、今となっては1からCentos7を構築したほうが早かったのでは?と思っております。
ただ、このブログ記事が同じようにハマっている人のお役に立てれば幸いです。
※この記事さえすぐ見つかれば、バージョンアップの方が確実に早かった。。はぁ疲れた。