Post

Linuxサーバーを整備する

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
    • CPU: Intel Xeon E3-1220 v3
    • RAM: 16GB
    • SSD: 120GB
    • HDD: 500GB

      Kubernetesクラスタ

      4台のIntel NUCにDebian 12をインストールし、Kubernetesクラスタを構築しています。

  • Intel NUC Kit NUC6CAYS x4
    • CPU: Intel Celeron J3455
    • RAM: 10GB
    • eMMC: 32GB
    • OS: Debian 12

      開発用サーバー

  • 日立製作所 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の接続部分を確認し、接触不良がないか確認します。必要に応じて、マザーボードのバッテリーを交換します。 image.png image.png

組み立て

分解した計算機を元に戻し、ラックに戻します。電源を入れて、正常に起動するか確認します。

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を選択します。
image.png

言語を選択して、各種設定を行いインストールを開始します。 image.png image.png

インストールが完了すると再起動を促されます。再起動後、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にログインしてみます。

https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html-single/managing_systems_using_the_rhel_9_web_console/index

image.png

Web UIでコンテナの確認・操作、システム情報の確認が行えるようになりました。

おわりに

今回は、自宅のサーバーを整備しました。自宅サーバーは普段の課題や実験、サークルでの開発基盤、趣味のプロジェクトなどに利用しているので、今回の整備によって快適に利用できるようになりました。

This post is licensed under CC BY 4.0 by the author.

Trending Tags