ubuntu24を利用開始(google cloud分)

ローカルlinuxをubuntu24にバージョン上げて様子見しながら、google cloudのも準備。

Google cloudのubuntu

ちゃんとubuntu24LTSのイメージもgoogle cloudにあった。
intel系のだけやなくarmもあんねんな。

ubu24gcp

macosとかwindowsとか出始めは「バグ多いから出始めは使ったらアカン」みたいな人多いけど、ベータ版とか極端な危険の懸念とかないかぎり、必要機能が使えるって判断したらすぐ利用開始に着手するで。

linuxでもwindowsでもOSは新規インストール一択。
パーティション新規作成して入れる。

windows98もwindows11でもアップグレードしてインストールしたらうまくいかんこと多かったな。

今はvmあるんやから、新規でvm作ってデータパーティションだけマウントしたらええ。

新OSを準備

「noble numbat」って名前長い。
端的に「numbat」でええ。

nobleの意味は「高貴で尊い」ってなってて、あんまり好かん。
フクロアリクイの絵柄が王冠みたいになってた壁紙とかイヤやなぁ。

ubuntu22はjelly-fslinuxってつけて作ってたから、24はnumbat-fslinuxってつける。

やることは前と同じ。

google cloudのコンソールで、まずは外部IPと内部IPを準備・特定しとく。

ubu24gcp

次にネットワーキングにファイアウォールのタグつけて、ネットワークとサブネットワークの設定つけたら鍵ファイル作って設定。

1回作っておさらいしながらやっておいて潰す。
2回目に点検しながら作ってまう。

teraterm接続できてssh転送が終わってdocker入れる直前まで、E2シリーズのマシンタイプにしとこ。

uid=1000のユーザ名を変更

今更なんやけど、osインストールしたらユーザidが1000としてubuntuって名前のユーザが元からある。

以下、赤い背景がubuntu22(jammy jellyfish)で水色のがubuntu24(noble numbat)。

ubu24gcp

ローカルlinuxのubuntu24は、centosの頃から使ってるファイル類があるから、uid=1000は自分のユーザでないと困んねん。

特にgoogle cloudでファイル維持してるものをローカルlinuxに持ってきたとき、uidが変わってたらgit管理してるファイルがいっつも全更新みたいな感じになる。

一時的に別ユーザ作っておいて、ubuntuユーザを削除して作り直してく。

ユーザidの操作メモを書いてくれてる人がいた。ロックする方法もあった。

作者さんありがとう。

Linuxコマンド - ユーザ・グループの確認/追加/削除 - Qiita
この記事についてこの記事で、Linux上でのユーザやグループの追加・削除コマンドの紹介を行います。「ユーザやグループとは何」というような概念的は部分は記載しておりません。ユーザやグループの概念…
グループ-1

変更する方法ってのもあるのね。

作り直した結果はこうなった。

naritomitsukasa@gcp-numbat-fslinux:~$ cat /etc/passwd | grep nari
naritomitsukasa:x:1101:1101::/home/naritomitsukasa:/bin/bash
nari:x:1000:1000::/home/nari:/bin/bash
naritomitsukasa@gcp-numbat-fslinux:~$

ログインしといたまま、次に実施するssh鍵作った後で$HOME/.ssh/authorized_keysに最終的に作った鍵ファイルの内容を入れてく。

ssh鍵作成とtera term接続

ubuntu22へのバージョン切り替えのときはブラウザのssh画面開いてみたけど、全然使わんからいきなりteraterm接続してく。

ローカルのubuntu24で鍵ファイル作る。

nari@nafslinux-ubu24:~$ 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:k7PodHLzgpNc8u2HpXxnScdV+3iarBriDYXGWiFzKJM nari@gmail.com
The key's randomart image is:
+---[RSA 4096]----+
|                 |
|     . .        .|
|    Z + o       o|
|     o = +     ..|
|        T .    oo|
|      .=.=  . o =|
|     .=*Go.+ o * |
|     o==o*=.o B  |
|      ...o=+.+   |
+----[SHA256]-----+
nari@nafslinux-ubu24:~$

そういえばmacでも作れるんかな。モジュール使えるみたいやけどやったことないな。

作ったキーをgoogle cloudのコンソールから登録するときはこのへんから登録できる。

ubu24gcp

手動でauthorized_keys作るんやったらパーミッションは700にしとかなアカン。

teratermで使えるようにしてく。

include 'Y:_connect\connect\teraIni\gvis.ini'

; --- 接続 --------------
keyfile=Y:_connect\connect\GCP\key191018-privateKEY /F=Y:_connect\connect\teraIni\blue.ini'

 conSTR = 'yy.yy.yy.yy /ssh /auth=publickey  /user=nari /passwd='
 strconcat conSTR gvis_gcp_nari
 strconcat conSTR ' /keyfile='
 strconcat conSTR gvis_KY6
 strconcat conSTR ' /F='
 strconcat conSTR gvis_iPTH
 strconcat conSTR 'Blue.ini '
 strconcat conSTR '/timeout='
 strconcat conSTR gvis_TOUT

; ---debug --------------
; messagebox conSTR 'info'

 connect conSTR
 if result <> 2 goto end

wait gvis_wS1
sendln "df -h | grep -v tmpfs"

wait gvis_wS1
sendln "w"

:end

つながるとこうなる。

ubu24gcp

ローカルlinuxとuidそろえるの面倒やね。

入ってるモジュールの確認

OSバージョンがubuntu24なのはローカルlinuxと同じ。
aptでモジュールをリストして眺める。

ubu24gcp

左がgoogle cloud、右がローカルのubuntu24。
右はdocker入ってたりgnomeとか入ってるから、左はグレー箇所多いわな。

モジュールのリストはこんなふうに取る。

root@gcp-numbat-fslinux:~# apt list --installed | more

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Listing...
adduser/noble,now 3.137ubuntu1 all [installed,automatic]
apparmor/noble,now 4.0.0-beta3-0ubuntu3 amd64 [installed,automatic]
:(中略)

google特有のんとかあるけど、不要そうなのはなさそう。

最初にローカルlinuxをubuntu24に変更したときみたいな問題はsystemctl status systemd-networkd-wait-online.serviceで見ても出てへんかった。

もう使わんようになったから、今年からsambaはaptでインストールせん。

apacheとdocker入れてデータパーティション使えるようにしたらゴールや。

スクリプトの流し込み

フォルダ構造をteratermの画面2つ開いて見比べながらマネして作る。

作業のルートは/gvisでここに全部集めて展開してく。

細かいコマンドラインを毎回ポチポチ入力するのイヤやからスクリプト使う。

最後には別ディスクをマウントさせて使ってく。

ubu24gcp

まずは普段使いの一般ユーザとrootの.bashrcにエイリアス書き足しとく。

scriptを直近のバックアップから持ってきてgitbashからtar.gzで固めたものをscp転送で展開する。

エイリアスきいてる状態で確認してく。

nari@gcp-numbat-fslinux:/gvis$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias dc='cd /gvis/nari/nariDocs/Docker'
alias dff='df -h | grep -v DockerSys | grep -v "dev/loop"'
alias doc='cd /gvis/nari/nariDocs'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alFh --time-style="+%Y-%m-%d %H:%M:%S"'
alias ls='ls --color=auto'
alias rmgomi='removegomi'
alias sc='cd /gvis/script'
alias tree='pwd;find . | sort | sed '\''1d;s/^\.//;s/\/\([^/]*\)$/|--/;s/\/[^/|]*/|  /g'\'''
nari@gcp-numbat-fslinux:/gvis$ sc
nari@gcp-numbat-fslinux:/gvis/script$ cd ..
nari@gcp-numbat-fslinux:/gvis$ tree | more
/gvis
|--script
|  |--000_serviceStart.sh
|  |--001_sysBackup.sh
|  |--002_makeTar.sh
|  |--002_makeTar.sh.org
|  |--006_mount_ext4.sh
|  |--006_mount_smb.sh
|  |--007_umount_ext4.sh
|  |--007_umount_smb.sh
|  |--008_mailTest.sh
:(中略)
|  |  |--onlchk
|  |  |--onlchk.conf
|  |  |--smb_chk.conf
|  |  |--syslogchk
|  |  |--syslogchk.conf
|  |  |--syslogchk.dat
|  |  |--syslogchkEx.conf
|  |  |--syslogchkReset
|  |  |--vino_chk.conf
|  |  |--xrdp_chk.conf

次にリンク作る。
いっつもやり方忘れるのがリンクの作成。
リンク先とリンク元の書き方をほぼ100%入力を間違う。

/nariってフォルダはローカルlinuxにあるから揃えて作ってる。

コマンドラインでln -sって書いた後、パラメータのどっちがどっちやったか思い出せんから書いとく。

lnの引数の1つ目にリンク先、2つ目にリンクを書いて、次に作りたいリンク名を書くのねって、いっつも忘れる。

年に1回も使わんもんな。

リンク作成とルートにあるフォルダはこんな感じ。

nari@gcp-numbat-fslinux:/$ sudo ln -s /gvis/nari /nari
nari@gcp-numbat-fslinux:/$ ls -l /
total 80
lrwxrwxrwx   1 root root     7 Apr 22 13:08 bin -> usr/bin
drwxr-xr-x   2 root root  4096 Feb 26 12:58 bin.usr-is-merged
drwxr-xr-x   5 root root  4096 Jun  7 08:54 boot
drwxr-xr-x  16 root root  3880 Jun 13 19:37 dev
drwxr-xr-x 102 root root  4096 Jun 13 20:27 etc
drwxr-xr-x   6 root root  4096 Jun 13 21:12 gvis
drwxr-xr-x   4 root root  4096 Jun 12 22:03 home
lrwxrwxrwx   1 root root     7 Apr 22 13:08 lib -> usr/lib
drwxr-xr-x   2 root root  4096 Apr  8 14:37 lib.usr-is-merged
lrwxrwxrwx   1 root root     9 Apr 22 13:08 lib64 -> usr/lib64
drwx------   2 root root 16384 Jun  7 08:52 lost+found
drwxr-xr-x   2 root root  4096 Jun  7 08:50 media
drwxr-xr-x   2 root root  4096 Jun  7 08:50 mnt
lrwxrwxrwx   1 root root    10 Jun 13 21:24 nari -> /gvis/nari ⭐️lnでこれができとる!!
drwxr-xr-x   2 root root  4096 Jun  7 08:50 opt
dr-xr-xr-x 168 root root     0 Jun 13 19:37 proc
drwx------   4 root root  4096 Jun 13 20:54 root
drwxr-xr-x  26 root root   820 Jun 13 20:59 run
lrwxrwxrwx   1 root root     8 Apr 22 13:08 sbin -> usr/sbin
drwxr-xr-x   2 root root  4096 Mar 31 09:00 sbin.usr-is-merged
drwxr-xr-x   6 root root  4096 Jun  7 08:54 snap
drwxr-xr-x   2 root root  4096 Jun  7 08:50 srv
dr-xr-xr-x  13 root root     0 Jun 13 20:43 sys
drwxrwxrwt  11 root root  4096 Jun 13 21:10 tmp
drwxr-xr-x  12 root root  4096 Jun  7 08:50 usr
drwxr-xr-x  13 root root  4096 Jun 12 21:32 var
nari@gcp-numbat-fslinux:/$

これでディスクマウントしたらデータが使える。

リンク元はdockerコンテナの永続化領域で、リンク先は親ホストがgoogle driveへ保管するときのバックアップ対象や。

あとはスクリプトの動作調整をやってく。

テストメール

過去メモ見ながらやってく。

テスト用スクリプトの内容をjellyからnumbatに書き換えてメール飛んでくる。
文字化けもないし、快調でええねぇ。

Content-Type: text/plain; charset=UTF-8
Subject: auto-testMail-gcp-gvis-dkLinuxTestMail-numbat
User-Agent: mail (GNU Mailutils 3.17)
Date: Fri, 14 Jun 2024 19:50:40 +0000
Message-Id: <20240614195040.F2C234088F@gcp-numbat-fslinux.intra.gavann-it.com>
From: root <root@gcp-numbat-fslinux.intra.gavann-it.com>

////// gcp-gvis-naLinux report start   //////

////// gcp-gvis-naLinux レポートテスト //////

////// gcp-gvis-naLinux report end     //////

OS起動時にメール飛ばすようにしてるから、OS再起動して飛んでくるか確認。

Content-Type: text/plain; charset=UTF-8
Subject: auto-Start_gcp-numbat-fslinux
User-Agent: mail (GNU Mailutils 3.17)
Date: Sat, 15 Jun 2024 07:41:18 +0900
Message-Id: <20240614224118.EEF1C40462@gcp-numbat-fslinux.intra.gavann-it.com>
From: root <root@gcp-gvis-dklinux.phy.lolipop.jp>

gcp-numbat-fslinux.intra.gavann-it.com just has begun. 
////// gcp-gvis-numbat-fslinux Started //////

rcloneで使うユーザ

rclone使わせてもらってて、バックアップはrsyncしてtar.gzとzipで作った後にgoogle driveにアップロードしてる。

権限とか狂ったらイヤやから、ubuntu22で使ってたuidとシェルを揃えてOSユーザ作る。

useradd -m -s /bin/sh -u 1005 gavannitsales

rcloneの設定ファイルもscp転送しておいとく。
手動で毎回googleのアカウント設定せんでええから楽。

root@gcp-numbat-fslinux:/gvis/script# ls -l /home/gavannitsales/.config/rclone/
合計 4
-rw------- 1 gavannitsales gavannitsales 494  6月 12 07:24 rclone.conf
root@gcp-numbat-fslinux:/gvis/script#

設定入れてlslしたらファイルのリスト表示してくれる。
結果は21万行もあって長いからカット。

root@gcp-numbat-fslinux:/gvis/script# rclone --config /home/gavannitsales/.config/rclone/rclone.conf lsl gvisDrive:/ | wc -l
21347
root@gcp-numbat-fslinux:/gvis/script#

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

ubuntu22をOS停止してからデータディスク外しとく。

外したらubuntu24にデータディスク足す。
こっちはOS停止せんでええ。

ubu24gcp

centosの頃から使ってるext4の「標準永続ディスク」やから、ホンマは「バランス永続ディスク」に作り変えしたいけど性能と費用検討終わってへんから今はガマン。

マウント対象になってるか確認。
後ろのほうに322GBでext4の/dev/sdbが見えとるやん。

root@gcp-numbat-fslinux:/gvis/script# parted -l
モデル: Google PersistentDisk (scsi)
ディスク /dev/sda: 32.2GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt

:(中略)

モデル: Google PersistentDisk (scsi)
ディスク /dev/sdb: 322GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: loop
ディスクフラグ:

番号  開始   終了   サイズ  ファイルシステム  フラグ
 1    0.00B  322GB  322GB   ext4


root@gcp-numbat-fslinux:/gvis/script#

マウントして見えてるかどうか確認。昔のスクリプトやから、fsckを3回やってからマウントしてる。
google cloudのコンソールでは300GB、partedは322GB、dfしたら295GBって見えるのなんとかならんのかなぁ。

root@gcp-numbat-fslinux:/gvis/script# sh ./006_mount_ext4.sh
fsck from util-linux 2.39.3
e2fsck 1.47.0 (5-Feb-2023)
/dev/sdb: clean, 578681/19660800 files, 24061202/78643200 blocks
fsck from util-linux 2.39.3
e2fsck 1.47.0 (5-Feb-2023)
/dev/sdb: clean, 578681/19660800 files, 24061202/78643200 blocks
fsck from util-linux 2.39.3
e2fsck 1.47.0 (5-Feb-2023)
/dev/sdb: clean, 578681/19660800 files, 24061202/78643200 blocks
root@gcp-numbat-fslinux:/gvis/script# dff
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        29G  2.8G   26G  10% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           783M  992K  782M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
efivarfs         56K   24K   27K  48% /sys/firmware/efi/efivars
/dev/sda16      881M   61M  759M   8% /boot
/dev/sda15      105M  6.1M   99M   6% /boot/efi
tmpfs           392M   12K  392M   1% /run/user/1000
/dev/sdb        295G   87G  209G  30% /gvis/nari
root@gcp-numbat-fslinux:/gvis/script#

awsやったらefsっていうnfsのサービスがある。
なんと、課金は使った領域のサイズ。

ec2でマウントしたとき、空き容量が8エクサバイト=800万テラバイトって表示されたときはのけぞった。

一時的に大きなデータ置きたいなってときは、こっちのほうがええ。
googleにも似たようなのでfilestoreがある。

料金  |  Filestore  |  Google Cloud
Filestore の料金の確認

課金は確保した分なのが苦しいところで、awsと同じように使った領域のサイズってなってくれたらええのに・・・。

apache2とdocker稼働

親ホストとしてはapache2とdockerが動けばええ。
永続化領域にリンク作って使うようになったからsambaは使わん。

ホンマはapache2やめてnginxに変えてもええんやけど、業務でapache使うことがあるし、やっぱり設定ファイルには時々触れといたほうがええから今回も使い続ける。

apache2はスンナリ

ローカルでやったことをほぼそのままやるだけ。

djangoのアプリケーションと、gitlabへのリンクがあるhtmlを表示させれたらOK。

dockerはそのままではアカン

ubuntu22で使ってたデータディスクには業務データも入ってるんやけど、dockerのシステムデータが入ってる。

システムデータってのはイメージとコンテナね。

データディスクをちゃんとマウントできたら、ビルドすっ飛ばしてコンテナが即時で動く(そんなに甘くないんやけど)。

docker本体のサービス定義が書いてある/usr/lib/systemd/system/docker.serviceを書き換えてsystemctl daemon-reloadしとく。

## ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock --storage-driver=overlay2 --data-root /gvis/nari/nariDocs/Docker/nariDockerSys

イメージとコンテナの確認。
行けるかな。

root@gcp-numbat-fslinux:/gvis/script# docker images
REPOSITORY              TAG           IMAGE ID       CREATED         SIZE
gitlab/gitlab-ce        16.8.0-ce.0   2ba59b135b48   4 months ago    2.95GB
sv_django               4             d47b4e9d61f5   9 months ago    1.01GB
ubu                     22gvis        45bc047bf0c0   9 months ago    3.74GB
mariadb                 1011          0d20f8668756   15 months ago   401MB
steveltn/https-portal   1             52ea65ae915a   16 months ago   348MB
gitlab/gitlab-ce        15.7.0-ce.0   414f0330d57c   18 months ago   2.8GB
mariadb                 10.5.7        1b3986d60f13   3 years ago     414MB
root@gcp-numbat-fslinux:/gvis/script#
root@gcp-numbat-fslinux:/gvis/script# docker ps -a
CONTAINER ID   IMAGE                          COMMAND                   CREATED        STATUS                           PORTS     NAMES
a03e8a387e39   gitlab/gitlab-ce:16.8.0-ce.0   "/assets/wrapper"         4 months ago   Exited (137) About an hour ago             docker-SVgitlab2024-1
e47605f264ed   sv_django:4                    "supervisord -n"          4 months ago   Exited (137) About an hour ago             docker-sv_django-1
f1416ef7b30f   steveltn/https-portal:1        "/init"                   4 months ago   Exited (0) About an hour ago               docker-sv_https-portal-1
bc958d69a5a1   ubu:22gvis                     "/usr/bin/run.sh"         4 months ago   Exited (0) About an hour ago               docker-cl_ubu22-1
be7c55df3436   mariadb:1011                   "docker-entrypoint.s…"   4 months ago   Exited (0) About an hour ago               docker-sv_mariadb1011-1
root@gcp-numbat-fslinux:/gvis/script#

おお、イメージとコンテナ見えてOKやん。
永続化領域もそのまま存在するからdocker compose -dってするとコンテナ動かせる。

gitとdjangoとmariadb動いてくれるやろか。
結論としては、コンテナ全部作り直さなアカンかった。

root@gcp-numbat-fslinux:/gvis/nari/nariDocs/Docker# docker ps
CONTAINER ID   IMAGE                          COMMAND                   CREATED        STATUS                            PORTS                                                                                  NAMES
a03e8a387e39   gitlab/gitlab-ce:16.8.0-ce.0   "/assets/wrapper"         4 months ago   Up 8 seconds (health: starting)   22/tcp, 443/tcp, 0.0.0.0:10881->80/tcp, :::10881->80/tcp                               docker-SVgitlab2024-1
e47605f264ed   sv_django:4                    "supervisord -n"          4 months ago   Up 6 seconds                      0.0.0.0:48080->8080/tcp, :::48080->8080/tcp                                            docker-sv_django-1
f1416ef7b30f   steveltn/https-portal:1        "/init"                   4 months ago   Up 8 seconds (health: starting)   0.0.0.0:40080->80/tcp, :::40080->80/tcp, 0.0.0.0:40443->443/tcp, :::40443->443/tcp     docker-sv_https-portal-1
bc958d69a5a1   ubu:22gvis                     "/usr/bin/run.sh"         4 months ago   Up 7 seconds                      0.0.0.0:30022->22/tcp, :::30022->22/tcp, 0.0.0.0:33389->3389/tcp, :::33389->3389/tcp   docker-cl_ubu22-1
be7c55df3436   mariadb:1011                   "docker-entrypoint.s…"   4 months ago   Up 8 seconds                      0.0.0.0:13306->3306/tcp, :::13306->3306/tcp                                            docker-sv_mariadb1011-1
root@gcp-numbat-fslinux:/gvis/nari/nariDocs/Docker#

nmonで見たら、めっちゃ頑張って動こうとしてるやん。

ここまで来たら、e2-mediumでvCPU2つと4GBのメモリ動かしてたマシンリソースをグレード上げてこか。

lnmonq16pqqqqqq[H for help]qqqHostname=gcp-numbat-fsRefresh= 2secs qqq06:53.20qqqqqqqqqqqqqqqqqqqqqk
x CPU Utilisation qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqx
x---------------------------+-------------------------------------------------+                    x
xCPU User%  Sys% Wait%  Idle|0          |25         |50          |75       100|                    x
x  1  64.1  15.7  20.2   0.0|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUsssssssWWWWWWWWWW>                    x
x  2  83.4  12.1   4.5   0.0|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUssssssWW>                    x
x---------------------------+-------------------------------------------------+                    x
xAvg  73.7  14.0  12.3   0.0|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUsssssssWWWWWW>                    x
x---------------------------+-------------------------------------------------+                    x
x Memory and Swap qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqx
x PageSize:4KB   RAM-Memory  Swap-Space       High-Memory     Low-Memory                           x
x Total (MB)         3913.3         0.0       - not in use   - not in use                          x
x Free  (MB)          133.6         0.0                                                            x
x Free Percent          3.4%        0.0%                                                           x
x Linux Kernel Internal Memory (MB)                                                                x
x                        Cached=    1101.9     Active=    1599.0                                   x
x Buffers=      81.8 Swapcached=       0.0  Inactive =    1723.0                                   x
x Dirty  =       0.5 Writeback =       0.0  Mapped   =     611.1                                   x
x Slab   =     306.1 Commit_AS =    9696.1 PageTables=      28.0                                   x
x Disk I/O qq/proc/diskstatsqqRequested KB/sqqqqWarning:may contains duplicatesqqqqqqqqqqqqqqqqqqqqx
xDiskName Busy  Read Write  |0          |25         |50          |75       100|                    x
xsdb       52%  928.3   69.9|RRRRRRRRRRRRRRRRRRRRRRRRRW                                            x
xTotals Read-MB/s=0.9      Writes-MB/s=0.1      Transfers/sec=224.6                                x
xqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq

dockerコンテナ動かすと、たとえvcpuが2つでも無理くり動こうとする。

webとかデータベースとかコンテナの挙動がおかしくなって反応せんようになる。

リソースは気づいたら早めに調整。特にメモリは多く割り当てる。

今回のnumbatにvcpu=8コア/メモリ=32GB割り当てて、古いほうのjellyfishのホストはvcpu=2コア/メモリ=4GBに変更。

gitlabのコンテナ動かして、大きめの変更をマージしたらすぐメモリ使い切るんよな。

宅内DNSの変更

宅内ルータにあるDNS定義も新しいほうのstaticip見るように変更。

+----------------+    +---------------------------------------------+    +-----------------+
|windows11       |    |Router                                       |    |GCP              |
| +------------+ |    | +-----------------------------------------+ |    | +-------------+ |
| |vm ubuntu24 | |    | |DNS                                      | |    | | jelly-fish  | |
| +------------+ | -> | | gcp-gvis-dkLinux.intra.gavann-it.com =  | | => | | xx.xx.xx.xx | |
| +------------+ |    | | yy.yy.yy.yy                             | |    | +-------------+ |
| |vm windows11| |    | +-----------------------------------------+ |    | +-------------+ |
| +------------+ |    |                                             |    | | numbat      | |
+----------------+    +---------------------------------------------+    | | yy.yy.yy.yy | |
                                                                         | +-------------+ |
                                                                         +-----------------+

接続先はgcp-gvis-dkLinux.intra.gavann-it.comって定義してるから、向き先をxx.xx.xx.xxからyy.yy.yy.yyに変更する。

これでteratermとかの接続が全部新しいほうのホスト向いてくれる。

dockerのcompose.ymlに書いた環境書き換えた

google cloudのlinuxホストで動かしてるコンテナは、ローカルlinuxを通じたssh転送使って接続してる。

最初そのまま接続してしもたんやけど、コンテナのmariadbとrdpホストにつながらんことに気づいた。
なんか内部エラーみたいなのが出てた。

最初はなんでか思いつかんかったけど、mariadbのコンテナ使ってどこまで動いてるか確認してった。

途中でgcloudの引数の修正漏れと、compose.ymlの中のextra_hostsをcompose.ymlに書いてるのを見落としてた。

それぞれ定義書き換えてコンテナ作り直したらつながった。

mariadbのコンテナで動作確認

コンテナには最初から入ってるけど、mariadbに接続するクライアントはapt install mysql-clientでnumbatに入れとく。

永続化領域が見えてるかの確認やからshow databasesってやって自分の業務データベースが見えるかを確認。

ssh転送できてへんように見えたから、まずはコンテナにdocker execして確認。
コンテナの中やからポートは3306ね。

nari@gcp-gvis-dklinux:/$ docker exec -it docker-sv_mariadb1011-1 bash
root@svmariadb1011:/# mysql -u nari -p -h localhost -P 3306
Enter password:
:(中略)

MariaDB [(none)]> show databases ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| nariDB_1st         | ⭐️コンテナでは見えとるやん!
+--------------------+
2 rows in set (0.001 sec)

MariaDB [(none)]>

コンテナ内では永続化領域に置いたデータベースが使えてるってことね。

次は親ホストのubntu24からコンテナの公開ポート13306に接続できるか確認。

nari@gcp-gvis-dklinux:~$ docker ps | grep maria
ed34cac8e6b8   mariadb:1011                   "docker-entrypoint.s…"   23 hours ago   Up 23 minutes             0.0.0.0:13306->3306/tcp, :::13306->3306/tcp                                            docker-sv_mariadb1011-1
nari@gcp-gvis-dklinux:~$ mysql -u nari -p -h `uname -n` -P 13306
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on 'gcp-gvis-dklinux:13306' (111)
nari@gcp-gvis-dklinux:~$

あれ?
ここがアカンのや。

composeの中のextra_hosts書いてる

dockerイメージあるし、コンテナは動いてるように見えるけど、大事なこと忘れてた。

dockerの内部ネットワークのこと。

extra_hostsを書いとくとコンテナから親ホストに接続できる。

nginxやったかapacheやったか忘れたけど、コンテナ内のアクセスログにホスト名で表記してくれる。

djangoのコンテナにあるnginxのログ見るとURLにホスト名が見える。

172.18.0.4 - - [18/Jun/2024:05:17:01 +0900] "GET /gvisWebApp/gvis_504_KeihiUpdate/11257/ HTTP/1.0" 200 15105 "https://gcp-gvis-dklinux.intra.gavann-it.com:40443/gvisWebApp/gvis_500_KeihiKensaku/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0"
172.18.0.4 - - [18/Jun/2024:05:17:55 +0900] "POST /gvisWebApp/gvis_504_KeihiUpdate/11257/ HTTP/1.0" 302 0 "https://gcp-gvis-dklinux.intra.gavann-it.com:40443/gvisWebApp/gvis_504_KeihiUpdate/11257/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0"
172.18.0.4 - - [18/Jun/2024:05:17:55 +0900] "GET /gvisWebApp/gvis_500_KeihiKensaku/ HTTP/1.0" 200 121019 "https://gcp-gvis-dklinux.intra.gavann-it.com:40443/gvisWebApp/gvis_504_KeihiUpdate/11257/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0"
172.18.0.4 - - [18/Jun/2024:05:32:40 +0900] "POST /gvisWebApp/logout/ HTTP/1.0" 200 5063 "https://gcp-gvis-dklinux.intra.gavann-it.com:40443/gvisWebApp/home/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0"

実際はコンテナの起動時に/etc/hostsに書いてくれるおまじないがある。

    extra_hosts:
      - gcp-gvis-dkLinux.intra.gavann-it.com:192.168.100.218
      - naFSlinux.intra.gavann-it.com:172.16.17.118

構成は前と変わってるからIP書き換える。
二行目はローカルのubuntu24のことやけど、VPN接続はもうやってへんからホンマはいらん。

    extra_hosts:
      - gcp-gvis-dkLinux.intra.gavann-it.com:192.168.100.118
      - naFSlinux.intra.gavann-it.com:192.168.1.118

最初に接続失敗してた理由の1つはこのextra_hostsを書き換え忘れてたから。

コンテナを全部潰して、ついでにイメージも潰してdocker system pruneで全部キレイにしてからビルドとコンテナ起動やりなおしたら、dockerのシステムデータ置き場スッキリした。

gcloudが絡む修正忘れてた

もう1つ忘れもの。

gcloudへのssh転送で設定して日々の利用で追加してった記述には、前に作ったデータベース引っ越し用の転送設定とか残ってたから潰す。

運用スクリプトが使う鍵ファイルも置き換えしとこ。単にコピーするだけやなく、オーナーはgcloud設定してるユーザにしてパーミッションは700にしとかなエラー出る。

接続先ホストもgoogle cloudコンソールで定義した名前見ながら変えとく。

< gcloud compute ssh numbat-fslinux \
---
> gcloud compute ssh jelly-fslinux \

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

google cloudにあるnumbatのホストへローカルlinuxからsshトンネルして、ローカルlinuxで確認するとこうなる。

nari@nafslinux-ubu24:/gvis/script$ ps -ef | grep ssh | awk '{print $29 "\n" $31 "\n" $33 "\n" $35 }' | grep gcp
nafslinux.intra.gavann-it.com:53306:gcp-gvis-dklinux.intra.gavann-it.com:13306
nafslinux.intra.gavann-it.com:53389:gcp-gvis-dklinux.intra.gavann-it.com:33389
nari@nafslinux-ubu24:/gvis/script$

ポートの転送やっとるね。
53306ポートはmariadbのポートで、53389ポートはxrdpのポート。

ローカルのwindowsからa5sqlで53306ポートにつないでみる。

ubu24gcp

ローカルホストの53306ポートへmysqlクライアントで接続すると、google cloud側の13306ポートへ転送される。

a5sqlの中でいくつかsql発行させてて2つ目のmax_allowed_packetの確認で見えてる数値は、djangoのweb処理からmariadbに向かってデータ入れるときに発行するsqlに影響する。

永続化領域のmariadbの設定ファイルに512MBって書いてるから、数値を割り算するとピッタリ!!

ubu24gcp
536870912byte ÷ 1024 ÷ 1024 = 512MB

あとはバックアップ処理で接続に使ってる鍵ファイル指定を変更してバックアップ動かす。

google cloud側はコピー処理をrootからsudoして実行してるから、rcloneの設定ファイルと実行処理のパーミッションに気を付ける。

処理時間5分ぐらいで前と変わらず。

dockerの永続化領域(Docker.zip)、apache2とdockerの設定ファイル(gvis_conf.zip)、ログ(log.zip)、スクリプト(script.zip)、業務ファイル(nariDocs.zip)が全部持ってこれてるからgoogle driveに入れた結果もOK。

ubu24gcp

ほんで、これをcyberduckでローカルの保管先にダウンロードしてく。

ubu24gcp

google driveは日によって速度にバラつきあるけど10分ぐらいで終わる。

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

cyberduckでダウンロードしたファイルにはgoogle cloudで動かしてたファイル類とmariadbのデータ領域が入ってる。
これをローカルに展開してく。

mariadbのデータ展開してコンテナ動かしてみる。
さっきのmariadbの設定ファイルはローカルlinuxは512MBやなくて、1GBにしてて、ちゃんとテーブル類だけがクローンできてる。

ubu24gcp

このへんはローカルの処理やからバッチ処理は特に変更せんでええ。

クローンしたら、更新したデータだけが差異出てくれる。
意図したファイルだけが更新できてた。

ubu24gcp

zipの問題は残ってるけど、仮の対策したから問題は回避。

VMの後始末とか片づけとか

数日して問題なさそうやったら、旧ホストと確保したグローバルIPの予約を潰す。

ディスクとグローバルIPは確保し続けたら費用かかるもんな。

2年ほどやったけど、jellyfishは色々役に立ってくれた。
長いこと頑張ってくれてありがとー。さらば!!

ubu24gcp

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

解放しとく。

ubu24gcp

ubuntu24のrdpコンテナ

google cloudにubuntu24のホスト作れたから、一緒に作る。

dockerfileとcompose.ymlの整理と更新もする。

dockerfileはローカルlinuxで作ったubuntu24のxrdpとほぼ同じ。

違うのはchromeのインストールしてgoogle driveを使えるようにしてること。

ubu24gcp

ビルド途中はCPUけっこう使う。

ubu24gcp

ビルドは427秒=7分ぐらいかかった。
最初の起動はこんな感じ。

ubu24gcp

windowマネージャにフォントの指定とか壁紙設定して、ブラウザに設定入れて、vscodeの起動オプションとか入れる。

ローカルlinuxはminikube用にGUI設定後のイメージ作るけどgoogle cloudはkubernetes使ってるわけやないからコンテナで維持。

自分用にGUIでの設定してコンテナ使ったらこうなる。

ubu24gcp

vscodeでgitgraph見えるやん!

もちろんlibreofficeとか入ってるからofficeドキュメントも開けるし、pdfも確認できる。

2408Mbpsとは表示されてるけど、去年に比べたらなんかインターネットの速度下がっとるな。

おまけ(iphoneから接続)

たまにしか使わんけど、iphoneから接続。
Termiusってのを使ってる。

まずは鍵ファイル持ってきてインポートしとく。

ubu24gcp

次に接続設定を書き換える。

ubu24gcp

んじゃつないでみよか。

ubu24gcp

ssh接続選ぶ。

ubu24gcp

はい、つながった。

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