0

I have a docker image based on semitechnologies/weaviate stored on AWS Elastic Container Registry, and I'm trying to deploy it as a multi-node setup using AppRunner.

My problem is that the service never actually starts... Regardless of whether I set the network endopoint to public or private VPC based, I'm getting an IP address related error like this:

03-19-2023 10:01:23 PM {"action":"startup","error":"create member list: Failed to get final advertise address: No private IP address found, and explicit IP not provided","level":"error","msg":"could not init cluster state","time":"2023-03-19T21:01:23Z"}
03-19-2023 10:01:23 PM {"action":"memberlist_init","bind_port":7946,"error":"Failed to get final advertise address: No private IP address found, and explicit IP not provided",...

Based on what I've seen, this is an error specific to WEAVIATE... Here is the Dockerfile based on which I created the image:

FROM semitechnologies/weaviate:1.17.4

ENV QUERY_DEFAULTS_LIMIT=25
ENV AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true
ENV PERSISTENCE_DATA_PATH=/var/lib/weaviate
ENV DEFAULT_VECTORIZER_MODULE=text2vec-openai
ENV ENABLE_MODULES=text2vec-openai
ENV CLUSTER_HOSTNAME='weaviate-node1'
ENV CLUSTER_GOSSIP_BIND_PORT=7946
ENV CLUSTER_DATA_BIND_PORT=7947

COPY ./weaviate-vectors /var/lib/weaviate

EXPOSE 8080 7946 7947

CMD ["--host", "0.0.0.0", "--port", "8080", "--scheme", "http"]

I've tried various configurations on AWS (e.g., public endpoint, private VPC based endpoint with a host address from its CIDR block), and I've been searching everywhere for an environment variable for the "member list advertise address", to no avail.

A. Csapo
  • 21
  • 2
  • So, it seems that this error is not related to Weaviate directly, but to hashicorp/memberlist, which references hashicorp/go-sockaddr. It's the memberlist library that tries to select a "final advertise address", unless it is passed one as an argument. Since Weaviate does not allow one to specify such an address (i.e., it passes no suitable parameter to memberlist), memberlist then turns to the go-sockaddr library to try to find a suitable IP address automatically. This is the step that fails on AWS AppRunner. So the question, then, is: how can I make sure that a suitable IP is found? – A. Csapo Mar 21 '23 at 17:34
  • Did you ever figure it out or have a pointer? I am running into the same issue – superfuzzy May 11 '23 at 17:04

0 Answers0