chore: make internal grpc optional (#6789)

* chore: make internal grpc optional

Signed-off-by: discord9 <discord9@163.com>

* revert sqlness runner too

Signed-off-by: discord9 <discord9@163.com>

---------

Signed-off-by: discord9 <discord9@163.com>
This commit is contained in:
discord9
2025-08-22 12:22:49 +08:00
committed by Ning Sun
parent c9bc3de9aa
commit c69c40a9ee
6 changed files with 14 additions and 37 deletions

View File

@@ -49,7 +49,7 @@ pub struct FrontendOptions {
pub grpc: GrpcOptions,
/// The internal gRPC options for the frontend service.
/// it provide the same service as the public gRPC service, just only for internal use.
pub internal_grpc: GrpcOptions,
pub internal_grpc: Option<GrpcOptions>,
pub mysql: MysqlOptions,
pub postgres: PostgresOptions,
pub opentsdb: OpentsdbOptions,
@@ -77,7 +77,7 @@ impl Default for FrontendOptions {
heartbeat: HeartbeatOptions::frontend_default(),
http: HttpOptions::default(),
grpc: GrpcOptions::default(),
internal_grpc: GrpcOptions::internal_default(),
internal_grpc: None,
mysql: MysqlOptions::default(),
postgres: PostgresOptions::default(),
opentsdb: OpentsdbOptions::default(),

View File

@@ -56,10 +56,14 @@ impl HeartbeatTask {
resp_handler_executor: HeartbeatResponseHandlerExecutorRef,
) -> Self {
HeartbeatTask {
peer_addr: addrs::resolve_addr(
&opts.internal_grpc.bind_addr,
Some(&opts.internal_grpc.server_addr),
),
// if internal grpc is configured, use its address as the peer address
// otherwise use the public grpc address, because peer address only promises to be reachable
// by other components, it doesn't matter whether it's internal or external
peer_addr: if let Some(internal) = &opts.internal_grpc {
addrs::resolve_addr(&internal.bind_addr, Some(&internal.server_addr))
} else {
addrs::resolve_addr(&opts.grpc.bind_addr, Some(&opts.grpc.server_addr))
},
meta_client,
report_interval: heartbeat_opts.interval.as_millis() as u64,
retry_interval: heartbeat_opts.retry_interval.as_millis() as u64,

View File

@@ -218,11 +218,11 @@ where
handlers.insert((Box::new(grpc_server), grpc_addr));
}
if opts.meta_client.is_some() {
if let Some(internal_grpc) = &opts.internal_grpc {
// Always init Internal GRPC server
let grpc_addr = parse_addr(&opts.internal_grpc.bind_addr)?;
let grpc_addr = parse_addr(&internal_grpc.bind_addr)?;
let grpc_server = self.build_grpc_server(
&opts.grpc,
internal_grpc,
&opts.meta_client,
Some("INTERNAL_GRPC_SERVER".to_string()),
false,

View File

@@ -445,10 +445,7 @@ impl GreptimeDbClusterBuilder {
}
fn build_frontend_options(&self) -> FrontendOptions {
let mut fe_opts = FrontendOptions {
meta_client: Some(Default::default()),
..Default::default()
};
let mut fe_opts = FrontendOptions::default();
// Choose a random unused port between [14000, 24000] for local test to avoid conflicts.
let port_range = 14000..=24000;
@@ -466,11 +463,6 @@ impl GreptimeDbClusterBuilder {
fe_opts.grpc.bind_addr = construct_addr(grpc_port);
fe_opts.grpc.server_addr = construct_addr(grpc_port);
let internal_grpc_port =
self.choose_random_unused_port(port_range.clone(), max_attempts, localhost);
fe_opts.internal_grpc.bind_addr = construct_addr(internal_grpc_port);
fe_opts.internal_grpc.server_addr = construct_addr(internal_grpc_port);
fe_opts.mysql.addr = construct_addr(self.choose_random_unused_port(
port_range.clone(),
max_attempts,

View File

@@ -1,7 +1,3 @@
[grpc]
bind_addr = "{grpc_addr}"
server_addr = "{grpc_addr}"
[internal_grpc]
bind_addr = "{internal_grpc_addr}"
server_addr = "{internal_grpc_addr}"

View File

@@ -60,7 +60,6 @@ pub enum ServerMode {
Frontend {
http_addr: String,
rpc_bind_addr: String,
internal_rpc_bind_addr: String,
mysql_addr: String,
postgres_addr: String,
metasrv_addr: String,
@@ -101,8 +100,6 @@ struct ConfigContext {
metasrv_addr: String,
// for frontend and standalone
grpc_addr: String,
// for frontend in distributed mode
internal_grpc_addr: String,
// for standalone
mysql_addr: String,
// for standalone
@@ -127,14 +124,12 @@ impl ServerMode {
pub fn random_frontend(metasrv_port: u16) -> Self {
let http_port = get_unique_random_port();
let rpc_port = get_unique_random_port();
let internal_rpc_port = get_unique_random_port();
let mysql_port = get_unique_random_port();
let postgres_port = get_unique_random_port();
ServerMode::Frontend {
http_addr: format!("127.0.0.1:{http_port}"),
rpc_bind_addr: format!("127.0.0.1:{rpc_port}"),
internal_rpc_bind_addr: format!("127.0.0.1:{internal_rpc_port}"),
mysql_addr: format!("127.0.0.1:{mysql_port}"),
postgres_addr: format!("127.0.0.1:{postgres_port}"),
metasrv_addr: format!("127.0.0.1:{metasrv_port}"),
@@ -329,15 +324,6 @@ impl ServerMode {
instance_id: id,
metasrv_addr,
grpc_addr,
internal_grpc_addr: if let ServerMode::Frontend {
internal_rpc_bind_addr,
..
} = self
{
internal_rpc_bind_addr.clone()
} else {
String::new()
},
mysql_addr,
postgres_addr,
};
@@ -395,7 +381,6 @@ impl ServerMode {
ServerMode::Frontend {
http_addr,
rpc_bind_addr,
internal_rpc_bind_addr: _,
mysql_addr,
postgres_addr,
metasrv_addr,