Aerospike Docker连接使用Docker服务名被拒绝

时间:2019-11-26 15:12:34

标签: python docker aerospike

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

有人可以帮我解决问题吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试在docker-compose中创建overlay network并相应地调整aerospike.conf接口地址绑定。 Aerospike回购有一个使用docker swam的示例。


fun updateItems(itemList: List<ItemDto>) {
        val readDate = DateUtils.getCurrentDateUTCtoString()
        ???SCOPE???.launch(Dispatchers.IO) {
            for (item in itemList)
                item.readDate = readDate
            itemDao.updateItems(itemList)
        }
    }

答案 1 :(得分:1)

针对您的问题,这也应该可以解决您的问题:

  

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

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

这正是您在这里所做的:

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

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

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