ubuntu22を利用開始(google cloud分)

ローカルlinuxでubuntu22利用がうまく行ったので、こっちもバージョン上げた。

基本はローカルlinuxでやったことと同じセットアップをするけど、ネットワークだけきちっと想定しながら作らなあかん。

マシンイメージでubuntu22選べるんかなぁって見たら、下から2つ目にあった。

ubu22gcp

前はfocal-fossaってネコっぽかったけど、次はjellyfishでクラゲ。
フワフワと動きが軽かったらええんやけどなぁ。

Google cloudのubuntu

centosのバージョンアップも同じようなことやったけど、ubuntuでも行程はだいたい同じ。

ローカルlinuxで練習したから、スンナリできた。

やっぱり開発環境で練習して本番環境でも同じことするってやり方だと安心できる。

グローバルIPの予約

いきなりVMを作るわけじゃなく、まずはネットワークから。
どこにどう作って、許可設定どうするかとかをイメージしてからやる。

新しくグローバルIPを予約し、ubuntu22を新OSとしてインストールして、ssh鍵とか作っていく。最終的には古いグローバルIPは開放する(使わずにリザーブするとお金かかるし)。

ubu22gcp

昔使ったgoogle cloudコンソールのssh接続どうやるんやったか忘れた。

コンソールから一時的にsshを許可するように設定して、終わったらteraterm接続のみしかしないからファイアウォール設定を無効にしとく。

コンソールからsshを許可する方法を説明されている方がおられた。
作者さんありがとう。

GCEちょい技 - Cloud IAP TCP Forwarding で踏み台サーバ要らずなメンテナンス
外部IPアドレスがないCompute Engine VMにSSH/RDPログインするためには、これまでは 踏み台サーバ(Bastion Server)を経由する必要がありました。 外部IPがなければFWルールの状態にかか ...

こんな感じのgcloudコマンドライン使うらしい。

gcloud projects add-iam-policy-binding gvis-XXXXXX \
   --member=user:XXXXXXXXXX@gmail.com \
   --role=roles/iap.tunnelResourceAccessor

VPCにあるFW設定も新しく予約したグローバルIPで許可設定入れて接続確認してく。

ubu22gcp

VPCの中にローカルIPも必要なので、それも予約しとく。

グローバルIPは1つだけ予約しておき、使い終わったら返却。ローカルIPは2つを確保しておく。

バージョン上げたりOS変える都度、ローカルは末尾118と218を行ったり来たりする。

ubu22gcp

新OSを準備

元からディスクはOS用(30GB)とデータ用(300GB)を使っているので、新OS用を一時的にもう1つ用意する。

データ用のディスクには、excelのファイルとかpdfとかもあるけどdockerの永続化領域とイメージが入った領域を持ってる。

永続化領域にはmariadb/rdp用のlinux/gitlabのデータとか入ってて、ubuntu20で使ってたものをubuntu22にマウントしてdocker起動すると一発で動くはず。

「1か月動かしたら$25.66やぞぉ」って書いてあるけど、別にずーっと動かすわけじゃないので気にしない、気にしない。

接続確認した後でdockerコンテナ使い始める直前に、cpuのコア数とメモリサイズ増やすから今は適当に設定。

ubu22gcp

「ネットワークインターフェースの編集」ってとこでVPCを先につけとく。タグづけしたローカルIPとグローバルIPもつける。この2つをマシン作るときに忘れると、ローカルPCからうまく接続できない。最初これを忘れて、後で変更したら接続できんなぁって悩んだ。

昔はVPN接続使ってて、3年ぐらい前にVPC作った。ホンマはなくてもなんとかなるんやけど、まぁせっかくあるしそのまま使う。

ssh鍵作成とtera term接続

いっつもこのやり方忘れる。

ssh接続するときに秘密鍵と公開鍵を使う。
パスワードもつけておく。

nari@nafslinux-ubu22:~$ ssh-keygen -t rsa -b 4096 -C "nari@gmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nari/.ssh/id_rsa): /home/nari/id_rsa_nari.txt
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/nari/id_rsa_nari.txt
Your public key has been saved in /home/nari/id_rsa_nari.txt.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx nari@gmail.com
The key's randomart image is:
+---[RSA 4096]----+
|      ooo .      |
|       + +       |
|       o o . . . |
|        S . ..=.o|
|       = *. +oo=*|
|        o  . .+B.|
+----[SHA256]-----+
nari@nafslinux-ubu22:~$

作ったファイルは大事に保管。
tera termのマクロでも使わせるし、sshトンネリングするときにも使う。

google cloudのコンソールに貼り付けると、仮想マシンの.sshフォルダに置いてくれる。

ubu22gcp

んじゃ、起動してブラウザウィンドウでssh開いてみる。

ubu22gcp

おー、開く。
ここでrootのパスワードを設定。

ubu22gcp

このへんまで来たら、宅内のDNSを変更して新しいほうの外部IPを設定しとく。

直後に気づいたけど、sshdがtera term接続を拒否しよる。

Jun  7 21:50:05 jelly-fslinux sshd[1105]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

ぬぬぬ。
作ったキーが許可したアルゴリズムにないらしい。

今度バージョン上げるときは新しめのアルゴリズムにしたるから、今は許しといてーや。

sshd_configを更新したった。
PubkeyAcceptedAlgorithmsにssh-rsaを追記したらなあかん。

ubu22gcp

sshd再起動してつないだら、次は行けた。

dfしたらルートパーティションも30GB取れてる。これでセットアップの続きができる。

ubu22gcp

google cloudはディスクの使用量じゃなく確保量で課金。
こっからちょっと急いでく。

スクリプトの流し込み

インストールやサービス起動を平準化するための稼働用のスクリプトをubuntu20で使っててtar.gzで作ってあるので、tera termのscpでubuntu22へ流し込む。

ubu22gcp

ディレクトリ構成を作って、権限もつけていく。

あ、ユーザIDはたまたまIDが同じやったみたいやけど、グループIDが違うのになってて「197121」とか数字表示になってるからchownで直してった。

ubu22gcp

システム更新のためaptやっとく。

ubu22gcp

centosからubuntuに乗り換えた時、普段使ってる運用スクリプトの内容を変更した。

810_aptUpdate.shは前は810_dnfUpdate.shやったり810_yumUpdate.shってなってた。

「810」って文字入力して、あとはタブキーで入力補完させるとすぐに更新処理が使える。OSを変えたりバージョン上げたとき、運用スクリプトがあると、ああ楽チンって思う。

ubu22gcp

あとはローカルlinuxのインストールでやったsamba/apache/dockerを同じようにインストールしてsystemctlで起動確認する。

データディスクのマウント

接続とサービス起動確認できたら、データ用ディスクをubuntu22のローカルディスクにつなぐ。

ubu22gcp

sshトンネルの接続確認とrcloneでバックアップ

gcloudコマンドはもう入ってて、それ以外としてローカルlinuxのインストールでやったのと同じことをする。

ローカルlinuxからsshトンネル経由でxrdp接続し、全部のサービスが使えることを確認。

バックアップからローカルlinuxへクローン

google cloudからgoogle driveに入れたバックアップを、ローカルlinuxの置き場にcyberduckでダウンロードし、バックアップからDBとファイルをzipから展開してクローンできることを確認。

ubu22gcp

zipをダウンロードしておく。nariDocs.zipが文書、Docker.zipがdockerの永続化領域でmariadbのデータとか、djangoのアプリケーションが入ってる。

ubu22gcp

ローカルlinuxのdockerの永続化領域にコピーすると、データベースとdjangoアプリケーションで同じものが使える。

djangoアプリケーションは、この永続化領域の1つ上のフォルダにあるdocker-compose起動スクリプトの中で、google用とローカル用のcssファイル/settings.pyを切り替えするようにしておくことで画面表示やDBMS接続先を変えて稼働させることができる。

ubu22gcp

ローカルlinuxの文書置き場にコピーすると、これも同じものが使える。アプリケーションと同じようにgitlabで月単位の世代管理してるから、古いファイルが欲しければ過去のブランチから文書を取り出せばいい。

ubu22gcp

後始末とか片づけとか

ファイアウォールの許可設定に新しいグローバルIPアドレスを追加したので、古いほうの記述を削除した。

google cloudコンソールにあるブラウザsshからの接続許可していたのを無効にした。

旧OSの削除とグローバルIPの開放

ubuntu22で動作確認終わったら、ubuntu20のディスクを削除する。
古いグローバルIPは予約したままだと費用計上されるので、これもあわせて開放する。

だいたいのコスト

google cloudの利用頻度は、普段は週に1回ぐらい使う程度で、毎月2000円行かないぐらい。

確保したディスクの占有期間をできるだけ短くすると費用は抑えられる。

あとはバックアップ結果をgoogle driveに置くときは外向きのパケット費用がかかるので、何回もバックアップ結果を書き出さないようにすればいい。

本当は1日12時間かけて実施したほうが安くはなるけど、本業あるので休むわけにもいかんしねぇ。

今回は毎朝1日3時間ぐらい作業して4日かかった。

1日目:ネットワークの一時変更とubuntu22の作成とsmb/apache2/docker導入
2日目:データディスクのマウントとフォルダ構成の調整
3日目:rclone設定とgoogle driveへのバックアップ確認
4日目:google driveからのローカルlinuxへのリストア確認

午後になるとだいたいの費用が見えるから、普段月半ばで800円ぐらいなのが1100円ぐらいになってた。

5日目に古いほうのubuntu20のディスクを開放したから、プラス500円ぐらいで済むはず(来月の2日午後に確定する)。

マシンタイプの再検討

今まで「e2-standard-4」を使ってた。CPU4コアで、メモリ16GB。

gitlabが重たいのもあるから、今回から「e2-standard-8」にして性能上げてみた。

料金  |  Compute Engine: 仮想マシン(VM)  |  Google Cloud
Compute Engine の料金を確認する

前にも似たようなことしたけど、これぐらいの変更だと数百円しかかわらないはず。

体感する処理速度上がるとええなぁ。

コメント

タイトルとURLをコピーしました