Closed17

Azureでマイクラ鯖をホストする作業ログ

にー兄さんにー兄さん

記事作成のために、くらでべチャンネルでやってた
マイクラ鯖のAzureへのデプロイについて、
りおさん謹製スクリプトを使わず、その中身を参考にしながら手を動かして
マイクラ鯖をデプロイしてみます

にー兄さんにー兄さん

実は一回やったことはあるので、それをより分かりやすくするように記事を書きたい

にー兄さんにー兄さん

いまのところ、

  • リソースグループの作成
  • ストレージアカウントの作成
  • ファイルシェアの作成
    までは普通にPotalで簡単にできるんだが、
    Azure Container Instancesでファイルシェアをボリュームにマウントする場合
    Portalだとできる手段が見つからなかった
にー兄さんにー兄さん

手段としては

  • azコマンドでスクリプト書く→くらでべそのままでいける
  • Resource Manager templateで作る→Portalで完結する
にー兄さんにー兄さん

話は戻るが、dockerファイルのほうをよく見てみると
環境変数を設定してやることによっていろいろマイクラ鯖の設定をいじれそうなのである

りおさんはdockerファイルを作る時点でメモリの制限を指定しているが
実はもとのdockerリポジトリのほうで、のちに環境変数をいじれるようになったらしい
いいね

にー兄さんにー兄さん

ストレージアカウントを作っていく
りおさんのスクリプトを見てみると、Premium_LRSという文字列があったので
おそらくパフォーマンスがpremiumでレプリケーションがLRS(ローカル冗長ストレージ)のことなんだと思うけどLRSが良くわからん

にー兄さんにー兄さん

次にストレージアカウントでファイル共有を設定していく
名前を指定して、クオータは特に指定しなかった

にー兄さんにー兄さん

次にContainer Instancesのリソースを作っていく。
azコマンドを使った場合は以下になるので、これと同じように設定していく

az container create --image rioriost/minecraft-server -g $ACI_RES_GRP -n $ACI_CNT_NAME \
	--ip-address Public --ports 25565 25575 \
	--dns-name-label $ACI_CNT_NAME \
	--cpu 2 --memory 8 \
	-e EULA=TRUE ENABLE_RCON=true \
	RCON_PASSWORD=$RCON_PASSWORD \
	--azure-file-volume-account-name $ACI_STR_AN \
	--azure-file-volume-account-key "$STORAGE_KEY" \
	--azure-file-volume-share-name $ACI_STR_SH_NAME \
	--azure-file-volume-mount-path /data/ \
	-o tsv --query "provisioningState"

必要なのは、

  • image→dockerhubから指定
  • リソースグループ
  • コンテナの名前
  • ipアドレスの公開→publicに設定
  • ポート番号→25565、25575を指定
  • DNS名前ラベル→これがurlになりそう
  • CPUとメモリ→1コア2GBとかにする
  • 環境変数
    • EULA=TRUE
    • ENABLE_RCON=true
    • RCON_PASSWORD
    • MEMORYなんちゃら
    • VERSION=1.16.4
    • SEED適当に
  • Volume系
    • アカウント名→たぶんストレージアカウント名
    • ShareName→ファイル共有名
    • mount path→/data/

ボリューム関係はこんな感じになりそう

"volumes": [
          {
            "name": "filesharevolume",
            "azureFile": {
                "shareName": "acishare",
                "storageAccountName": "<Storage account name>",
                "storageAccountKey": "<Storage account key>"
            }
          }
        ]
にー兄さんにー兄さん

リソースの作成からテンプレートのデプロイ
エディター独自でテンプレートを作成するを選ぶ

ここからjsonをこぴってきて張り付ける

にー兄さんにー兄さん
{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "containername": "ninisan-minecraft-container",
    "containerimage": "itzg/minecraft-server"
  },
  "resources": [
    {
      "name": "ninisan-minecraft-container",
      "type": "Microsoft.ContainerInstance/containerGroups",
      "apiVersion": "2019-12-01",
      "location": "[resourceGroup().location]",
      "properties": {
        "containers": [
          {
            "name": "[variables('containername')]",
            "properties": {
              "image": "[variables('containerimage')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 2
                }
              },
              "volumeMounts": [
                {
                  "name": "filesharevolume",
                  "mountPath": "/data"
                }
              ],
			  "environmentVariables":[
				  {
					  "name": "EULA",
					  "value": "TRUE"
				  },
				  {
					  "name": "ENABLE_RCON",
					  "value": "true"
				  },
				  {
					  "name": "RCON_PASSWORD",
					  "value": ""
				  },
				  {
					  "name": "MEMORY",
					  "value": "2G"
				  },
				  {
					  "name": "VERSION",
					  "value": "1.16.4"
				  },
				  {
					  "name": "SEED",
					  "value": "0123456789"
				  }
			  ]
            }
          }
        ],
        "osType": "Linux",
        "ipAddress": {
          "type": "Public",
          "ports": [
            {
              "protocol": "tcp",
              "port": "25565"
            },
			            {
              "protocol": "tcp",
              "port": "25575"
            }
          ],
          "dnsNameLabel": ""
        },
        "volumes": [
          {
            "name": "filesharevolume",
            "azureFile": {
                "shareName": "minecraft-file-share",
                "storageAccountName": "ninisanminecraft",
                "storageAccountKey": ""
            }
          }
        ]
      }
    }
  ]
}
にー兄さんにー兄さん
{
    "status": "Failed",
    "error": {
        "code": "UnreferencedIpAddressPorts",
        "message": "'ipAddress' の次のポート '25565,25575' は、コンテナー グループ 'ninisan-minecraft-container' のどのコンテナーでも使用されていません。"
    }
}

こういわれてしまった

にー兄さんにー兄さん

コンテナのプロパティにport二つを含めたところ、なんかいい感じにデプロイができたかもしれない

このスクラップは2020/12/19にクローズされました