Aerospike泊坞窗连接使用泊坞窗服务名称拒绝

问题描述 投票:1回答:2

我正在尝试使用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)

有人可以帮我解决问题。

python docker aerospike
2个回答
1
投票

您可以尝试在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

0
投票

回答您的问题,这也应该解决您的问题:

@@ QuintenScheppermans不是默认的网桥,我对网络有点生锈。你能寄一些样品吗?

是,容器会自动添加到默认网桥网络。但是,Docker不支持默认网桥网络上的自动服务发现。如果希望容器能够通过容器名称解析IP地址,则应改用用户定义的网络。

这正是您在这里所做的:

config = { 
  'hosts':[('aerospike', 3000)],
  'policies': {
    'timeout': 1000 # milliseconds
  }
}

因此您确实需要配置用户定义的网络。对于单个主机网络,建议使用桥接网络(例如您的情况)建议将重叠网络用于多个主机网络。

您可以使用Ivolmar的答案并将其切换到网桥网络。如果您不需要,则不需要使用docker swarm。

© www.soinside.com 2019 - 2024. All rights reserved.