2025年7月最新情報
出典: Microsoft Learn
Microsoft Azureでマイクラサーバーを運用したいけれど、複雑な設定に戸惑っていませんか?Azure VPSは世界レベルのインフラを提供する一方で、Network Security GroupやIOPS設定など、独特の仕様があります。この記事では、B1sプランでの小規模運用から、本格的な大規模サーバーまで、Azure特有の設定を完全解説します!
1. Azure VPS の基礎知識とメリット
Azure Virtual Machines の特徴
Azure VPSの強み:
- 世界規模のインフラ: 60+リージョンでの展開
- エンタープライズグレード: 99.95%のSLA保証
- 柔軟なスケーリング: 需要に応じた自動拡張
- 豊富なセキュリティ機能: 多層防御システム
- 統合管理: Azure Portalでの一元管理
マイクラサーバーでのAzureメリット
技術的優位性:
低遅延ネットワーク: Azure Accelerated Networking
高速ストレージ: Premium SSD with IOPS
自動化: ARM テンプレートでの構築
監視: Azure Monitor による24時間監視
災害復旧: Azure Site Recovery
コスト効率:
- 従量課金制による柔軟な課金
- リザーブドインスタンスで最大72%割引
- ハイブリッド特典による既存ライセンス活用
2. B1sプランでの小規模サーバー構築
B1sプランの仕様と制限
B1sプランスペック:
vCPU: 1コア
メモリ: 1GB
ストレージ: Premium SSD 対応
ネットワーク: 制限あり(640 Mbps)
月額料金: 約¥1,200-1,500
適用範囲:
- 2-5人の小規模サーバー
- バニラサーバー(MODなし)
- テスト・開発環境
- 学習目的
Azure Portal での VM作成
ステップ1:仮想マシンの作成
1. Azure Portalにログイン
2. "仮想マシン" → "作成"
3. 基本設定:
- リソースグループ: minecraft-rg
- 仮想マシン名: minecraft-server
- リージョン: Japan East
- イメージ: Ubuntu Server 22.04 LTS
- サイズ: Standard_B1s
ステップ2:認証設定
認証の種類: SSH公開キー
ユーザー名: azureuser
SSH公開キー: 新しいキーペアの生成
キーペア名: minecraft-server_key
ステップ3:ディスク設定
OS ディスクの種類: Premium SSD
暗号化の種類: 既定値
削除オプション: VM と一緒に削除
初期セットアップスクリプト
自動セットアップ用 cloud-init:
Copy#cloud-config
package_update: true
packages:
- openjdk-21-jre-headless
- screen
- htop
- unzip
write_files:
- path: /opt/minecraft/start.sh
content: |
#!/bin/bash
cd /opt/minecraft
screen -dmS minecraft java -Xms512M -Xmx896M -jar server.jar nogui
permissions: '0755'
- path: /opt/minecraft/server.properties
content: |
server-port=25565
gamemode=survival
difficulty=normal
max-players=5
view-distance=6
simulation-distance=4
enable-command-block=false
white-list=false
motd=Azure Minecraft Server
runcmd:
- mkdir -p /opt/minecraft
- cd /opt/minecraft
- wget https://piston-data.mojang.com/v1/objects/4707d00eb834b446575d89a61a11b5d548d8c001/server.jar
- echo "eula=true" > eula.txt
- chown -R azureuser:azureuser /opt/minecraft
3. Network Security Group 設定詳解
出典: Microsoft Learning
NSGの作成と基本設定
NSG作成手順:
1. Azure Portal → "ネットワーク セキュリティ グループ"
2. "作成" をクリック
3. 基本設定:
- リソースグループ: minecraft-rg
- 名前: minecraft-nsg
- リージョン: Japan East
マイクラサーバー用セキュリティルール
受信セキュリティルール設定:
1. Minecraft サーバーアクセス:
名前: Allow-Minecraft
優先度: 100
ソース: Any
ソースポート範囲: *
宛先: Any
宛先ポート範囲: 25565
プロトコル: TCP
アクション: 許可
2. SSH アクセス(管理用):
名前: Allow-SSH
優先度: 110
ソース: My IP address
ソースポート範囲: *
宛先: Any
宛先ポート範囲: 22
プロトコル: TCP
アクション: 許可
3. Query ポート(サーバー情報取得):
名前: Allow-Query
優先度: 120
ソース: Any
ソースポート範囲: *
宛先: Any
宛先ポート範囲: 25565
プロトコル: UDP
アクション: 許可
高度なセキュリティ設定
地域制限ルール(推奨):
Copy# PowerShell スクリプト例
$nsg = Get-AzNetworkSecurityGroup -ResourceGroupName "minecraft-rg" -Name "minecraft-nsg"
# 日本国内のみアクセス許可
$rule = New-AzNetworkSecurityRuleConfig `
-Name "Allow-Japan-Only" `
-Protocol TCP `
-Direction Inbound `
-Priority 90 `
-SourceAddressPrefix "223.252.0.0/16,210.251.0.0/16" `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 25565 `
-Access Allow
$nsg.SecurityRules.Add($rule)
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
時間制限アクセス(Application Security Groups使用):
1. Application Security Group 作成
2. 時間ベースのアクセス制御
3. 自動化スクリプトによるルール更新
4. 自動バックアップシステム構築
Azure Backup の設定
Recovery Services コンテナー作成:
1. Azure Portal → "Recovery Services コンテナー"
2. "作成" をクリック
3. 基本設定:
- コンテナー名: minecraft-backup-vault
- リソースグループ: minecraft-rg
- リージョン: Japan East
VM バックアップポリシー設定:
Copy{
"name": "MinecraftDailyBackup",
"properties": {
"backupManagementType": "AzureIaasVM",
"schedulePolicy": {
"schedulePolicyType": "SimpleSchedulePolicy",
"scheduleRunFrequency": "Daily",
"scheduleRunTimes": ["2024-01-01T03:00:00.000Z"],
"scheduleWeeklyFrequency": 0
},
"retentionPolicy": {
"retentionPolicyType": "LongTermRetentionPolicy",
"dailySchedule": {
"retentionTimes": ["2024-01-01T03:00:00.000Z"],
"retentionDuration": {
"count": 30,
"durationType": "Days"
}
},
"weeklySchedule": {
"daysOfTheWeek": ["Sunday"],
"retentionTimes": ["2024-01-01T03:00:00.000Z"],
"retentionDuration": {
"count": 12,
"durationType": "Weeks"
}
}
}
}
}
カスタム バックアップスクリプト
Minecraft データ専用バックアップ:
Copy#!/bin/bash
# minecraft_backup.sh
# Azure CLI認証
az login --identity
# 設定
STORAGE_ACCOUNT="minecraftbackup"
CONTAINER_NAME="world-backups"
MINECRAFT_DIR="/opt/minecraft"
DATE=$(date +%Y%m%d_%H%M%S)
# Minecraft サーバー停止
echo "Stopping Minecraft server..."
screen -S minecraft -X stuff "save-all$(echo -ne '\r')"
sleep 10
screen -S minecraft -X stuff "stop$(echo -ne '\r')"
sleep 30
# ワールドデータの圧縮
echo "Creating backup archive..."
tar -czf "/tmp/world_backup_$DATE.tar.gz" -C $MINECRAFT_DIR world
# Azure Blob Storage にアップロード
echo "Uploading to Azure Storage..."
az storage blob upload \
--account-name $STORAGE_ACCOUNT \
--container-name $CONTAINER_NAME \
--name "world_backup_$DATE.tar.gz" \
--file "/tmp/world_backup_$DATE.tar.gz"
# 古いバックアップ削除(30日以上前)
OLD_DATE=$(date -d '30 days ago' +%Y%m%d)
az storage blob list \
--account-name $STORAGE_ACCOUNT \
--container-name $CONTAINER_NAME \
--query "[?properties.lastModified < '$OLD_DATE'].name" \
--output tsv | \
xargs -I {} az storage blob delete \
--account-name $STORAGE_ACCOUNT \
--container-name $CONTAINER_NAME \
--name {}
# Minecraft サーバー再起動
echo "Restarting Minecraft server..."
cd $MINECRAFT_DIR
screen -dmS minecraft java -Xms512M -Xmx896M -jar server.jar nogui
# 一時ファイル削除
rm "/tmp/world_backup_$DATE.tar.gz"
echo "Backup completed: world_backup_$DATE.tar.gz"
Azure Automation での自動化
Automation Account 設定:
Copy# Runbook スクリプト例
param(
[string]$ResourceGroupName = "minecraft-rg",
[string]$VMName = "minecraft-server"
)
# 認証
$connectionName = "AzureRunAsConnection"
$servicePrincipalConnection = Get-AutomationConnection -Name $connectionName
Connect-AzAccount -ServicePrincipal -TenantId $servicePrincipalConnection.TenantId -ApplicationId $servicePrincipalConnection.ApplicationId -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
# カスタムバックアップスクリプト実行
$ScriptBlock = {
/opt/scripts/minecraft_backup.sh
}
Invoke-AzVMRunCommand -ResourceGroupName $ResourceGroupName -VMName $VMName -CommandId 'RunShellScript' -ScriptString $ScriptBlock
5. SSD IOPS最適化テクニック
Azure Disk の種類と性能
ディスクタイプ比較:
ディスクタイプ | IOPS | スループット | 価格/月 | 推奨用途 |
---|---|---|---|---|
Standard HDD | 500 | 60 MB/s | ¥500 | テスト環境 |
Standard SSD | 6,000 | 750 MB/s | ¥1,500 | 小規模サーバー |
Premium SSD | 20,000 | 900 MB/s | ¥3,000 | 中規模サーバー |
Ultra SSD | 160,000 | 4,000 MB/s | ¥10,000+ | 大規模サーバー |
Premium SSD 最適化設定
ディスク設定最適化:
Copy{
"diskSizeGB": 128,
"diskIOPSReadWrite": 500,
"diskMBpsReadWrite": 100,
"caching": "ReadWrite",
"writeAcceleratorEnabled": false,
"tier": "P10"
}
Linux ファイルシステム最適化:
Copy# /etc/fstab 最適化
/dev/sdc1 /opt/minecraft ext4 defaults,noatime,discard 0 2
# I/O スケジューラー最適化
echo mq-deadline > /sys/block/sdc/queue/scheduler
# Read-ahead 設定
blockdev --setra 4096 /dev/sdc1
Ultra SSD 構成(大規模サーバー用)
Ultra SSD 作成スクリプト:
Copy# Ultra SSD ディスク作成
$diskConfig = New-AzDiskConfig `
-Location "Japan East" `
-DiskSizeGB 1024 `
-DiskIOPSReadWrite 10000 `
-DiskMBpsReadWrite 500 `
-AccountType "UltraSSD_LRS" `
-CreateOption "Empty"
$disk = New-AzDisk `
-ResourceGroupName "minecraft-rg" `
-DiskName "minecraft-ultra-disk" `
-Disk $diskConfig
# VM にアタッチ
$vm = Get-AzVM -ResourceGroupName "minecraft-rg" -Name "minecraft-server"
$vm = Add-AzVMDataDisk -VM $vm -Name "minecraft-ultra-disk" -CreateOption "Attach" -ManagedDiskId $disk.Id -Lun 1
Update-AzVM -ResourceGroupName "minecraft-rg" -VM $vm
6. Azure独特の運用ベストプラクティス
Azure Monitor による監視
カスタムメトリクス設定:
Copy#!/bin/bash
# azure_metrics.sh
# Azure Monitor エージェント設定
curl -sL https://aka.ms/InstallAzureMonitoringAgent | bash
# カスタムメトリクス送信
TPS=$(screen -S minecraft -p 0 -X stuff "forge tps$(echo -ne '\r')" | grep "TPS" | awk '{print $2}')
PLAYERS=$(screen -S minecraft -p 0 -X stuff "list$(echo -ne '\r')" | grep "players online" | awk '{print $3}')
# メトリクス送信
curl -X POST https://dc.services.visualstudio.com/v2/track \
-H "Content-Type: application/json" \
-d '{
"name": "Microsoft.ApplicationInsights.Event",
"time": "'$(date -u +%Y-%m-%dT%H:%M:%S.%3NZ)'",
"data": {
"baseType": "EventData",
"baseData": {
"name": "MinecraftMetrics",
"properties": {
"TPS": "'$TPS'",
"Players": "'$PLAYERS'"
}
}
}
}'
Application Insights ダッシュボード設定:
Copy{
"widgets": [
{
"name": "TPS Trend",
"type": "chart",
"query": "customEvents | where name == 'MinecraftMetrics' | extend TPS = toreal(customDimensions.TPS) | summarize avg(TPS) by bin(timestamp, 5m)"
},
{
"name": "Player Count",
"type": "chart",
"query": "customEvents | where name == 'MinecraftMetrics' | extend Players = toint(customDimensions.Players) | summarize max(Players) by bin(timestamp, 1h)"
}
]
}
Azure DevOps によるCI/CD
パイプライン設定例:
Copy# azure-pipelines.yml
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
variables:
resourceGroup: 'minecraft-rg'
vmName: 'minecraft-server'
stages:
- stage: Deploy
jobs:
- job: UpdateServer
steps:
- task: AzureCLI@2
inputs:
azureSubscription: 'minecraft-service-connection'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
# サーバー停止
az vm run-command invoke \
--resource-group $(resourceGroup) \
--name $(vmName) \
--command-id RunShellScript \
--scripts "screen -S minecraft -X stuff 'stop'"
# サーバーファイル更新
az vm run-command invoke \
--resource-group $(resourceGroup) \
--name $(vmName) \
--command-id RunShellScript \
--scripts "cd /opt/minecraft && wget -O server.jar https://piston-data.mojang.com/v1/objects/latest/server.jar"
# サーバー起動
az vm run-command invoke \
--resource-group $(resourceGroup) \
--name $(vmName) \
--command-id RunShellScript \
--scripts "cd /opt/minecraft && screen -dmS minecraft java -Xms512M -Xmx896M -jar server.jar nogui"
7. コスト最適化戦略
Azure Cost Management の活用
コスト予算アラート設定:
Copy{
"name": "minecraft-budget",
"properties": {
"category": "Cost",
"amount": 5000,
"timeGrain": "Monthly",
"timePeriod": {
"startDate": "2025-01-01T00:00:00.000Z"
},
"notifications": {
"Actual_GreaterThan_80_Percent": {
"enabled": true,
"operator": "GreaterThan",
"threshold": 80,
"contactEmails": ["admin@example.com"],
"contactRoles": ["Owner"]
}
}
}
}
スケジュールベースの自動停止
自動停止/開始スクリプト:
Copy# 自動停止 Runbook
param(
[string]$ResourceGroupName = "minecraft-rg",
[string]$VMName = "minecraft-server"
)
# 接続
$connectionName = "AzureRunAsConnection"
$servicePrincipalConnection = Get-AutomationConnection -Name $connectionName
Connect-AzAccount -ServicePrincipal -TenantId $servicePrincipalConnection.TenantId -ApplicationId $servicePrincipalConnection.ApplicationId -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
# プレイヤー数確認
$PlayerCheck = Invoke-AzVMRunCommand -ResourceGroupName $ResourceGroupName -VMName $VMName -CommandId 'RunShellScript' -ScriptString 'screen -S minecraft -p 0 -X stuff "list$(echo -ne "\r")" && sleep 2 && screen -S minecraft -X hardcopy /tmp/output && cat /tmp/output | grep "players online"'
# プレイヤーがいない場合のみ停止
if ($PlayerCheck.Value -match "0 of .* players online") {
Stop-AzVM -ResourceGroupName $ResourceGroupName -Name $VMName -Force
Write-Output "VM stopped due to no active players"
} else {
Write-Output "Players online, VM remains running"
}
Reserved Instances とSpot Instances
リザーブドインスタンス計算:
B1s従量課金: ¥1,200/月 × 12ヶ月 = ¥14,400/年
B1s 1年Reserved: ¥10,080/年 (30%割引)
B1s 3年Reserved: ¥7,200/年 (50%割引)
Spot Instance 設定(開発用):
Copy{
"priority": "Spot",
"evictionPolicy": "Deallocate",
"maxPrice": 0.50,
"spotRestorePolicy": {
"enabled": true,
"restoreTimeout": "PT1H"
}
}
8. Azure vs 他社VPS比較
包括的比較
項目 | Azure B1s | XServer VPS | ConoHa VPS | カゴヤ VPS |
---|---|---|---|---|
月額料金 | ¥1,200 | ¥830 | ¥682 | ¥550 |
CPU | 1コア | 2コア | 1コア | 1コア |
メモリ | 1GB | 2GB | 1GB | 1GB |
ストレージ | Premium SSD | NVMe SSD | SSD | SSD |
ネットワーク | 制限あり | 無制限 | 無制限 | 無制限 |
SLA | 99.95% | 99.99% | 99.99% | 99.95% |
グローバル展開 | ✅ | ❌ | ❌ | ❌ |
エンタープライズ機能 | ✅ | △ | △ | △ |
Azure推奨シナリオ
Azureが最適な場合:
- 海外プレイヤーが多い
- エンタープライズ級の可用性が必要
- 他のAzureサービスとの連携
- 高度な監視・分析が必要
- コンプライアンス要件が厳しい
他社VPSが最適な場合:
- 国内プレイヤーのみ
- シンプルな構成で十分
- コスト最優先
- 技術サポートを重視
推奨構成まとめ
小規模サーバー(2-5人):
- Azure: B1s + Standard SSD
- 代替: カゴヤ 1GBプラン
- 推奨: カゴヤ CLOUD VPS
中規模サーバー(5-15人):
- Azure: B2s + Premium SSD
- 代替: エックスサーバー 4GBプラン
- 推奨: エックスサーバー VPS for Game
大規模サーバー(15人以上):
- Azure: D2s_v3 + Ultra SSD
- 代替: ConoHa 8GBプラン
- 推奨: ConoHa for GAME
まとめ
Azure VPSは世界レベルのインフラと豊富な機能を提供しますが、設定の複雑さとコストが課題となる場合があります。Network Security Groupによる高度なセキュリティ、Azure Backupによる企業レベルの災害復旧、Premium SSDによる高性能ストレージなど、エンタープライズ級の機能が魅力です。
Azure VPS選択のポイント:
- グローバル展開: 海外プレイヤーとの低遅延通信
- エンタープライズ機能: 高度な監視・バックアップ・セキュリティ
- スケーラビリティ: 需要に応じた柔軟な拡張
- 統合性: 他のAzureサービスとのシームレス連携
- コンプライアンス: 厳格なデータ保護要件への対応
ただし、国内での小中規模運用では、エックスサーバー VPS for Game、ConoHa for GAME、カゴヤ CLOUD VPSの方がコストパフォーマンスに優れる場合が多いのも事実です。
2025年のマイクラサーバー運用では、要件に応じた適切なプラットフォーム選択が成功の鍵となります。この記事を参考に、最適なインフラを選択してください!
※本記事は2025年7月時点の情報に基づいて執筆されています。Azureの料金体系やサービス内容は変更される可能性があるため、最新情報は公式サイトをご確認ください。
参考リンク:
免責事項: Azure VPSの設定は複雑で、誤った設定により予期しない料金が発生する可能性があります。必ず料金アラートを設定し、テスト環境で十分検証してから本番環境に適用してください。重要なデータは複数の場所にバックアップを取ってください。