インターネットに接続できないEC2インスタンスに stressapptest をインストールする方法

クラウド

stressapptest とは、Linuxにてメモリに負荷を意図的にかけて、メモリ負荷テストを実施したりするために使用するツールです。

GitHub - stressapptest/stressapptest: Stressful Application Test - userspace memory and IO test
Stressful Application Test - userspace memory and IO test - stressapptest/stressapptest

今回、諸事情あり、以下の条件下で stressapptest をインストールする必要がありました。

  • AWS上に起動したEC2インスタンス(AmazonLinux2)に stressapptest をインストールしたい
  • 対象のEC2インスタンスはインターネットに接続できない環境
  • ただし、踏み台サーバー経由にてSSHでの接続は可能

そこで、ローカルから stressapptest パッケージをEC2インスタンスにアップロードし、EC2インスタンスにてパッケージを展開してからインストールすることにしました。

以下に、その備忘録を残します。

大まかな流れ

大まかな流れは以下の感じです。

  1. インターネットができる環境に、作業用EC2インスタンスを起動する
  2. インターネットができる環境の作業用EC2インスタンスで、stressapptest のパッケージを作成する
    • パッケージ自体はダウンロードできないので、githubからソースをプル→ビルド→パッケージ化する
  3. 作成したパッケージをローカルPCにダウンロードする
  4. 作成したパッケージをローカルPCから踏み台サーバーにアップロードする
  5. 踏み台サーバーからインストール対象のEC2インスタンスにSCPでアップロードする
  6. インストール対象のEC2インスタンスでパッケージから stressapptest をインストールする

作業用VPCPublic subnet作業用EC2インスタンス①作業用EC2インスタンスを起動② stress のパッケージを作成するローカルPC③作成したパッケージをダウンロードターゲットのVPCPublic subnet踏み台サーバーPrivate subnetインストール対象のEC2インスタンス⑥パッケージから stress をインストール⑤作成したパッケージをアップロード④作成したパッケージをアップロード

注意!!作業用のEC2インスタンスは、インストール対象のEC2インスタンスと同じインスタンスタイプ・OS環境下で実行しないと、stressapptest が動作しない場合があります

詳細手順

1. インターネットができる環境のEC2インスタンスを起動する

パブリックサブネットに AmazonLinux のEC2インスタンスを起動します。
(単純に起動させるだけなので詳細な説明は省略)

2. インターネットができる環境の作業用EC2インスタンスで、stressapptest のパッケージを作成する

以下、作業用EC2インスタンスにSSHで接続して実行します。

ビルド環境の準備

  1. パッケージリストを最新に更新
sudo yum update -y
  1. 必要なビルドツールをインストールする
sudo yum install -y git gcc make automake autoconf gcc-c++
  1. github から stressapptest のリポジトリをダウンロードする
git clone https://github.com/stressapptest/stressapptest.git
  1. ビルドする
cd stressapptest
./configure
make
  1. ビルドしたバイナリをtar.gz形式にパッケージングする
tar cvzf stress-package.tar.gz -C src ./stressapptest

以上で、/stressapptest ディレクトリに stress-package.tar.gz が出力されます。

3. 作成したパッケージをローカルPCにダウンロードする

ローカルPCにて、以下のコマンドを実行してEC2インスタンスから stress-package.tar.gz をダウンロードします。

scp -i {作業用EC2インスタンスの秘密鍵のパス} ec2-user@{EC2インスタンスのIPアドレス}:/home/ec2-user/stressapptest/stress-package.tar.gz .

4. 作成したパッケージをローカルPCから踏み台サーバーにアップロードする

以下のコマンドを実行して、ローカルPCから踏み台サーバーに stress-package.tar.gz をアップロードします。

scp -i {踏み台サーバーの秘密鍵のパス} stress-package.tar.gz ec2-user@{EC2インスタンスのIPアドレス}:/home/ec2-user/

5. 踏み台サーバーからインストール対象のEC2インスタンスにSCPでアップロードする

踏み台サーバー上で、以下のコマンドを実行して、インストール対象のEC2インスタンスに stress-package.tar.gz をアップロードします。
(ここでは説明のために踏み台サーバーで秘密鍵を保持している書き方にしていますが、セキュリティ的には本当は良くないです)

scp -i {インストール対象のEC2インスタンスの秘密鍵のパス} stress-package.tar.gz ec2-user@{EC2インスタンスのIPアドレス}:/home/ec2-user/

6. インストール対象のEC2インスタンスでパッケージから stressapptest をインストールする

インストール対象のEC2インスタンスにSSHで接続し、 /home/ec2-user/ ディレクトリにいることとします。

  1. アップロードしたアーカイブを解凍する
tar xvzf stress-package.tar.gz
  1. 解凍した stressapptest バイナリを /usr/local/bin などのパスが通っているディレクトリに移動する
sudo mv ./stressapptest /usr/local/bin/
  1. 実行権限を確認する
sudo chmod +x /usr/local/bin/stressapptest

以上でインストール完了です。お疲れ様でした。

stressapptest を使用してメモリ負荷をかける方法

詳細は https://github.com/stressapptest/stressapptest#readme に記載されていますが、ここでは例を取り上げます。

以下のコマンドで「20秒間、256MBのメモリ負荷をかける」が実行可能

stressapptest -s 20 -M 256

コメント

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