Zenn
📑

第1回 クラウド基盤mdxの使い方の基本

2025/03/09に公開

自己紹介と前置き

こんにちは、東京大学鈴村研究室で、インフラエンジニアとしてお手伝いさせていただいています、福田と申します。
https://sites.google.com/view/toyolab/鈴村研究室概要

私は現在、mdxという、国内の9大学、2国立研究所で運用されている、データサイエンスのためのクラウド基盤を使って、Kubernetes環境の構築など様々な実験を行っています。

私からは、主にmdx上でKubernetes環境を構築し、そして構築したKubernetes環境を使って、Webサービスを立ち上げたり、LLMのWeb APIを公開したり、マルチインスタンスでの分散学習を行う方法などを発信していきます。

記事一覧はこちらです。
https://zenn.dev/suzumura_lab/articles/627b5063d6884d

mdxについて

先に述べたとおり、mdxは、国内の9大学、2国立研究所で運用されている、データサイエンスのためのクラウド基盤となっています。
mdxには、mdx1とmdx2があり、mdx1についてはVMwareを基板として構築されており、mdx2については、OpenStackを基板として構築されています。

この技術ブログでは、基本的にmdx1を前提としてしていますが、ただし、mdx1もmdx2もインスタンスを立ち上げ方などが異なるだけで、Kubernetesの構築など多くの手順は、それぞれの環境に依存せず活用できると考えています。
更には、Kubernetes構築については、特定のインフラストラクチャーには依存しないため、mdxユーザーの方以外にとっても、役に立つ情報と考えています。

これ以上のmdxの詳しい説明は割愛しますが、以下のリンクにmdxの紹介動画などがありますので、詳細を知りたい方はそちらを適宜参照ください。

本記事について

mdx上でKubernetes環境を構築するためには、mdx環境に入るための踏み台サーバが必要になります。
今回は、mdxでこの踏み台サーバを作成し、sshアクセスするための方法を解説します。

mdxでの仮想マシンの作成方法

前提

まず、mdxで仮想マシンを立ち上げて接続する方法について、解説していきます。
前提として、mdx利用者(プロジェクトユーザ)として、mdxのユーザーポータルにログインし、仮想マシンの作成ができる方を対象としています。

mdxにおいては、複数の仮想マシンを立ち上げることができますが、全ての仮想マシンにグローバルIPを割り当ててアクセスすると、グローバルIPアドレスには数に限りがあるため、直ぐに枯渇してしまい、他のユーザーに迷惑が掛かるため、グローバルIPアドレスをもつ踏み台サーバを1台だけ作成し、他の仮想マシンには、その踏み台サーバからアクセスするようにします。

ssh鍵の生成

まず、仮想マシンに接続するためのssh keyを作成します。

最初に、ssh鍵を生成したいディレクトリに移動します。
ssh鍵は、HOMEディレクトリにある、.sshで管理することが一般的なので、以下のコマンドなどで、.sshディレクトリに移動します。

cd ~/.ssh

次にssh鍵の生成ですが、Macの場合、以下のコマンドで作成できます。

ssh-keygen -t ed25519 -C "for_mdx_ssh"

key名を聞かれるので、例えば、mdx_ssh_keyと言った名前を入力し、Enterを押下します。

Enter file in which to save the key (/Users/atsushi-fukuda/.ssh/id_ed25519): mdx_ssh_key

以下の通りにssh鍵ファイルへのパスワードの入力が求められますが、ここは特に空欄でも問題ありません。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

仮想マシンのデプロイ

mdxユーザーポータルにログインし、メニューから「仮想マシン」を選択します。
ここでログインする際は、学認アカウントか、mdxローカルアカウントを使用して下さい。


左のメニューから、デプロイを選択します。


立ち上げたい仮想マシンのタイプを選びます。
ここでは、踏み台サーバの作成を目的としているため、GPUは不要と判断し、CPUタイプの仮想マシンである、01_Ubuntu-2204-desktopを選択しています。


赤枠内のデプロイボタンをクリックします。


モーダルダイアログが表示されるので、必要な情報を入力していきます。

パック数はCPUのコア数を意味しているので、必要なパック数を入力します。
踏み台サーバでは、そこまで多くのCPUリソースを使わないため、ここでは8を入力し、CPU8コアとしました。

仮想ディスクは、多くとも100GBあれば十分かと思います。
なお、この仮想ディスクはOSやシステムライブラリを置くための領域であり、データを置く場合には内部高速ストレージ/fastか、大容量ストレージ/largeを使用してください

公開鍵については、以下のコマンドで、作成した公開鍵の内容をクリップボードにコピーし、その値を貼り付けます。

pbcopy < mdx_ssh_key.pub # 生成した公開鍵のファイルパスを指定します。

他の項目を入力して、モーダルダイアログの右下にある、デプロイボタンを押下します。


以下のメッセージが表示されるので、リンクをクリックします。


仮想マシンのデプロイの進捗状況が確認できます。

デプロイが完了すると、ステータスがCompletedになります。


仮想マシンのタブを選んで、作成した仮想マシンが作成されていることを確認します。

仮想マシンへのグローバルIPアドレスの設定

作成した仮想マシンは、そのままではPCからsshアクセスはできません。
ここでは、作成した仮想マシンにグローバルIPアドレスを設定し、そのグローバルIPアドレスからアクセスできるようにします。

仮想マシンタブを開き、コントロールをクリックし、対象の仮想マシンを選択します。


サービスネットワーク 1のIPv4アドレスに表示されているprivate IPアドレスをコピーしておきます。


ネットワークタブをクリックします。


左側のメニューから、DNATを選択します。


+DNATボタンをクリックします


転送元グローバルIPv4アドレスをプルダウンメニューから1つ選択します。
転送先プライベートIPアドレスとしては、先述の手順でコピーしたprivate IPアドレスを貼り付け、追加ボタンを押下します。


画面上部にメッセージが表示されるので、リンクをクリックします。


DNAT設定の進捗状況が確認できます。

設定が完了すると、ステータスがcompletedになります。


仮想マシンのタブをクリックし、対象の仮想マシンを選択して、グローバルIPアドレスがアサインされていることを確認します。

仮想マシンへのACL(Access Control List)の設定

この手順では、PCから仮想マシンへssh接続するために、ACLの設定を行います。

まず最初に、PCのグローバルIPアドレスを調べるため、以下のサイトなどを使って、グローバルIPアドレスを調べます。
https://www.cman.jp/network/support/go_access.cgi

調べたグローバルIPアドレスをクリップボードにコピーします。
グローバルIPアドレスは、家のネットワークなどの場合、定期的に変わる可能性があるので、大学などグローバルIPアドレスが変わらない固定の環境を使うか、或いは、VPN接続ができる場合は、VPN環境下でのグローバルIPアドレスを使うことをお勧めします。
どうしても固定されたグローバルIPアドレスを使うことが難しい場合、mdxの仮想マシンに接続できなくなった時は、グローバルIPアドレスが変更になった可能性が考えられるため、再度グローバルIPアドレスを調べて、設定し直す必要があります。


ACLの設定には、仮想マシンのプライベートIPアドレスも必要であるため、仮想マシンタブを開き、コントロールをクリックし、対象の仮想マシンを選択します。

サービスネットワーク1のIPv4アドレスに表示されているprivate IPアドレスをコピーしておきます。


ネットワークタブとACLを選択します。


+RECORDボタンを押します。


表示されるモーダルダイアログに、PCのグローバルIPアドレス、仮想マシンのプライベートIPアドレスなどを入力し、追加ボタンを押下します。
Dstポートはssh接続を可能にするため、22を設定します。

仮想マシンへの接続方法

さて、ここまでの手順で、仮想マシンの立ち上げと、グローバルIPアドレスのアサイン、ACLの設定を行いました。
これで接続ための準備が整いましたので、遂に、仮想マシンにssh接続を行います。

今回作成した仮想マシンは、踏み台サーバと言って、今後作成する仮想マシンにログインするための中継役を担うサーバです。
今後作成する仮想マシンに対しても、同じssh公開鍵を設定することを前提に、毎回sshの秘密鍵を指定することなくアクセスできるよう、ssh-agentに対して、ssh秘密鍵を追加し、踏み台サーバにsshアクセスします。

# ssh-agentを起動
eval `ssh-agent`
# 作成したssh秘密鍵ファイルのpathを指定して、ssh-agentに追加
ssh-add ~/.ssh/mdx_ssh_key
# 仮想マシンのグローバルIPアドレスを指定してssh接続
ssh -A mdxuser@XXX.XXX.XXX.XXX

もし仮想マシンのグローバルIPアドレスを忘れてしまった場合は、仮想マシンタブのコントロールメニューから、対象の仮想マシンを選択することでグローバルIPアドレスを確認できます。


以下の通りに、OSのログインパスワードを求められるので、任意のパスワードを設定します。
確認のため、2回パスワードの入力が求められますが、同じパスワードを設定します。

WARNING: Your password has expired.
You must change your password now and login again!
New password:
Retype new password:

パスワード設定後に、一度ログアウトしますので、再度sshログインを行い、仮想マシンに接続されることを確認します。

eval `ssh-agent`
# 作成したssh秘密鍵ファイルのpathを指定して、ssh-agentに追加
ssh-add ~/.ssh/mdx_ssh_key
# 仮想マシンのグローバルIPアドレスを指定してssh接続
ssh -A mdxuser@XXX.XXX.XXX.XXX

今回のまとめと次回について

今回は、mdxの仮想マシンを立ち上げて、ssh接続することを試しました。
次回は、mdx上の仮想マシン上で、Kubernetesクラスタを立ち上げるための手順について説明しています。

気になる方は、以下の記事一覧を参照ください。
https://zenn.dev/suzumura_lab/articles/627b5063d6884d

東京大学鈴村研究室について

https://sites.google.com/view/toyolab/鈴村研究室概要

Discussion

ログインするとコメントできます