在ECS Fargate部署ArangoDB集群遇arangod缺失错误的求助
问题:ECS Fargate运行ArangoDB Starter容器提示找不到
/usr/sbin/arangod 我尝试用默认的arangodb/arangodb-starter容器在ECS中创建ArangoDB集群,但启动Fargate类型的ECS任务时,日志报错/usr/sbin/arangod未找到。
操作流程:通过docker pull拉取该镜像,按ECR推送命令打标签后推送到ECR,创建Fargate任务并启动服务,容器启动后日志输出如下:
|INFO| Starting arangodb version 0.15.5, build 7832707 component=arangodb
[ERROR| Cannot find arangod (expected at /usr/sbin/arangod). component=arangodb
How to solve this:
1 - Install ArangoDB locally or run the ArangoDB starter in docker. (see README for details).
本地运行同标签容器一切正常,为何ECS中无法运行?
补充:ECS任务定义
{ "taskDefinitionArn": "arn:aws:ecs:eu-west-1:123456789:task-definition/dev-arangodb-server:1", "containerDefinitions": [ { "name": "dev-arangodb-server", "image": "123456789.dkr.ecr.eu-west-1.amazonaws.com/arangodb:latest", "cpu": 0, "links": [], "portMappings": [ { "containerPort": 8529, "hostPort": 8529, "protocol": "tcp" } ], "essential": true, "entryPoint": [], "command": [], "environment": [ { "name": "ARANGO_ROOT_PASSWORD", "value": "password" } ], "environmentFiles": [], "mountPoints": [ { "sourceVolume": "storage", "containerPath": "/mnt/storage", "readOnly": false } ], "volumesFrom": [], "secrets": [], "dnsServers": [], "dnsSearchDomains": [], "extraHosts": [], "dockerSecurityOptions": [], "dockerLabels": {}, "ulimits": [], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "/ecs/dev-arangodb-server", "awslogs-region": "eu-west-1", "awslogs-stream-prefix": "ecs" }, "secretOptions": [] }, "systemControls": [] } ], "family": "dev-arangodb-server", "taskRoleArn": "arn:aws:iam::123456789:role/dev-aws-ecs-ecr-power-user", "executionRoleArn": "arn:aws:iam::123456789:role/ecsTaskExecutionRole", "networkMode": "awsvpc", "revision": 1, "volumes": [ { "name": "storage", "host": {} } ], "status": "ACTIVE", "requiresAttributes": [ { "name": "com.amazonaws.ecs.capability.logging-driver.awslogs" }, { "name": "ecs.capability.execution-role-awslogs" }, { "name": "com.amazonaws.ecs.capability.ecr-auth" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.19" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.17" }, { "name": "com.amazonaws.ecs.capability.task-iam-role" }, { "name": "ecs.capability.execution-role-ecr-pull" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18" }, { "name": "ecs.capability.task-eni" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.29" } ], "placementConstraints": [], "compatibilities": [ "EC2", "FARGATE" ], "requiresCompatibilities": [ "FARGATE" ], "cpu": "1024", "memory": "3072", "runtimePlatform": { "cpuArchitecture": "X86_64", "operatingSystemFamily": "LINUX" }, "registeredAt": "2022-11-03T08:43:25.264Z", "registeredBy": "arn:aws:iam::123456789:user/MY_USER", "tags": [ { "key": "ecs:taskDefinition:createdFrom", "value": "ecs-console-v2" }, { "key": "ecs:taskDefinition:stackId", "value": "arn:aws:cloudformation:eu-west-1:123456789:stack/ECS-Console-V2-TaskDefinition-e1519bf7-ff78-423a-951d-2bc8d79242ec/925d88d0-5b53-11ed-97a3-066ee48e3b9b" } ] }
解决方案
- 镜像类型误用:
arangodb/arangodb-starter是集群管理启动器,本身不含arangod二进制文件。它的作用是编排ArangoDB节点容器,而非直接运行数据库服务。本地运行可能因额外挂载或配置掩盖了问题,ECS中直接启动则暴露此核心问题。 - 替换为标准服务镜像:将任务定义中的镜像改为
arangodb/arangodb(这是包含完整ArangoDB服务的镜像),即可正常启动单个数据库节点。 - 若需用starter搭建集群:需在容器
command字段添加集群启动参数,例如:
同时要注意:Fargate不支持["--starter.mode=cluster", "--starter.address=$(curl -s $ECS_CONTAINER_METADATA_URI_V4 | jq -r '.Networks[0].IPv4Addresses[0]')"]host类型卷,需将存储替换为EFS卷;确保任务角色有权限访问ECS元数据服务(Fargate默认支持)。 - 验证镜像一致性:本地直接运行ECR中的镜像(不带任何额外参数):
docker run 123456789.dkr.ecr.eu-west-1.amazonaws.com/arangodb:latest,确认是否同样报错,排查镜像推送是否正确。
内容的提问来源于stack exchange,提问作者Flo
相关产品推荐
相关产品推荐

