リソースモニター bashtop を使ってみる

bashtop

bashtop は、CPUやメモリ・ディスク・ネットワークといったリソースの使用状況や、プロセス一覧などを確認できるCLIツールです。

同種のツールとして、 htop などが挙げられますが、 bashtop の特徴はより多くの情報を表示できる点です。

インストール方法などは、 bashtop のリポジトリをご確認ください。

実行してみる

シェルからコマンドを叩くだけです。

1
$ bashtop

調子に乗って32C64T環境で実行したからか、表示がずれていますね。

このような形で、CPU・メモリ・ディスクに加えて、プロセス一覧を見ることが出来、さらには、ネットワークの通信量も確認することが可能です。

htop の場合、CPUやメモリの使用状況を確認することは出来ますが、ネットワークの通信量を確認することが出来ませんでしたが、bashtop では、これらの情報を一括で表示できています。

以上、簡単にではありますが、 bashtop の紹介でした。

お家で始める仮想化環境 Proxmox VE 環境構築編

目次

2020/12/29 無償版リポジトリを設定するを最新情報に更新し、目次を追加しました。

Proxmox VE とは

Proxmox VE とは、仮想化環境を提供するプラットフォームの1つです。
VM(Virtual Machine)などのホストとして使用できます。
似た目的の製品として、VMWare ESXiなどがあります。
こちらを利用されている方も多いのではないでしょうか。

Proxmox - powerful open-source server solutions
https://proxmox.com/

ちなみに、Proxmox VE は Proxmox Virtual Environment の略です。

筆者は1年以上 Proxmox VE を使用していますが、いずれも安定して動作しています。

Proxmox VE の特徴

大きな特徴として、VMWare ESXiと比較し、ライセンスフリーでほぼすべての機能を利用できる点が挙げられます。
無償版でも、VMWare ESXiのようにVMあたりのコア数の制限はありません。
また、複数のホストをクラスタリングしたり、HA環境、ライブマイグレーションといった機能も無償で利用することができます。
さらに、VMWare ESXiと同様にWebインタフェースを持っていますので、Webブラウザ経由で簡単に管理することができます。
Debianベースで開発されていますので、ホストOS上にRAIDコントローラのドライバなども簡単に導入することができるのも、利点といえるでしょう。
さらに、VMWare ESXiでは早期にCPUサポートが打ち切られるケースがありますが、Proxmox VEでは基本的にLinux Kernelが動作可能なモノであれば動かすことができます。
自宅などで古いハードウェアを利用する際には、有力な選択肢となるでしょう。

VM(Virtual Machine)やLXC(Linux Container)に対応します。

インストール準備

公式サイトより、Proxmox VE のISOイメージをダウンロードしてください。
2020年8月12日時点では、Proxmox VE 6.2 が最新でした。

容量は863MBとなっています。丁度Debianのイメージと同じぐらいですね。

イメージのダウンロードが完了したら、balenaEtcherやddコマンドを利用して、適当なUSBメモリにダウンロードしたイメージを書き込んでください。
ここでは、書き込み手順については省略します。

イメージの書き込みが完了したら、準備は完了です。

インストール

仮想化環境の役割を与えるマシンを用意します。
今回は、以下のマシンを使用しています。
(AMD CPUを使用していますが、既存環境はIntel CPU上でProxmox VEを運用しており、手順に差が無いことを確認しています。)

パーツ 詳細
CPU AMD EPYC 7452 32Core Processor
M/B Supermicro H11SSL-i (Rev2.0)
Memory DDR4 ECC Registered 128GB

なお、利用するマシンのBIOSにて、CPU Virtualizationサポートを有効化しておきます。
Intel CPUの場合はVT-dなど、AMD CPUの場合はSVM Modeなどです。

これらの準備が完了すれば、先ほど作成したUSBメモリをマシンへ接続し、USBからブートします。
以下のような Welcome to Proxmox Virtual Environment と書かれた画面が表示されます

今回は普通にインストールしますので、「Install Proxmox VE」を選択します。
ブートログが流れたのち、以下のようなライセンス同意画面が表示されますので、ライセンスを読み問題が無ければ右下の「I agree」を押します。
なお、これらの操作はキーボードでもマウスでも操作可能です。

同意すると、インストールするターゲットディスクの選択画面が現れます。

今回は /dev/sda にデフォルトの ext4 でインストールします。
ソフトウェアRAIDを構成することも可能ですので、必要に応じてオプションを変更します。

続いて、国やタイムゾーン、キーボードレイアウトなどの設定です。
ここも各自必要に応じて設定します。

続いて、パスワードとE-Mailの設定です。
パスワードは、rootユーザーのパスワードになります。E-Mailも合わせて適時設定します。

続いて、ネットワーク周りの設定です。
ここでは、管理用ネットワークについて設定を行います。
管理用ネットワークとして利用するインタフェースとHostname・IPアドレス等を適切に設定します。

最後に、確認画面が表示されますので、設定に問題が無ければ「Install」を選択し、インストールを開始します。

インストール処理が行われますので、終了するまで待ちます。

インストールが完了すると、右下に「Reboot」と表示されますので、指示に従って再起動します。
なお、再起動中に、インストールに使用したUSBメモリは外しておきます。

再起動が完了すると、Proxmoxの起動メニューが表示されますが、選択しなければ通常起動されます。

起動が完了すると、Webインターフェースへアクセスするための情報(URL)が表示されますので、指示に従ってブラウザからアクセスします。
なお、今回は https://192.168.2.133:8006/ となっています。
(インストール時に設定した管理ネットワークのIPアドレスが使用されます)

ブラウザからWebインタフェースへアクセスすると、SSLエラーが出ますが、自己証明書を使用している為に表示されているだけですので、そのままアクセスを続行します。
ログインを求められますので、インストール時に設定したパスワードなどを使用してログインします。
(ユーザー名のデフォルトは root です。)
言語なども必要に応じて変更します。

ログインすると、「No valid subscription」といったダイアログが表示されますが、そのまま「OK」を押して続行します。
無償版を使用していると表示されますが、無償版のデメリットはこのダイアログが表示されるぐらいなので、我慢しましょう。

以上で基本的な手順でのインストールは完了です。

無償版リポジトリを設定する

インストール直後の初期状態では、有償版のリポジトリが設定されているため、アップデートなどを行うことができません。
そこで、無償版のリポジトリを設定する必要があります。

Webインターフェースから Proxmox 自体のシェルへアクセス可能なので、そちらから設定を行います。
(もちろん、SSHでのアクセスも可能ですので、お好みの方法で設定を行ってください。)
左側のサイドバーからホストを選択します。今回は「test」となっています。
その後、右上のShellからお好きな方法で接続してください。
今回はコピー&ペーストが使用可能な「xterm.js」を使用します。

起動が完了したら、こちらを参考にリポジトリの設定を変更します。
2020/12/29 情報を上記Wikiの最新情報に更新しました。

/etc/apt/sources.list に無償版のリポジトリを追加

1
2
3
# PVE pve-no-subscription repository provided by proxmox.com,
# NOT recommended for production use
deb http://download.proxmox.com/debian/pve buster pve-no-subscription

/etc/apt/sources.list.d/pve-enterprise.list から有償版リポジトリを無効化
(ここではコメントアウトしています)

1
# deb https://enterprise.proxmox.com/debian stretch pve-enterprise

以上の変更操作が完了したら、アップデートを行います。
アップデートを行うには、2つの方法があります
1、このままシェルからアップデートを行う。
2、Webインタフェースから行う。

1、このままシェルからアップデートを行う。
Proxmox VE はDebianをベースにしていますので、パッケージマネージャとして apt が使用されています。

1
apt update && apt upgrade -y && apt dist-upgrade -y

2、Webインタフェースから行う。
Webインタフェースで、ホストを選択して「Updates」を開きます。
(画像の赤線部)

更新があるか確認する必要があるので、左上の「Refresh」を押し、パッケージの更新有無を確認します。
「No valid ・・・」ダイアログが出たのち、ログが出ますので、「Task OK」と表示されたら閉じます。
先ほどの画面に、更新のあるパッケージリストが表示されているはずです。

続いて、先ほどのボタンの右側「Upgrade」を押します。
シェルが開いて、Do you want to continue? [Y/n]と聞いてきますので、問題がなければyを入力して続行します。
こちらも、処理が完了したら閉じてOKです。

以上で、パッケージのアップデートが出来るようになりました。

Summary

ネットワークの設定は、ホストを選択した状態で、「Network」から行うことができます。
ストレージの設定は左側のツリートップの「Datacenter」を選択した状態で「Storage」から行うことができます。
ホストごとに設定すると思ってホストを選択した状態でストレージ設定を探してしまうので、注意が必要です。

ISOイメージをアップロードする

VMの作成などに使用するISOイメージのアップロードを行います。
Webインタフェース左側のツリーから「local」を選択します。(対象のストレージを選択しています。)
「Content」から「Upload」を押し、アップロードしたいイメージを選択して「Upload」を押します。

簡単にISOイメージなどをアップロードすることができます。

VMを作成してみる

試してにVM(Virtual Machine)を作成してみます。
Webインタフェース右上から「Create VM」を選択します。

VMを作成するホスト(Node)やID、名前を設定します。

続いて、インストールに使用するISOイメージや、GuestOSの選択を行います。
今回はUbuntu20.04.1を使用するので、以下のように設定しています。

「System」タブは、VMを作成してみるだけなら特に設定する必要はありません。

「Hard Disk」タブでは、ゲストOSが使用するストレージの設定を行います。
保存先やサイズなどを設定します。

「CPU」「Memory」では、ゲストOSに割くリソース量を設定することができます。
ホストOSの持つリソース量を超えないように設定します。

「Network」では、VMに割り当てるbridgeインタフェースの設定をします。初期設定のままだと「vmbr0」しか存在しないので、今回はそれを選択しておきます。
必要に応じて変更してください。

「Confirm」では確認画面が表示されますので、問題が無ければダイアログ右下の「Finish」を押します。

VMの作成が完了すると、Webインタフェース左側のツリーに作成したVMが表示されます。

作成したVMを選択し、右上の「Start」を押すとVMが立ち上がります。
「Console」を押すことでコンソールにアクセス可能です。

コンソールにアクセスすると、VMが立ち上がっているはずです。
(今回はVM上でのOSインストールは行いません)

まとめ

今回は、Proxmox VEの初期セットアップ方法について書いて見ました。
多くの人がVMWare ESXiを使用する中で、Proxmox VEは無償版での機能制限がほぼないのが魅力です。
さらに、VMWare ESXiは早期にCPUサポートをやめますが、Proxmox VEでは基本的にLinux Kernelが動作するCPUであれば利用できます。
自宅などで古いハードウェア上で利用したい場合には大きなメリットとなるでしょう。

今回は初期セットアップ方法のみの解説でした。
ストレージやネットワーク周りの設定、クラスタリングなどについても、需要がありそうであれば書いてみたいと思います。

自宅インフラ紹介2020年6月 論理構成編

さて、自宅インフラの論理構成がおおよそ固まってきたので、少し紹介したいと思います。
(物理と合わせて書くとグチャグチャになるので今回はあんまり触れません。)

1年ほど前の構成はこちら
最近書いた物理構成はこちら

指針

これまでの自宅環境では、Hypervisor である Proxmox を利用した仮想化環境を主として構成していました。
しかしながら、複数のWebサイトをホストしたりする都合上、仮想マシン(VM)ではスケールに手間がかかります。
そこで、学習・検証を兼ねて、kubernetes を用いたコンテナ環境を採用することにしました。
また、都合上、仮想マシンも同時に扱える必要がありますので、ハイパーバイザー上の仮想マシンでコンテナ環境を実現するという少し変な構成になっています。
(電気代を気にしないならばマシンごとに分ければよいのですが、そうもいかないので)

Server Hardware

本構成では、物理サーバを3台使用しています。
うち2台はHPE製の2Uサーバ、DL380 Gen10を使用し、ストレージには Western Digital 製の Ultrastar DC SS200 (SAS 12Gbps) を使用しています。

Hypervisor for Virtualization

Hypervisor には引き続き proxmox を利用します。
VMWare ESXi を用いない理由としては、無償版においてCPU数の制限があること(8C)、ネットワークインタフェースでのLAG等が出来ないことが挙げられます。

Infrastructure with kubernetes

物理サーバを2台使用し、それぞれの VM 上にワーカーを乗せています。
また、図にはありませんが、コントロールプレーンは物理サーバごとに1つ以上配置しています。
これらの物理サーバは 10GbE 2本で接続されています。
さらに、 Horizontal Pod Autoscaler による水平方向のオートスケーリングを設定しています。
HTTPトラフィックは、 Ingress によるL7ロードバランサーを利用し各Podへの分散を行っています。

Registry for Container

Docker Container 用のレジストリには SUSE がオープンソースで公開している Portus を用いています。
また、これらのレジストリは kubernetes が動くマシンとは独立し、ストレージサーバ上の仮想マシンで動作させています。
kubernetes クラスタ内に配置しなかったのはストレージサーバ上で動作させるほうがストレージ的に都合が良かったためです。
適当なマシンが手に入れば引っ越し予定ですので、それと同時に kubernetes クラスタ内に配置するかもしれません。
このあたりはまだ詰めきれていない状態です。

HTTP and HTTPS Traffic

外部からのHTTP(HTTPS)トラフィックは、Nginx Reverse Proxy を使用して Ingress Load Balancer へ流しています。
ルータからのフォワーディングは 1IP に向けることしか出来なかったので、間に Nginx を挟み Ingress が動く複数のワーカーへ通信を分散しています。
手元の機材では、これ以外の方法が思いつきませんでした

Redundancy and Scalability

構成上、 Nginx や Registry が単一障害点となっていますが、 kubernetes クラスタについては物理・論理の両方での冗長性を確保しています。
例えば、物理的にサーバをメンテナンスする際にも、もう一方のサーバでサービスは動き続けます。
また、ワーカーの動く仮想マシンの1つをシャットダウンしたとしても、サービスは動き続けることが出来ます。
さらに、水平方向へのスケーリングも容易に行うことができ、これらは Horizontal Pod Autoscaler によってオートスケーリングされます。
個人レベルでは全く意味がないですが、ある程度の冗長性とスケーラビリティを実現しました。
これで気軽にサーバの電源を落とせます

まとめ

今回、自宅ラックで構成した環境は、kubernetes をメインとしました。
それに付随して、スケーラビリティを確保することができ、ラックのメンテナンスが容易になりました。
kubernetes の検証も兼ねて構成したものですので、構成した本番環境以外で別途クラスタを構築し、今後の学習に利用する予定です。
眠くなってきたので、今回はこのあたりで終わっておきます。