Replicate instances over multiple hosts #3359
-
Hi guys, I am currently trying to set up the Mimir instances from the demo that replicate data between each other. But instead of setting the containers on one host, I am trying to run them from different EC2 instances for higher availability in case of single instance downtime. The current configuration is as follows: The docker-compose.yml part from the first EC2 instance:
The mimir.yml config from the first machine:
Respectively, the compose part from the second EC2 instance:
The mimir.yml on the second EC2 instance is identical to the first. As expected, the joined instances were 0 due to the port not being exposed, which led to the following warning:
After that I have linked port 7946 from the container to the same port on the host in hope that it will be able to reach eachother, but I had no luck.
When making a request to the hosts' port 7946, I get the following error from mimir:
I have looked into Mirroring requests to a second Mimir cluster using Envoy Proxy, but I would very much like to avoid that and keep the high-availability setup with replication of instances, just on separate hosts. Any suggestions are welcome! |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 3 replies
-
Hey, the port 7946 is not meant to serve HTTP, but the memberlist gossip protocol. It's meant for communication between the 3 Mimir nodes. I believe this is the reason for the last error in your post. I'm trying to understand the problem you are facing - is ingestion not working or can you not query data from the cluster? Regarding the HA setup - running 3 nodes with replication factor of 3 gives you some resilience to failures. I assume the 3 instances run in the same availability zone. If you want to be resilient to AZ failure then you can spin up a second cluster in a different AZ. It's also an option to deploy the 3 instances of that cluster to a different AZ each, but that will have increased network costs compared to running two separate clusters (that's network costs only, excluding compute costs). As for mirroring traffic to two clusters: for writes the easiest way is to configure the clients (e.g. Prometheus or Grafana Agent) to remote-write to both clusters. Then you need not worry about spinning up a proxy. For querying I am aware of promxy which can query multiple prometheus-compatible servers and stitch together the results, but I have not tried it. There may be other alternatives for querying. |
Beta Was this translation helpful? Give feedback.
Hey, the port 7946 is not meant to serve HTTP, but the memberlist gossip protocol. It's meant for communication between the 3 Mimir nodes. I believe this is the reason for the last error in your post.
I'm trying to understand the problem you are facing - is ingestion not working or can you not query data from the cluster?
Regarding the HA setup - running 3 nodes with replication factor of 3 gives you some resilience to failures. I assume the 3 instances run in the same availability zone. If you want to be resilient to AZ failure then you can spin up a second cluster in a different AZ. It's also an option to deploy the 3 instances of that cluster to a different AZ each, but that will have …