我正在尝试使用Aerospike Docker容器,同时python应用程序也运行相同的docker网络。以下是docker compose文件。
aerospike:
image: aerospike/aerospike-server
volumes:
- "./aerospikeconfig:/opt/aerospike/etc"
environment:
config-file: /opt/aerospike/etc/aerospike.conf
rtbconsumer:
image: abhinav054/rtb_consumer:trending
depends_on:
- aerospike
- kafka
environment:
CONSUMER_ID: "rtb_aerospike_2"
HOST: "kafka:9092"
TOPIC: "rtb-logs"
AEROSPIKE_HOST: "aerospike:3000"
因此,在我的脚本中,我使用以下给定配置连接Aerospike
config = {
'hosts':[('aerospike', 3000)],
'policies': {
'timeout': 1000 # milliseconds
}
}
我得到的错误是exception.ConnectionError:(-10,'无法连接','src / main / aerospike / as_cluster.c',254,False)
有人可以帮我解决问题。
您可以尝试在docker-compose中创建overlay network并相应地调整aerospike.conf接口地址绑定。Aerospike回购有一个使用docker swam的示例。
aerospike:
image: aerospike/aerospike-server
volumes:
- "./aerospikeconfig:/opt/aerospike/etc"
environment:
config-file: /opt/aerospike/etc/aerospike.conf
networks:
- aerospikenet
rtbconsumer:
image: abhinav054/rtb_consumer:trending
depends_on:
- aerospike
- kafka
environment:
CONSUMER_ID: "rtb_aerospike_2"
HOST: "kafka:9092"
TOPIC: "rtb-logs"
AEROSPIKE_HOST: "aerospike:3000"
networks:
- aerospikenet
networks:
aerospikenet:
driver: overlay
attachable: true
回答您的问题,这也应该解决您的问题:
@@ QuintenScheppermans不是默认的网桥,我对网络有点生锈。你能寄一些样品吗?
是,容器会自动添加到默认网桥网络。但是,Docker不支持默认网桥网络上的自动服务发现。如果希望容器能够通过容器名称解析IP地址,则应改用用户定义的网络。
这正是您在这里所做的:
config = {
'hosts':[('aerospike', 3000)],
'policies': {
'timeout': 1000 # milliseconds
}
}
因此您确实需要配置用户定义的网络。对于单个主机网络,建议使用桥接网络(例如您的情况)建议将重叠网络用于多个主机网络。
您可以使用Ivolmar的答案并将其切换到网桥网络。如果您不需要,则不需要使用docker swarm。