[AWS移行]移行アセスメントを効率化する[AWS Application Discovery Service(ADS)]

コンニチハ、千葉です。

最近移行に携わることが多く、検証しています。今回は、オンプレ環境のアセスメントを行えるAWS Application Discovery Service(以下ADS)を検証してみます。(このブログ結構頑張った in my mind)

ADSでできること

ADSを利用することでオンプレミスで稼働しているサーバーの各種情報を取得し、アセスメント・分析を行うための支援をしてくれます。移行時のアセスメント時情報収集に苦労場合がありますが、ADSを利用することで緩和されます。収集したデータは、AWSが管理するDBに安全に保持されます。また、データはCSVやXMLでダウンロードできるためサードパーティ製のツールで分析することもできます。

タイプ

データ収集するにあたり、エージェントのタイプが2つあり選択することができます。エージェントのタイプにより情報収集できる項目が異なります。エージェントレスよりエージェントベースの方が情報取得項目は多いです。

エージェントレス

VMware vVenter Server利用時の推奨。VM上に AWS Agentless Discovery Connector(OVA提供)をダウンロードしてADS用の仮想マシンを起動することで情報を収集します。 各サーバーにエージェントをインストールする必要がない、OSタイプ(バージョンなど)に依存せず収集が可能というメリットがあります。その半面、VMwareから取得可能な情報のみを収集します。(OSパッケージなどは取得できない)

エージェントベース

サーバーにエージェントをインストールし情報を収集します。サーバー上の詳細な情報を取得することができます。パッケージ、プロセス、ネットワーク通信などの情報を取得することができます。

エージェントレスで一度アセスメントを実施し、そのあと必要であればエージェントベースでのアセスメントを実施する流れが推奨のようです。

前提条件

エージェントレス

VMware vCenter Server利用時

エージェントベース

バージョンアップにより対象OSが増える可能性があるため、必ず最新情報を確認ください。

  • Linux
    • Ubuntu 14
    • Amazon Linux 2012.03または2015.03
    • CentOS 6または7(CentOS 7.3はサポートされていません)
    • Red Hat Enterprise Linux 6または7(RHEL 7.3はサポートされていません)
  • Windows
    • Windows Server 2012 R2
    • Windows Server 2012
    • Windows Server 2008 R2

※注意 Microsoft Windows Server 2008 R2 Service Pack 1で送信できない場合は既知のバグがあるのため修正プログラムをインストールする必要があります

ファイアウォール設定

arsenal.us-west-2.amazonaws.com:443へのアウトバウンドアクセスができるようにネットワークを確認します。

取得可能なデータ

エージェントレス、エージェントベースとでは取得項目が異なります。

取得項目についてはこちらを確認ください。

エージェントレスで使えそうな項目

サーバー一覧、ハードウェア情報、リソース利用状況を一通り取得できるイメージです。 VMware Toolsがインストールされている場合のみ取得可能な項目魔ありますが特に以下が有効かなと思います。

  • OSType
  • Hostname
  • IP アドレス
  • MemorySize
  • MaxActiveRam
  • BytesReadPerSecond
  • BytesWrittenPerSecond
  • Disks
  • Capacity
  • Cpus
  • numCores
  • MaxUsageMHz

20170712-ADS-14

エージェントベースで使えそうな項目

エージェントベースだとOSやミドル、ネットワーク通信に関する詳細な情報を取得することができます。 有効そうな項目をピックアップしようと思いましたが、全部重要そうだったのでそのまま記載しました。

起動プロセス、インストールパケージ、ネットワーク通信(TCP/DNS)あたりは特に重要かなと思います。

  • ユーザー情報 (ユーザー名、ホームディレクトリなど)
  • グループ情報 (名前)
  • インストールされているパッケージのリスト
  • カーネルモジュールのリスト
  • 作成および停止プロセスのすべてのイベント
  • DNS クエリ
  • NIC 情報
  • TCP/UDP プロセスリッスンポート
  • TCPV4/V6 接続
  • オペレーティングシステムの情報
  • システムパフォーマンス
  • プロセスのパフォーマンス

20170712-ADS-15

やってみた

手順サマリ

  • アクセスリクエスト
  • IAMユーザー作成
  • エージェントレスタイプ
    • AWS Agentless Discovery Connector 仮想アプライアンスのデプロイ
    • AWS Agentless Discovery Connector の設定
  • エージェントベースタイプ
    • AWS Application Discovery エージェントインストール

アクセスリクエスト

こちらより申請します。AWSがホワイトリスト登録作業を実施し、完了したらADSを利用可能になります。

IAMユーザー作成

ADSで利用するIAMユーザーを作成します。作成したIAMユーザーに権限を付与します。

以下3種類のマネージドポリシーが用意されているので、必要な権限を付与します。エージェントレスの場合は3、エージェントベースの場合は2を付与します。

  1. AWSApplicationDiscoveryServiceFullAccess:ADSへのフルアクセス。収集した情報を取得することができます。
  2. AWSApplicationDiscoveryAgentAccess:エージェントがADSに情報をputする権限
  3. AWSAgentlessDiscoveryService:エージェントレス利用時の AWS Agentless Discovery Connectorが情報をputする権限

あとで利用するので アクセスキーの発行 も行っておきます。

エージェントレスタイプの設定

エージェントレスで利用する場合は、こちらの作業を実施します。エージェントベースで利用する方は、ここの手順はスキップできます。

AWS Agentless Discovery Connector 仮想アプライアンスのデプロイ

仮想アプライアンスをVMware上へデプロイします。まずは、ADS登録完了メールの中にアプライアンスのOVAダウンロードURLが記載されています。メールを確認の上OVAをダウンロードします。

仮想仮想マシン作成時のディスクフォーマットは「Thick Provision Eager Zeroed」推奨です。

仮想マシンの電源を起動し、IPアドレスをメモしておきます。

20170712-ADS-1

AWS Agentless Discovery Connector の設定

メモしたIPアドレスを入力しアクセスします。「https://xx.xx.xx.xx/」HTTPSでアクセスします。 「Get started now」を選択します。

20170712-ADS-2

ライセンスアグリーメントに合意します。

20170712-ADS-3

Connectorへのログインパスワードを設定します。

20170712-ADS-4

ネットワークに関する設定を行います。今回はデフォルトのままで問題ないので、そのままで行きます。

20170712-ADS-5

ADSへのログアップロードとConnecotorのアップグレードの有無を選択します。こちらもデフォルトでいきます。

20170712-ADS-6

vCenterのログイン情報、AWSアクセスキー、ログアップロード先のリージョンを選択します。201707現在はUS Westのみ選択可能です。

20170712-ADS-7

20170712-ADS-8

接続が成功し、「HEALTH」となりました。

20170712-ADS-9

次に収集を開始します。こちらの操作は マネージメントコンソール から実施します。

20170712-ADS-10

これで収集が開始されました。

エージェントベースタイプの設定

エージェントベースで利用する場合は、こちらの作業を実施します。

AWS Application Discovery エージェントインストール

対象のサーバにエージェントをインストールします。

※注意事項 「認定された AWS パートナーのみが、Amazon Partner Network からインストーラをダウンロードできます。」とのことなので、利用したい方は是非弊社まで問い合わせください!

Linux

Linuxへエージェントをインストール手順です。 ADSへ情報を送信するためのアクセスキーの設定をします。** /root/.aws/credentials ** がない場合はファイルを作成し、以下の型式で前の手順で作成したアクセスキーを保存します。

[default]
aws_access_key_id=xxxxxx
aws_secret_access_key=xxxxxx

エージェントをインストール対象サーバへ配布しインストールコマンドを実行します。試した環境だとhostコマンドがないと怒られたのでインストールしました

sudo yum -y install bind-utils[/basg]


sudo bash install -r us-west-2

・・・
**************************************************
                  FINISH PHASE
**************************************************

Notice:
・・・

エラー無く「FINISH PHASE」まで完了していればokです。カーネルのバージョンを細かくチェックしているようなので、以下が表示された場合は未対応OSということですね。

Failed to find an inspector agent package for this OS: xxxxxxxxx.

インストールが完了したら、インストールファイルを削除します。

rm install

次に収集を開始します。こちらの操作は マネージメントコンソール から実施します。

20170712-ADS-11

これで収集が開始されました。

コマンド一覧は以下です。

# エージェント起動・停止・再起動
sudo /etc/init.d/awsagent start
sudo /etc/init.d/awsagent stop
sudo /etc/init.d/awsagent restart

# エージェント状態確認
sudo /opt/aws/awsagent/bin/awsagent status

# エージェントアンインストール(Amazon Linux、CentOS、Red Hat)
yum remove AwsAgent

# エージェントアンインストール(Ubuntu)
apt-get remove awsagent
Windows

Windowsへエージェントをインストール手順です。 ADSへ情報を送信するためのアクセスキーの設定をします。** %SystemRoot%\system32\config\systemprofile.aws\credentials ** がない場合はファイルを作成し、以下の型式で前の手順で作成したアクセスキーを保存します。

[default]
aws_access_key_id=xxxxxx
aws_secret_access_key=xxxxxx

エージェントをインストール対象サーバへ配布しインストールコマンドを実行します。

DiscoveryAgentInstall.exe REGION=us-west-2

20170712-ADS-12

次に収集を開始します。こちらの操作は マネージメントコンソール から実施します。

20170712-ADS-11

これで収集が開始されました。

収集したデータの確認

エージェントレス

エージェントレス利用時の取得項目のイメージです。

基本情報

20170712-ADS-13

パフォーマンス情報

20170712-ADS-14

エージェントベース

エージェントベース利用時の取得項目のイメージです。エージェントレスより取得可能な項目が多くなります。

ネットワーク接続

どのサーバーとどのサーバが通信しているかを可視化してくれます。関連数が多くなると図ではなく一覧になるようです。

20170712-ADS-15

基本情報

20170712-ADS-16

パフォーマンス情報

20170712-ADS-17

起動しているプロセスの情報

20170712-ADS-18

ネットワークイン・アウトコネクション

20170712-ADS-19

その他

  • CSVまたはXMLにてデータをダウンロード
  • サーバーにタグ付け
  • グルーピングの作成

ができるので、分析するうえで活用しましょう。

最後に

AWSから強力なアセスメントツールが提供されています。これは移行時の負荷軽減に役立つので、積極的に活用していきたいですね。特にエージェントレスタイプは、別途仮想マシンを立てる & vCenterへのアクセスなので、既存環境の影響も少ないかと思います。また、さらに詳細な情報が必要な場合は、エージェントをインストールするとでサーバー間の接続情報やインストールパッケージ・バージョン、プロセスなど様々な情報を収集できるので、可能であればこちらも利用していきたいです。

参考

http://docs.aws.amazon.com/ja_jp/application-discovery/latest/userguide/what-is-appdiscovery.html