技術情報 - はじめてのAWS EC2
はじめに
AWS EC2(Amazon Elastic Compute Cloud)は、クラウド上に仮想サーバーを構築できるサービスであり、プロセッサ、ストレージ、ネットワーク、オペレーティングシステムなどを選択することで、従来の物理サーバを置き換えることができる。
本記事では、IARシステムズ社が提供するEWARM用ライセンスサーバーのEC上での構築と運用を例として紹介する。最初に利用実績、そして、選択可能なリソースと基本アーキテクチャを示す。
利用実績
利用実績は、最も低スペックな t2.nano をライセンスサーバーとして使用した例を示す。4ヶ月間の実績から歴史的な円安においても、小さなコストで運用できることが分かる。
利用期間 | EC2 利用料金 | VPC 利用料金 | 合計 | 1USD |
---|---|---|---|---|
2024年 03/01 ~ 03/31 | ¥1,488 | ¥619 | ¥2,107 | ¥151 |
2024年 04/01 ~ 04/30 | ¥1,496 | ¥616 | ¥2,112 | ¥155 |
2024年 05/01 ~ 05/31 | ¥1,548 | ¥644 | ¥2,192 | ¥157 |
2024年 06/01 ~ 06/30 | ¥1,537 | ¥631 | ¥2,168 | ¥160 |
リソース
- プロセッサ:i386, x86_64, arm64
- ストレージ:HDD, SSD
- ネットワーク:Private, Public, IPv4/IPv6
- オペレーティングシステム:Linux, Windows, macOS
アーキテクチャ
引用元:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/concepts.html より
インスタンス
AWS EC2によって構築されるインスタンス(仮想マシン)はCPU、メモリ、ストレージ、ネットワークなどのリソースをユーザが厳密な数値を設定して決めるのではなく、あらかじめ決められたスペックのリソースを組み合わせた「インスタンスタイプ」というセットから選択する。これにより、ユースケースに合わせた必要最小限の設定で仮想サーバーを構築できる。
例として、T2 と呼ばれるインスタンスタイプのスペック環境を示す。また、Armベースのプロセッサを使用する r7g や、最大 50 Gbps のネットワーク帯域幅を持つ M7a などのインスタンスタイプもある。
インスタンス | vCPU | CPUクレジット/時間 | メモリ(GiB) | ストレージ | ネットワーク速度 |
---|---|---|---|---|---|
t2.nano | 1 | 3 | 0.5 | EBS のみ | 低 |
t2.micro | 1 | 6 | 1 | EBS のみ | 低~中 |
t2.small | 1 | 12 | 2 | EBS のみ | 低~中 |
t2.medium | 2 | 24 | 4 | EBS のみ | 低~中 |
t2.large | 2 | 36 | 8 | EBS のみ | 低~中 |
t2.xlarge | 4 | 54 | 16 | EBS のみ | 中 |
t2.2xlarge | 8 | 81 | 32 | EBS のみ | 中 |
ボリューム
AWS EC2では、データおよびファイルアクセスのためのボリュームとして、以下のような特徴を持ったストレージオプションを使用する。 インスタンスを起動するためには、「インスタンスストアボリューム」または「EBSボリューム」で生成されたルートボリュームストレージが必要となる。ルートボリュームがどちらで生成されるかは、インスタンスタイプによって決まっている。また、EFS、S3は必須ではなく、必要に応じて追加・設定する。
引用元:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/Storage.html より
ネットワーク
AWSのネットワークは「Amazon VPC(Virtual Private Cloud)」と呼ばれる、専用の仮想ネットワークが使用される。AWS EC2はデフォルトで1つの仮想ネットワークインターフェースが設定されており、AWS EC2インスタンス起動時にプライベートIPアドレスとパブリックIPアドレスが割り当てられる。
引用元:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-vpc.html より
ファイアウォール
AWS EC2は、セキュリティグループとして、VPC上に構築される仮想ファイアウォールの機能を提供している。AWS EC2インスタンスから見て受信側となるインバウンドと、送信側となるアウトバウンドのそれぞれについて、通信を許可するプロトコルとポート範囲、IPアドレス範囲をルールとして設定する。
引用元:https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-security-groups.html より
ライセンスサーバー
ライセンスサーバーは、インターネットによるライセンス共有が可能なグローバルライセンスでの構築と運用例を示す。AWS EC2の仮想マシンにライセンスサーバーを構築することで、在宅勤務や離れた開発拠点とのライセンス共有が可能になる。また、構築と運用コストを最適化することで、初期費用と保守費用を抑えることができる。
- グローバルライセンス:在宅勤務や離れた開発拠点とのライセンス共有が可能
システム要件
システム要件は、「IAR License Server Tools for Linux 」のサポート環境を満たすようにする。
- CPU:Pentium互換の64bitシステム
- OS:Ubuntu 18.04/20.04 LTS, RedHat Enterprise Linux 8
- RAM:2GB以上
- Storage:600MB以上の空き容量
- TCP:443ポート(ライセンスサーバとIARシステムズ社 間通信)
- UDP:5093ポート(クライアントPCとライセンスサーバ 間通信)
構築手順
- 仮想マシンの作成:インスタンスを作成し、ターミナルから操作できるようにする。
- ライセンスツール:ターミナルから IAR License Server Tools for Linux をインストールする。
仮想マシン
仮想マシンのインスタンスは、システム要件を満たすようにプロセッサ、ストレージ、ネットワーク、オペレーティングシステムを選択する。
作成
インスタンスタイプは、システム要件に合わせ「t2.small」を使用する。ただし、非推奨だが「t2.nano」でも動作する。料金は、「ざっくりAWS」の料金計算ツールを使用(146.461 円/ドル)
タイプ | vCPU | メモリ | 料金/月 |
---|---|---|---|
t2.nano | 1(最大3.3GHz Xeon) | 0.5 GiB | 972 円 |
t2.small | 1(最大3.3GHz Xeon) | 2 GiB | 3,416 円 |
- 新規作成
AWSコンソールからAWS EC2サービスのページへ移動し、インスタンスの起動をクリックする。
- インスタンス名
インスタンスの名称(例:My Web Server)を入力する。
- OS
サーバー用途に合わせ適切なOSを選択する。今回は、システム要件に合わせ「Ubuntu Server 20.04 LTS」を選択する。
- インスタンスタイプ
サーバー用途に合わせ適切なインスタンスタイプを選択する。今回は、システム要件に合わせ「t2.small」を選択する。
- キーペア
公開鍵暗号方式でSSH接続する際に公開鍵暗号方式で用いる2種類の鍵(公開鍵、秘密鍵)を作成する。新規作成すると自動で秘密鍵のダウンロードが始まり、PCからターミナルツールでSSH接続する場合は、この秘密鍵が必要になる。
- ネットワーク設定
今回は、すべてデフォルトで設定する。パブリックIPの自動割り当てを有効にすると、停止したインスタンスを起動する度にIPアドレスが変化する。同じIPアドレスを使用し続ける場合は「Elastic IP」を利用する。
- セキュリティグループ
インスタンス作成時に通信を許可するプロトコル、ポート範囲などを指定し、セキュリティグループの設定を行う。
セキュリティグループのルールは、構築と運用の通信プロトコルを含め、以下の設定を追加する。
タイプ | プロトコル | ポート | ソースタイプ | ソース | 備考 |
---|---|---|---|---|---|
ssh | TCP | 22 | 任意の場所 | 0.0.0.0/0 | ターミナル接続用 |
すべてのICMP | ICMP | すべて | 任意の場所 | 0.0.0.0/0 | 疎通確認用(ping) |
HTTPS | TCP | 443 | 任意の場所 | 0.0.0.0/0 | ライセンスサーバとIARシステム社 間通信 |
カスタム UDP | UDP | 5093 | 任意の場所 | 0.0.0.0/0 | クライアントPCとライセンスサーバ 間通信 |
- ストレージ
サーバー用途に合わせ適切なストレージサイズを設定する。今回は、デフォルト8GiBを設定する。
AWS EC2のストレージは「Amazon Elastic Block Store」というサービスによって提供されている。提供されるボリューム(ストレージ)の種類については、「Amazon EBS ボリュームの種類」に記載されている。
起動
AWSコンソールからインスタンスを起動する。
接続
インスタンスに接続して操作する方法として、以下の2種類が主に用いられる。
- AWSコンソールから接続
AWSコンソールにログインし、ブラウザベースのクライアントでHTTPS接続する。 - ターミナルツールから接続
インスタンス作成時に作成したキーペアを使ってターミナルツールからSSH接続する。
例:「TeraTerm」でのSSH接続
保護
AWS EC2のインスタンスは、稼働中に「停止」「休止」「終了」の操作ができるが、運用中の停止や終了には注意する必要がある。特に終了は、仮想マシンを削除し復活できない操作のため、最も注意する必要がある。このため、誤操作を防ぐ「停止保護」や「終了保護」という設定がある。
操作 | 動作 | 補足 |
---|---|---|
停止 | インスタンスをシャットダウンする。 | 停止後の開始はOSの起動からはじまる。 |
休止 | インスタンスをサスペンドする。 | 現在の状態を保持したままスリープする。 |
終了 | インスタンスを削除する。 | 終了直後も一定時間インスタンスは残る。 |
サーバーツール
AWS EC2で作成したインスタンスにIARライセンスサーバーツールの導入と設定を行う。その後、グローバルライセンスの登録と更新を行う。
導入
サーバーツールのパッケージをダウンロードし、インストールを行う。
1. パッケージのダウンロード
# IAR License Server Tools for Linux に従い最新版をダンロードする。
$ wget https://netstorage.iar.com/NSDB/Items/SUPPORT/LMS2/Server/2.18.3/iar_license_server_tools_2.18.3_linux/iar-license-server-tools-2.18.3.deb
2. パッケージのインストール
$ sudo dpkg -i iar-license-server-tools-2.18.3.deb
3. IARライセンスサーバーの起動
$ cd /opt/iarsystems/license_server_tools/common/bin
$ sudo ./lserv64
設定
自動起動ファイルの作成と設定を行い、最後にシンボリックリンクを作成する。
1. 自動起動ファイルの作成
$ sudo vi /lib/systemd/system/iar_license.service
2. 自動起動ファイルの設定
[Unit]
Description=IAR Systems License Server
After=network-online.target
[Service]
ExecStart=/bin/bash -c 'cd /opt/iarsystems/license_server_tools/common/bin; ./lserv64'
WorkingDirectory=/opt/iarsystems/license_server_tools/common/bin
User=root
Type=forking
[Install]
WantedBy=multi-user.target
Alias=iar_license.service
3. シンボリックリンクの作成
$ sudo ln -s /lib/systemd/system/iar_license.service /etc/systemd/system/iar_license.service
登録
ライセンス番号を指定して、グローバルライセンスの登録を行う。登録が完了すると購入時に指定したメールアドレス宛に通知される。このタイミングで、グローバルライセンスの更新を行うことで、使用期限が「永久」に変化する。
1. グローバルライセンスの登録
$ cd /opt/iarsystems/license_server_tools/common/bin
# アクティベート時に画面表示されるURLにアクセスして登録を行う。
$ sudo ./lightlicensemanager activate xxxx-xxx-xxx-xxxx
2. グローバルライセンスの更新
# メール通知後にライセンスの更新を行うと使用期限が「永久」に変化する。
$ sudo ./lightlicensemanager renew xxxx-xxx-xxx-xxxx
クライアント
クライアントは、インストール済みのEWARMにライセンスサーバの設定を行うことで、購入したすべての機能を使用することができる。
運用手順
- サーバ設定:構築したライセンスサーバーのIPアドレスを設定する。
- オンライン:特に意識することなくビルド、デバッグすることができる。
- オフライン:コミュータ承認によりビルド、デバッグすることができる。
サーバ設定
IAR License Manager を起動し、「ネットワークライセンスを使用」から構築したライセンスサーバーのIPアドレスを設定する。
オンライン
ライセンスサーバーに接続できるオンライン環境のときは、特に意識することなくビルド、デバッグ機能を使用することができる。
オフライン
ライセンスサーバーに接続できないオフライン環境のときは、コミュータ承認により日数を指定して、ビルド、デバッグ機能を使用することができる。
例として、企業内LANのネットワーク環境がUDP 5093ポートにアクセスできない場合などが挙げられる。このような場合は、一時的にインターネットに直接接続し、ライセンスをチェックアウトすることで、従来の機能を制限なく使用することができる。
弊社では、クラウドを活用した「テクノロジーを創造する組み込み支援」を提供しています。
詳しくは、開発支援ソリューションをご覧ください。