É possível usar várias opções diferentes para controlar quando os shards
são posicionados em vários servidores de contêiner na configuração. Durante
a inicialização, você pode optar por atrasar o posicionamento de shards. Quando você
estiver executando todos os seus servidores de contêiner, poderá precisar suspender,
retomar ou alterar o posicionamento enquanto mantém os servidores.
Procedimento
Controlando o posicionamento durante a inicialização
É possível controlar
quando os shards começam a ser posicionados enquanto seu ambiente está iniciando.
Algum controle está ativo por padrão. Se você não executar nenhuma ação
para controlar o posicionamento, os shards começarão a ser posicionados imediatamente. Quando
os shards são posicionados imediatamente, eles podem não ser posicionados uniformemente
conforme os servidores de contêiner subsequentes iniciam e operações de posicionamento
adicionais são executadas para equilibrar a distribuição.
- Suspenda temporariamente o balanceamento de shards para evitar
o posicionamento de shard imediato quando seus servidores de contêiner estão iniciando.
Antes de iniciar seus servidores de contêiner, use o comando xscmd
-c suspendBalancing para parar o balanceamento de shards
para uma grade de dados e um conjunto de mapas específicos. Após os servidores de contêiner
serem iniciados, é possível usar o comando xscmd -c resumeBalancing
para iniciar o posicionamento de shards nos servidores de contêiner.
- Configure a propriedade placementDeferralInterval.
A propriedade placementDeferralInterval
minimiza o número de ciclos de posicionamento de shard nos servidores de contêiner.
O posicionamento de shard é acionado no intervalo de tempo definido.
Configure
a propriedade placementDeferralInterval no
arquivo de propriedades do servidor para o servidor de catálogos. Se estiver usando
a API do servidor integrado, use o método setPlacementDeferralInterval
na interface CatalogServerProperties. Esta
propriedade configura vários milissegundos antes de os shards serem posicionados
nos servidores de contêiner. O valor padrão para esta propriedade é 15 segundos.
Com o valor padrão, quando um servidor de contêiner é iniciado, o posicionamento
não é iniciado até após o tempo especificado na propriedade terpassado. Se diversos servidores de contêiner estiverem iniciando sucessivamente,
o cronômetro do intervalo de adiamento será reconfigurado se um novo servidor de
contêiner for iniciado dentro do intervalo determinado. Por exemplo, se um segundo servidor de contêiner
iniciar 10 segundos depois que o primeiro servidor de contêiner, o posicionamento
não será iniciado até 15 segundos após o segundo servidor de contêiner ser iniciado.
No entanto, se um terceiro servidor de contêiner iniciar 20 segundos após o segundo
servidor de contêiner, o posicionamento já iniciou nos primeiros dois servidores de
contêiner.
Quando servidores de contêiner se tornam indisponíveis, o posicionamento
é acionado assim que o servidor de catálogos tem conhecimento do evento de
forma que a recuperação possa ocorrer o mais rapidamente possível.
É
possível usar as seguintes dicas para ajudar a determinar se seu valor de adiamento
de posicionamento está configurado com a quantidade correta de tempo:
- Já que você inicia simultaneamente os servidores de contêiner, consulte as mensagens CWOBJ1001
no arquivo SystemOut.log para cada servidor de
contêiner. O registro de data e hora destas mensagens em cada arquivo de log do servidor de
contêiner indica o horário de início do servidor de contêiner real. Você pode considerar
ajustar a propriedade placementDeferralInterval
para incluir mais inícios do servidor de contêiner. Por exemplo, se o primeiro
servidor de contêiner inicia 90 segundos antes do último servidor de contêiner, você pode configurar a propriedade como 90 segundos.
- Observe por quanto tempo as mensagens CWOBJ1511 ocorrem depois
das mensagens CWOBJ1001. Este período de tempo pode indicar
se o adiamento ocorreu com êxito.
- Se você estiver usando um ambiente de desenvolvimento, considere o comprimento
do intervalo quando estiver testando seu aplicativo.
- Configure o atributo numInitialContainers.
Se você usou anteriormente o atributo numInitialContainers,
poderá continuar usando o atributo. No entanto, o uso dos comandos xscmd
-c suspendBalancing e xscmd -c resumeBalancing
seguidos pelo placementDeferralInterval é
sugerido sobre o atributo numInitialContainers
para controlar o posicionamento. O atributo numInitialContainers
especifica o número de servidores de contêiner que são necessários antes do
posicionamento inicial ocorrer para os shards neste elemento mapSet. O atributo numInitialContainers
está no arquivo XML do descritor da política de implementação. Se você tiver numInitialContainers e placementDeferralInterval configurados, observe que até que o valor de numInitialContainers
ser atendido, nenhum posicionamento ocorre, independentemente do valor da propriedade placementDeferralInterval.
Controlando o posicionamento após a inicialização inicial
- Force a ocorrência do posicionamento.
É possível usar o comando xscmd
-c triggerPlacement -g my_OG -ms my_Map_Set, em que my_OG e my_Map_Set são
configurados com valores para sua grade de dados e seu conjunto de mapas, para forçar que o posicionamento ocorra durante um ponto no tempo no qual o posicionamento pode não ocorrer de outra forma.
Por exemplo, você pode executar esse comando quando o período de tempo especificado pela propriedade placementDeferralInterval ainda
não passou ou quando o balanceamento é suspenso.
- Redesigne um shard primário.
Use o comando xscmd
-c swapShardWithPrimary para designar um shard de réplica
para ser o novo shard primário. O shard primário anterior se torna uma
réplica.
- Rebalanceie os shards primários e de réplica.
Use
o comando xscmd -c balanceShardTypes para ajustar
a proporção de shards primários e de réplica para ser equitativa entre
os servidores de contêiner em execução na configuração. A proporção é consistente
dentro de um shard em cada servidor de contêiner.
- Suspenda ou retome o posicionamento.
Use o comando
xscmd
-c suspendBalancing ou o comando
xscmd -c resumeBalancing
para parar e iniciar o balanceamento de shards para uma grade de dados e
um conjunto de mapas específicos. Quando o balanceamento tiver sido suspenso, as ações de posicionamento
a seguir ainda poderão ser executadas:
- A promoção de shard pode ocorrer quando os servidores de contêiner falham.
- A troca de função de shard com o comando xscmd -c swapShardWithPrimary.
- O balanceamento acionado pelo posicionamento de shard com o comando xscmd -c
triggerPlacement -g myOG -ms myMapSet.
O que Fazer Depois
É possível monitorar o posicionamento no ambiente com o comando
xscmd
-c placementServiceStatus.