Estou configurando um Grupo de Disponibilidade do SQL Server com três réplicas síncronas em um cluster (uma primária e duas secundárias) e uma réplica assíncrona adicional de outro cluster em outro data center. Preciso expor a réplica primária usando um IP público para a réplica assíncrona no cluster remoto.
Meu objetivo é expor a réplica primária com um IP público especificamente para a réplica assíncrona remota. Por outro lado, as outras réplicas síncronas no cluster comunicam-se com a réplica primária usando o nome DNS da réplica primária no cluster.
Ao criar um Grupo de Disponibilidade, preciso especificar a URL do endpoint para cada réplica. É possível usar explicitamente URLs de endpoint diferentes da réplica primária para réplicas diferentes em um Grupo de Disponibilidade do SQL Server? Quero garantir que apenas a réplica assíncrona remota se comunique com a primária usando o IP público. Por outro lado, as outras réplicas no cluster continuam a usar o nome DNS da réplica primária no cluster.
Exemplo: grupo de disponibilidade criado de três nós, mssql-primary-0 e mssql-primary-1 são dois pods em um cluster Kubernetes que se comunicam usando serviço headless (nome DNS do pod). O pod mssql-remote-0 é de outro cluster exposto usando o IP externo do serviço do balanceador de carga.
CREATE AVAILABILITY GROUP [AG1]
WITH (CLUSTER_TYPE = NONE)
FOR REPLICA ON
N'mssql-primary-0'
WITH (
ENDPOINT_URL = N'tcp://mssql-primary-0.headless-service:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
SEEDING_MODE = AUTOMATIC,
FAILOVER_MODE = MANUAL,
SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
),
N'mssql-primary-1'
WITH (
ENDPOINT_URL = N'tcp://mssql-primary-1.headless-service:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
SEEDING_MODE = AUTOMATIC,
FAILOVER_MODE = MANUAL,
SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
),
N'mssql-remote-0'
WITH (
ENDPOINT_URL = N'tcp://172.232.87.37:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
SEEDING_MODE = AUTOMATIC,
FAILOVER_MODE = MANUAL,
SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
);
GO
Quando desejo ingressar no nó remoto (mssql-remote-0), uso este comando.
ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = NONE);
O nó mssql-remote-0 obtém automaticamente o URL do endpoint do nó primário,
ENDPOINT_URL = N'tcp://mssql-primary-0.headless-service:5022'
Existe alguma opção que eu possa fornecer um URL de endpoint diferente da resposta primária (mssql-primary-0), apenas para o nó mssql-remote-0?
Quaisquer informações ou recomendações sobre como alcançar esta configuração serão muito apreciadas.