Linuxサーバーを整備する
この記事は、逆TUT Advent Calendar 2024 16日目の記事です。 昨日の記事は、 Akira@ぞ さんの「機械工学科滑って化学系に進路転換しちゃった時の生き残り方」でした。
はじめに
B3 3系のDDliaです。詳しくはAboutをご覧ください。
今回は自宅のサーバーを整備します。
サーバー構成
最初に、2024年12月現在のサーバー構成を紹介します。 合計8台のサーバが稼働していて、開発用サーバー以外は基本的に24時間稼働しています。以下に構成を示します。
仮想基盤
Debian 12ベースのProxmox Virtual Environment 8.2を用いてクラスタを構築しています。
- DELL OptiPlex 3010
- CPU: Intel Core i5-3470
- RAM: 16GB
- HDD: 500GB x2
- DELL OptiPlex 3020
- CPU: Intel Core i5-4570
- RAM: 16GB
- HDD: 500GB + 1TB
- NEC Express5800/R110f-1E
- Intel NUC Kit NUC6CAYS x4
- 日立製作所 HA8000/RS220-h
- CPU: Intel Xeon E5-2630 v2 x2
- RAM: 106GB
- SSD: 120GB
- HDD: 500GB x2
- OS: Red Hat Enterprise Linux 9.5
Kubernetesクラスタの構築
2024/12/30 発行予定の「とよぎぃ通信 Vol.11」に寄稿しました。詳細はこちらをご覧ください。
物理メンテナンス
最初に全てのサーバーの電源を切ります。仮想基盤ではライブマイグレーションを行えば、サービスを停止することなくメンテナンスが可能ですが、現在は停止しても問題ないサービスしか稼働していないので、全てのサーバーを停止します。
Kubernetesクラスタの停止
kubectl drain
コマンドを用いて、スケジューリング及びPodを退避させます。
1
2
3
4
5
6
7
8
9
10
11
## ノード名を取得
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-cp Ready control-plane 95d v1.31.1
k8s-wk01 Ready <none> 95d v1.31.1
k8s-wk02 Ready <none> 95d v1.31.1
k8s-wk03 Ready <none> 93d v1.31.1
$ kubectl drain k8s-wk03 --ignore-daemonsets --delete-emptydir-data
$ kubectl drain k8s-wk02 --ignore-daemonsets --delete-emptydir-data
$ kubectl drain k8s-wk01 --ignore-daemonsets --delete-emptydir-data
$ kubectl drain k8s-cp --ignore-daemonsets --delete-emptydir-data
全てのノードを停止します。
1
$ sudo poweroff
仮想基盤の停止
Proxmox VEのWeb UIにアクセスし、全ての仮想マシンを停止します。仮想マシンを停止したら、物理サーバーの電源を切ります。
分解
ラックから計算機を取り外し、ケースを開けて内部を掃除します。特にファンやヒートシンクに付着したホコリを取り除きます。また、HDDやSSDの接続部分を確認し、接触不良がないか確認します。必要に応じて、マザーボードのバッテリーを交換します。
組み立て
分解した計算機を元に戻し、ラックに戻します。電源を入れて、正常に起動するか確認します。
Kubernetesクラスタの起動
Kubernetesクラスタを起動します。
1
2
3
4
$ kubectl uncordon k8s-cp
$ kubectl uncordon k8s-wk01
$ kubectl uncordon k8s-wk02
$ kubectl uncordon k8s-wk03
仮想基盤の起動
Proxmox VEのWeb UIにアクセスし、必要な仮想マシンを起動します。
開発用サーバの整備
開発用サーバを昔あれこれ弄ってそのまま放置していて何も覚えていないので、OSの再インストールからやり直します。 Red Hat Enterprise Linux 9.5をインストールします。Red Hat Enterprise Linuxは Red Hat Developer Subscription for Individuals に登録することで16台まで無料で利用できます。 https://developers.redhat.com/articles/faqs-no-cost-red-hat-enterprise-linux
https://access.redhat.com/downloads/content/rhelからRed Hat Enterprise Linuxをダウンロードし、DVDに焼きます。焼き終わったらサーバに挿入し、BIOS設定でDVDから起動します。
起動すると、以下の画面が表示されます。Install Red Hat Enterprise Linux 9.x
を選択します。
インストールが完了すると再起動を促されます。再起動後、SSHでログインします。
1
$ ssh <username>@<ip_address>
まずは、パッケージのアップデートを行います。
1
$ sudo dnf update
EPELリポジトリを追加します。https://docs.fedoraproject.org/en-US/epel/getting-started/
1
2
$ subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms
$ dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
vim、git、podman、gcc、make、Java、bison、flex、fastfetchをインストールします。
1
2
3
$ sudo dnf install -y vim git podman podman-docker podman-compose gcc make java-latest-openjdk bison flex fastfetch
$ fastfetch
$ sudo dnf clean all
Cockpitを有効化します。
1
$ sudo systemctl enable --now cockpit.socket
<ip_address>:9090
にアクセスし、Cockpitにログインしてみます。
Web UIでコンテナの確認・操作、システム情報の確認が行えるようになりました。
おわりに
今回は、自宅のサーバーを整備しました。自宅サーバーは普段の課題や実験、サークルでの開発基盤、趣味のプロジェクトなどに利用しているので、今回の整備によって快適に利用できるようになりました。