- 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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user