- update: tell consul to use docker dns to resolve CNAME addresses

- add: load balancer for consul services
- update: dns lookup to now return the service address
- update: docker consul to the latest version
This commit is contained in:
2025-03-12 15:39:45 -04:00
parent 81068759e5
commit cdf7bb3f15
7 changed files with 173 additions and 24 deletions

View File

@@ -3,6 +3,7 @@ use hickory_resolver::{Resolver, TokioAsyncResolver};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::net::SocketAddr;
use std::str::FromStr;
use tokio::runtime::Runtime;
use tracing::log::debug;
@@ -17,12 +18,12 @@ pub async fn get_service_endpoints_by_dns(consul_url: &str, service_protocol: &s
let srv_record = resolver.srv_lookup(&srv_name).await?;
let mut endpoints = Vec::new();
debug!("service records: {:?}", srv_record);
for record in srv_record {
let hostname = record.target();
debug!("hostname: {:?}", hostname);
// endpoints.push(SocketAddr::new(, record.port()));
let lookup_responses = resolver.lookup_ip(hostname.to_string()).await?;
for response in lookup_responses {
endpoints.push(SocketAddr::from_str(&format!("{}:{}", &response.to_string(), record.port()))?);
}
}
Ok(endpoints)