AWS+Windows環境における大規模ソーシャルゲーム開発/運用の実際
最終回 Windows on AWS EC2でImmutable Infrastructure
2014年9月18日
初出:Software Design 2014年10月号(2014年9月18日発売
グラニ, C#, ソーシャルゲーム, AWS, Windows, Immutable Infrastructure, PowerShell
今回は,
Immutable Infrastructureは,
いつでも再セットアップするということは,
ゴールデンイメージによる運用
弊社では,
ゴールデンイメージを使う理由は2つあります。
起動タイミングによるバージョン差異の発生を防ぐため
負荷の増大時にスケールする際,
Amazonが提供する最新のAMIを常に利用していると,
必要な初期構成に15分程度かかるため
Windowsは,
ゴールデンイメージ作成時の構成例を次に紹介します。
- Windowsの機能の追加
- Webサイトの追加
- レジストリの最適化
- ソフトウェアのインストール
- 監視用エージェントのインストール
- Configuration Management
(以降CM) への参加
このゴールデンイメージは,
自動化と使用しているツール
Linuxがそうであるように,
AWS Tools for Windows PowerShell:AWS APIの操作
AWS CLIと同様に,
UserData:ゴールデンイメージから起動したサーバのブートストラップ処理
UserDataは,
UserDataを使うことで,
PowerShell DSC:CM
CMツールは,
Windows Server 2012 R2にはPowerShell DSCと呼ばれるCMのための機能があり,
サンプルコード
次に,
AWS APIを操作してインスタンスを作成する
AWS Tools for Windows PowerShellは,
リスト1は,
- EC2-VPCで起動
- General Purpose 50GB
- Private IPが10.
0.0. 10
リスト1 Amazon AMIからWindowsインスタンスを起動する例
# Create EC2 Instance
$ec2Param = @{
EC2AMIImageName = 'Windows_Server-2012-R2_RTM-Japanese-64Bit-Base-*'
EC2InstanceType = 'c3.2xlarge'
KeyName = 'MyKeyPair'
AvailabilityZone = 'ap-northeast-1c'
VpcName = 'Dev'
VpcSecurityGroupTagName = 'Web-Dev'
InstanceProfileName = 'Web'
SubNetState = 'Available'
IpAddress = "10.0.0.10"
VolumeSize = 50
VolumeType = 'gp2'
Userdata = Get-AWSModuleUserData -userdataServerType web ュ
-userdataUsageType bootstrap}
New-AWSModuleEC2InstanceFromAMI @ec2Param
「Amazon Document - Using Amazon EC2 Instances」
同様に,
UserDataでインスタンス起動時にコードを自動実行する
Linuxとほぼ同様に,
リスト2は,
リスト2 GitHubからPowerShellスクリプトをダウンロードしてインスタンスで実行させるコード
<powershell>
iex ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String((irm "https://api.github.com/repos/ACCOUNT/REPOGITORY/contents/
PATH/TO/SCRIPT.ps1").Content)))
</powershell>
PowerShell DSCでWindowsをCM
最後に,
リスト3 Windows Server 2012 R2でWindowsをCMするサンプル
Configuration IISSetup
{
WindowsFeature IIS
{
Ensure = "Present"
Name = "Web-Server"
}
WindowsFeature ASP
{
Ensure = "Present"
Name = "Web-Asp-Net45"
}
}
これまでもChefでWindows用のレシピを書けましたが,
リスト4 DSCを利用してIISとASP.
dsc_resource 'IIS' do
resource_name :WindowsFeature
property :ensure, 'Present'
property :Name, "Web-Server"
end
dsc_resource 'ASP' do
resource_name :WindowsFeature
property :ensure, 'Present'
property :Name, "Web-Asp-Net45"
end
ChefとDSCはコード以外にも構文や機能がよく似ています。また,
WindowsでImmutable Infrastructureするにあたって足りないこと
現実にはLinuxのほうがまだまだ発展しています。一例としては,
まとめ
いかがでしたでしょうか。みなさんにとって意外だったことや,
- 提供/
株式会社グラニ - http://
grani. jp/ - グラニでは各種エンジニアを募集しています。
- 詳細はこちら→http://
grani. jp/ recruit/
バックナンバー
AWS+Windows環境における大規模ソーシャルゲーム開発/運用の実際
- 最終回 Windows on AWS EC2でImmutable Infrastructure
- 第2回 大規模Windows環境におけるデプロイ
- 第1回 C#へのこだわりは,より良いサービスへのこだわり