hashicorp / hashicorp/consul

Supporting configuration for azure container apps

Open
#21,793 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
30.1k
Forks
4.6k
Avg merge
1d 18h
Merged PRs (30d)
39

Description

Hey All,

I use consul as a service registry for my spring boot applications and they are all deployed on azure container apps. The problem here is, that I'm unable to scale up the consul servers because the servers need to be inter-joined and to do so, we do not have a static IP, consul deployed on ACA will have dynamic IP's that concludes we cannot make use of retry join mechanism. Anyways I have faced lot of challenges and now I'm able to join the servers using the host address of the ACA, I fetch the IP address of the node that ACA is routing to, using url generated by ACA itself and join the servers using consul join method. Since the services will get registered to a specific node and when the traffic routes to different node, it will throw an error

2024-09-21 04:35:38.748 ERROR [fmpGateway,,,] 1 --- [pool-3-thread-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
com.ecwid.consul.v1.OperationException: OperationException(statusCode=404, statusMessage='Not Found', statusContent='Unknown check ID "service:fmpgateway-dae6c10643c84e69ff35b3a050277569". Ensure that the check ID is passed, not the check name.')
at com.ecwid.consul.v1.agent.AgentConsulClient.agentCheckPass(AgentConsulClient.java:211)
at com.ecwid.consul.v1.agent.AgentConsulClient.agentCheckPass(AgentConsulClient.java:198)
at com.ecwid.consul.v1.agent.AgentConsulClient.agentCheckPass(AgentConsulClient.java:193)
at com.ecwid.consul.v1.ConsulClient.agentCheckPass(ConsulClient.java:259)
at org.springframework.cloud.consul.discovery.TtlScheduler$ConsulHeartbeatTask.run(TtlScheduler.java:95)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)



So inorder to rectify this problem, is there any solution that is already present?

Contributor guide

Open the contributing guide

Research direction

Start by reviewing Consul's configuration for Azure Container Apps and the Spring Cloud Consul TTL heartbeat flow shown in the stack trace. Compare retry-join and service-check behavior with ACA's dynamic routing; done means identifying an existing supported configuration or defining a clearly scoped change.

Written by the indexing model from the issue text.

Assessment

Tech stack
azure, java, spring-boot
Domain
cloud, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.