技術情報 - はじめてのAWS EC2

はじめに

AWS EC2(Amazon Elastic Compute Cloud)は、クラウド上に仮想サーバーを構築できるサービスであり、プロセッサ、ストレージ、ネットワーク、オペレーティングシステムなどを選択することで、従来の物理サーバを置き換えることができる。以下に選択可能なリソースと基本アーキテクチャを示す。また、本記事では、IARシステムズ社が提供するEWARM用ライセンスサーバーの構築と運用例を示す。

リソース

  • プロセッサ:i386, x86_64, arm64
  • ストレージ:HDD, SSD
  • ネットワーク:Private, Public, IPv4/IPv6
  • オペレーティングシステム:Linux, Windows, macOS

アーキテクチャ

クライアントは、以下の方法で仮想マシンを操作
・ターミナル:プライベートキーでSSH接続
・ブラウザ:AWSコンソールからHTTPS接続
クライアントは、以下の方法で仮想マシンを操作・ターミナル:プライベートキーでSSH接続...
・インスタンス
   CPU、メモリ、OSなどを組み合わせた仮想マシン
・インスタンス   CPU、メモリ、OSなどを組み合わせた仮想マシン...
・ボリューム
   インスタンスで扱うデータ、ファイルを保存する領域
・ボリューム   インスタンスで扱うデータ、ファイルを保存する領域...
・VPC
   ゾーンごとに管理されている仮想ネットワーク
・VPC...
・セキュリティグループ
   ネットワークアクセス許可用の仮想ファイアウォール
・セキュリティグループ   ネットワークアクセス許可用の仮想ファイアウォール...
Text is not SVG - cannot display

引用元:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/concepts.html より

インスタンス

AWS EC2によって構築されるインスタンス(仮想マシン)はCPU、メモリ、ストレージ、ネットワークなどのリソースをユーザが厳密な数値を設定して決めるのではなく、あらかじめ決められたスペックのリソースを組み合わせたインスタンスタイプというセットから選択する。これにより、ユースケースに合わせた必要最小限の設定で仮想サーバーを構築できる。

例として、T2 と呼ばれるインスタンスタイプのスペック環境を示す。また、Armベースのプロセッサを使用する r7g や、最大 50 Gbps のネットワーク帯域幅を持つ M7a などのインスタンスタイプもある。

インスタンスvCPUCPUクレジット/時間メモリ(GiB)ストレージネットワーク速度
t2.nano130.5EBS のみ
t2.micro161EBS のみ低~中
t2.small1122EBS のみ低~中
t2.medium2244EBS のみ低~中
t2.large2368EBS のみ低~中
t2.xlarge45416EBS のみ
t2.2xlarge88132EBS のみ

ボリューム

AWS EC2では、データおよびファイルアクセスのためのボリュームとして、以下のような特徴を持ったストレージオプションを使用する。 インスタンスを起動するためには、「インスタンスストアボリューム」または「EBSボリューム」で生成されたルートボリュームストレージが必要となる。ルートボリュームがどちらで生成されるかは、インスタンスタイプによって決まっている。また、EFS、S3は必須ではなく、必要に応じて追加・設定する。

・S3(Simple Storage Service)
  インターネットデータ用のリポジトリ
  スナップショットの格納に使用
・S3(Simple Storage Service)...
・EBS(Elastic Block Store)
   EC2とはネットワークで接続し、
  インスタンス停止しても内部のデータは失われない。
・EBS(Elastic Block Store)...
・インスタンスストア
  EC2インスタンス内に物理的に生成され、
  EC2を停止すると内部のデータは失われる。
・インスタンスストア  EC2インスタンス内に物理的に生成され、...
・EFS(Elastic File System)
  EC2でマウント可能なネットワークファイルシステム
  1つのファイルシステムに複数のインスタンスからアクセス可能
・EFS(Elastic File System)...
Text is not SVG - cannot display

引用元: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アドレスが割り当てられる。

・プライベートIPアドレス
  同一のリージョン、同一のVPCネットワーク内
  EC2インスタンス等と通信する場合に使用する。
・プライベートIPアドレス...
・パブリックIPアドレス
  VPCネットワークの外への通信には、パブリックIPアドレスが用いられる。
  VPCにアタッチされたインターネットゲートウェイを通して外部と通信する。
・パブリックIPアドレス...
Text is not SVG - cannot display

引用元:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-vpc.html より

ファイアウォール

AWS EC2は、セキュリティグループとして、VPC上に構築される仮想ファイアウォールの機能を提供している。AWS EC2インスタンスから見て受信側となるインバウンドと、送信側となるアウトバウンドのそれぞれについて、通信を許可するプロトコルとポート範囲、IPアドレス範囲をルールとして設定する。

ルールを追加して、インターネットからの
HTTP(S) などの各種トラフィックを許可
ルールを追加して、インターネットからの HTTP(S) などの各種トラフィックを許可
Text is not SVG - cannot display

引用元:https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-security-groups.html より

ライセンスサーバー

ライセンスサーバーは、インターネットによるライセンス共有が可能なグローバルライセンスでの構築と運用例を示す。AWS EC2の仮想マシンにライセンスサーバーを構築することで、在宅勤務や離れた開発拠点とのライセンス共有が可能になる。また、構築と運用コストを最適化することで、初期費用と保守費用を抑えることができる。

  • グローバルライセンス:在宅勤務や離れた開発拠点とのライセンス共有が可能
IAR License Server Tools
IAR License S...
EWARM
EWARM
AWS EC2
AWS EC2
Client PC
Client PC
License Management
IAR Systems
IAR Systems
ライセンス要求
ライセンス要求
ライセンス登録
ライセンス登録
ライセンス応答
ライセンス応答
ライセンス発行
ライセンス発行
TCP:443
TCP:443
UDP:5093
UDP:5093
Text is not SVG - cannot display

システム要件

システム要件は、「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とライセンスサーバ 間通信)

構築手順

  1. 仮想マシンの作成:インスタンスを作成し、ターミナルから操作できるようにする。
  2. ライセンスツール:ターミナルから IAR License Server Tools for Linux をインストールする。

仮想マシン

仮想マシンのインスタンスは、システム要件を満たすようにプロセッサ、ストレージ、ネットワーク、オペレーティングシステムを選択する。

作成

インスタンスタイプは、システム要件に合わせ「t2.small」を使用する。ただし、非推奨だが「t2.nano」でも動作する。料金は、「ざっくりAWS」の料金計算ツールを使用(146.461 円/ドル)

タイプvCPUメモリ料金/月
t2.nano1(最大3.3GHz Xeon)0.5 GiB972 円
t2.small1(最大3.3GHz Xeon)2 GiB3,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」を利用する。
  • セキュリティグループ

    インスタンス作成時に通信を許可するプロトコル、ポート範囲などを指定し、セキュリティグループの設定を行う。

セキュリティグループのルールは、構築と運用の通信プロトコルを含め、以下の設定を追加する。

タイププロトコルポートソースタイプソース備考
sshTCP22任意の場所0.0.0.0/0ターミナル接続用
すべてのICMPICMPすべて任意の場所0.0.0.0/0疎通確認用(ping)
HTTPSTCP443任意の場所0.0.0.0/0ライセンスサーバとIARシステム社 間通信
カスタム UDPUDP5093任意の場所0.0.0.0/0クライアントPCとライセンスサーバ 間通信
  • ストレージ

    サーバー用途に合わせ適切なストレージサイズを設定する。今回は、デフォルト8GiBを設定する。

AWS EC2のストレージは「Amazon Elastic Block Store」というサービスによって提供されている。提供されるボリューム(ストレージ)の種類については、「Amazon EBS ボリュームの種類」に記載されている。

起動

AWSコンソールからインスタンスを起動する。

接続

インスタンスに接続して操作する方法として、以下の2種類が主に用いられる。

  • AWSコンソールから接続

    AWSコンソールにログインし、ブラウザベースのクライアントでHTTPS接続する。
  • ターミナルツールから接続

    インスタンス作成時に作成したキーペアを使ってターミナルツールからSSH接続する。

例:「TeraTerm」でのSSH接続

xx.xx.xx.xx
xx.xx.xx.xx
username
username
 filename
 filename
Text is not SVG - cannot display

保護

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にライセンスサーバの設定を行うことで、購入したすべての機能を使用することができる。

運用手順

  1. サーバ設定:構築したライセンスサーバーのIPアドレスを設定する。
  2. オンライン:特に意識することなくビルド、デバッグすることができる。
  3. オフライン:コミュータ承認によりビルド、デバッグすることができる。

サーバ設定

IAR License Manager を起動し、「ネットワークライセンスを使用」から構築したライセンスサーバーのIPアドレスを設定する。

xxxx-xxx-xxx-xxxx
xxxx-xxx-xxx-xxxx
xxxx-xxx-xxx
xxxx-xxx-xxx
Text is not SVG - cannot display

オンライン

ライセンスサーバーに接続できるオンライン環境のときは、特に意識することなくビルド、デバッグ機能を使用することができる。

オフライン

ライセンスサーバーに接続できないオフライン環境のときは、コミュータ承認により日数を指定して、ビルド、デバッグ機能を使用することができる。

例として、企業内LANのネットワーク環境がUDP 5093ポートにアクセスできない場合などが挙げられる。このような場合は、一時的にインターネットに直接接続し、ライセンスをチェックアウトすることで、従来の機能を制限なく使用することができる。

弊社では、クラウドを活用した「テクノロジーを創造する組み込み支援」を提供しています。

詳しくは、開発支援ソリューションをご覧ください。