Distribuir um cluster por meio da API
Nesta página
- A autenticação OAuth 2.0 para acesso programático ao Cloud Manager está disponível como um recurso de visualização.
- O recurso e a documentação correspondente podem mudar a qualquer momento durante o período de Pré-visualização. Para usar a 2.0 autenticação OAuth, crie uma conta de serviço para usar em suas solicitações para a API pública do Cloud Manager .
Este tutorial manipula a configuração de automação da API de administração do Cloud Manager para implementar um cluster fragmentado que pertence a outro usuário. O tutorial primeiro cria um novo projeto, depois um novo usuário como proprietário do projeto e, em seguida, um cluster fragmentado de propriedade do novo usuário. Você pode criar um script para automatizar esses procedimentos para uso em operações de rotina.
Para executar estas etapas, você deve ter acesso suficiente ao Cloud Manager. Um usuário com o role Project Owner
tem acesso suficiente.
Os procedimentos instalam um cluster com dois fragmentos. Cada shard compreende um conjunto de réplicas de três membros. O tutorial instala um mongos
e três servidores de configuração. Cada componente do cluster reside em seu próprio servidor, exigindo um total de 10 hosts.
O tutorial instala o MongoDB Agent em cada host.
Pré-requisitos
Provisione dez hosts para atender aos componentes do cluster fragmentado. Para obter os requisitos de host, consulte as Notas de produção no manual do MongoDB.
Cada host deve fornecer a seu MongoDB Agent acesso total de rede aos nomes de host e portas dos MongoDB Agent em todos os outros hosts. Cada agente executa o comando hostname -f
para identificar automaticamente seu nome de host e porta e comunicá-los ao Cloud Manager.
Dica
Para garantir que os agentes possam entrar em contato uns com os outros, provisione os hosts usando a Automação . Isso instala os MongoDB Agents com o acesso correto à rede. Use este tutorial para reinstalar as automações nessas máquinas.
Exemplos
Conforme você trabalha com a API, você pode visualizar exemplos na Github página de exemplo do .
Variáveis para recursos de API de criação de cluster
Os recursos da API usam uma ou mais dessas variáveis. Substitua essas variáveis pelos valores desejados antes de chamar esses recursos da API.
Nome | Tipo | Descrição |
---|---|---|
PUBLIC-KEY | string | Sua chave de API pública para suas credenciais de API. |
PRIVATE-KEY | string | Sua chave de API privada para suas credenciais de API . |
cloud.mongodb.com | string | URL da sua instância do Cloud Manager. |
GROUP-ID | string | Identificador único do seu projeto a partir das configurações do projeto. |
Pré-requisitos
Configure o acesso à API para permitir que você use a API.
Conclua os pré- requisitos do MongoDB Agent.
Procedimentos
Criar o grupo e o usuário por meio da API
Use a API para criar um projeto.
Use a API de administração do Cloud Manager para enviar um documento de projetos para criar o novo projeto.
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Content-Type: application/json" \ --request POST "https://cloud.mongodb.com/api/public/v1.0/groups?pretty=true" \ --data ' { "name": "{GROUP-NAME}" }'
A API retorna um documento que inclui o agentApiKey
e o id
do projeto.
Use a API para criar um usuário no novo projeto.
Use o endpoint /users
para adicionar um usuário ao novo projeto.
O corpo da solicitação deve conter um documento JSON do usuário com as informações do usuário.
Defina o do usuário roles.roleName
como GROUP_OWNER
e o do usuário roles.groupId
como o do novoid
grupo.
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header 'Accept: application/json' \ --header "Content-Type: application/json" \ --request POST "https://cloud.mongodb.com/api/public/v1.0/users?pretty=true" \ --data ' { "username": "<new_user@example.com>", "emailAddress": "<new_user@example.com>", "firstName": "<First>", "lastName": "<Last>", "password": "<password>", "roles": [{ "groupId": "{PROJECT-ID}", "roleName": "GROUP_OWNER" }] }'
Instale o MongoDB Agent em cada host provisionado
Conclua o procedimento de instalação do MongoDB Agent em cada host.
Para aprender como instalar o MongoDB Agent, siga o procedimento para a plataforma apropriada.
Confirme o estado inicial da configuração da automação.
Quando o MongoDB Agent é executado pela primeira vez, ele baixa o arquivo mms-cluster-config-backup.json
, que descreve o estado desejado da configuração de automação.
Em um dos hosts, navegue até /var/lib/mongodb-mms-automation/
e abra mms-cluster-config-backup.json
. Confirme se o campo version
do arquivo está definido como 1
. O Cloud Manager incrementa automaticamente este campo à medida que as alterações ocorrem.
Implementar o novo cluster
Para adicionar ou atualizar um sistema, recupere a configuração, faça as alterações conforme necessário e envie a configuração atualizada pela API para o Cloud Manager.
O procedimento a seguir implementa uma configuração de automação atualizada por meio da API:
Recupere e valide a configuração de automação do Cloud Manager.
Use o recurso automationConfig para recuperar a configuração. Emita o seguinte comando, substituindo os espaços reservados pelos variáveis para recursos de API de criação de cluster.
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --request GET "https://cloud.mongodb.com/api/public/v1.0/groups/{PROJECT-ID}/automationConfig?pretty=true" \ --output currentAutomationConfig.json Valide o arquivo de configuração de automação baixado.
Compare o campo
version
docurrentAutomationConfig.json
com o do arquivo de backup da Configuração de Automação,mms-cluster-config-backup.json
. O valorversion
é o último elemento em ambos os documentos JSON . Você pode encontrar este arquivo em qualquer host que execute o MongoDB agente em:Linux e macOS:
/var/lib/mongodb-mms-automation/mms-cluster-config-backup.json
Windows:
%SystemDrive%\MMSAutomation\versions\mms-cluster-config-backup.json
Se os valores
version
corresponderem, você estará trabalhando com a versão atual do arquivo de configuração de automação.
Crie o nível superior da nova configuração de automação.
Crie um documento com os seguintes campos. Ao criar o documento de configuração, consulte a descrição de uma configuração de automação para obter explicações detalhadas das configurações. Para obter exemplos, consulte a página Laboratórios do MongoDB.
1 { 2 "options": { 3 "downloadBase": "/var/lib/mongodb-mms-automation", 4 }, 5 "mongoDbVersions": [], 6 "monitoringVersions": [], 7 "backupVersions": [], 8 "processes": [], 9 "replicaSets": [], 10 "sharding": [] 11 }
Adicione o Monitoramento à configuração de automação.
No campo monitoringVersions.hostname
, insira o nome do host do servidor onde o Cloud Manager deve instalar o Monitoramento. Use o nome de domínio totalmente qualificado que a execução hostname -f
no servidor retorna, como a seguir:
1 "monitoringVersions": [ 2 { 3 "hostname": "<server_x.example.com>", 4 "logPath": "/var/log/mongodb-mms-automation/monitoring-agent.log", 5 "logRotate": { 6 "sizeThresholdMB": 1000, 7 "timeThresholdHrs": 24 8 } 9 } 10 ]
Este exemplo de configuração também inclui o campo logPath
, que especifica o local do registro, e logRotate
, que especifica os limites do registro.
Adicione os servidores à configuração de automação.
Esse cluster fragmentado tem 10 instâncias do MongoDB, conforme descrito em Implementar um cluster por meio da API, cada uma executada em seu próprio servidor. Assim, a matriz processes
da configuração de automação terá 10 documentos, um para cada instância do MongoDB.
O exemplo a seguir adiciona o primeiro documento à array processes
. Substitua <process_name_1>
por qualquer nome que você escolher e substitua <server1.example.com>
pelo FQDN do host.
Adicione 9 documentos: um para cada instância do MongoDB em seu cluster fragmentado.
Especifique a sintaxe args2_6
para o campo processes.<args>
. O objeto processes.args2_6
aceita a maioria das configurações e parâmetros do MongoDB para as versões 2.6 e posterior do MongoDB. Para saber mais, consulte Configurações do MongoDB e suporte de automação.
1 "processes": [ 2 { 3 "version": "4.0.6", 4 "name": "<process_name_1>", 5 "hostname": "<server1.example.com>", 6 "logRotate": { 7 "sizeThresholdMB": 1000, 8 "timeThresholdHrs": 24 9 }, 10 "authSchemaVersion": 5, 11 "featureCompatibilityVersion": "4.0", 12 "processType": "mongod", 13 "args2_6": { 14 "net": { 15 "port": 27017 16 }, 17 "storage": { 18 "dbPath": "/data/" 19 }, 20 "systemLog": { 21 "path": "/data/mongodb.log", 22 "destination": "file" 23 }, 24 "replication": { 25 "replSetName": "rs1" 26 } 27 } 28 }, 29 ]
Adicione a topologia do cluster fragmentado à configuração de automação.
Adicione dois documentos de conjunto de réplicas à array replicaSets
. Adicione três membros a cada documento.
Exemplo
Esta seção adiciona um membro do conjunto de réplicas ao primeiro documento do conjunto de réplicas:
Importante
Você deve incluir "protocolVersion": 1
no documento raiz para cada conjunto de réplicas.
1 "replicaSets": [ 2 { 3 "_id": "rs1", 4 "members": [ 5 { 6 "_id": 0, 7 "host": "<process_name_1>", 8 "priority": 1, 9 "votes": 1, 10 "secondaryDelaySecs": 0, 11 "hidden": false, 12 "arbiterOnly": false 13 } 14 ], 15 "protocolVersion": 1 16 } 17 ]
Na array sharding
, adicione os conjuntos de réplicas aos shards e adicione o nome do conjunto de réplicas do servidor de configuração, como no exemplo a seguir:
1 "sharding": [ 2 { 3 "shards": [ 4 { 5 "tags": [], 6 "_id": "shard1", 7 "rs": "rs1" 8 }, 9 { 10 "tags": [], 11 "_id": "shard2", 12 "rs": "rs2" 13 } 14 ], 15 "name": "sharded_cluster_via_api", 16 "configServerReplica": "rs-config", 17 "collections": [] 18 } 19 ]
Envie a configuração de automação atualizada.
Use o recurso automationConfig para enviar a configuração de automação atualizada.
Emita o comando a seguir pelo caminho para o documento de configuração atualizado e substitua os espaços reservados pelas variáveis para recursos de API de criação de cluster.
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Content-Type: application/json" --request PUT "https://cloud.mongodb.com/api/public/v1.0/groups/{PROJECT-ID}/automationConfig?pretty=true" \ --data @currentAutomationConfig.json
Após a atualização bem-sucedida da configuração, a API retorna o código de status HTTP 200 OK
para indicar que a solicitação foi bem-sucedida.
Confirme a atualização bem-sucedida da configuração de automação.
Recupere a configuração de automação do Cloud Manager e confirme se ela contém as alterações. Para recuperar a configuração, emita o seguinte comando, substituindo os espaços reservados pelas variáveis para recursos de API de criação de cluster.
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --request GET "https://cloud.mongodb.com/api/public/v1.0/groups/{PROJECT-ID}/automationConfig?pretty=true"
Verifique se a atualização de configuração foi distribuída.
Use o recurso automationStatus para verificar se a atualização de configuração está totalmente distribuída. Emitir o seguinte comando:
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --request GET "https://cloud.mongodb.com/api/public/v1.0/groups/{PROJECT-ID}/automationStatus?pretty=true"
O comando curl
retorna um objeto JSON contendo a array processes
e a chave goalVersion
e o valor. A matriz processes
contém um documento para cada servidor que hospeda uma instância MongoDB. A nova configuração é implantada com êxito quando todos os campos lastGoalVersionAchieved
na matriz processes
são iguais ao valor especificado para goalVersion
.
Exemplo
Nesta resposta, processes[2].lastGoalVersionAchieved
está atrás goalVersion
. Isso indica que a instância do MongoDB em server3.example.com
está sendo executada uma versão atrás do goalVersion
. Aguarde alguns segundos e emita o comando curl
novamente.
1 { 2 "goalVersion": 2, 3 "processes": [{ 4 "hostname": "server1.example.com", 5 "lastGoalVersionAchieved": 2, 6 "name": "ReplSet_0", 7 "plan": [] 8 }, { 9 "hostname": "server2.example.com", 10 "lastGoalVersionAchieved": 2, 11 "name": "ReplSet_1", 12 "plan": [] 13 }, { 14 "hostname": "server3.example.com", 15 "lastGoalVersionAchieved": 1, 16 "name": "ReplSet_2", 17 "plan":[] 18 }] 19 }
Para visualizar a nova configuração no console do Cloud Manager :
No MongoDB Cloud Manager, Go a página Deployment do seu projeto.
Se ainda não estiver exibido, selecione a organização que contém o projeto desejado no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.
Se a página Deployment ainda não estiver exibida, clique em Deployment na barra lateral.
A página Sistema é exibida.
Revise a nova configuração.
Próximos passos
Para disponibilizar uma versão adicional do MongoDB no cluster, consulte Atualizar a versão do MongoDB de um sistema.