Implantar Clusters de Big Data do SQL Server no OpenShift local e no Red Hat OpenShift no Azure
Aplica-se a: SQL Server 2019 (15.x)
Importante
O complemento Clusters de Big Data do Microsoft SQL Server 2019 será desativado. O suporte para Clusters de Big Data do SQL Server 2019 será encerrado em 28 de fevereiro de 2025. Todos os usuários existentes do SQL Server 2019 com Software Assurance terão suporte total na plataforma e o software continuará a ser mantido por meio de atualizações cumulativas do SQL Server até esse momento. Para obter mais informações, confira a postagem no blog de anúncio e as opções de Big Data na plataforma do Microsoft SQL Server.
Este artigo explica como implantar um Cluster de Big Data do SQL Server em ambientes do OpenShift, no local ou no ARO (Red Hat OpenShift no Azure).
Dica
Para encontrar uma forma rápida de inicializar um ambiente de exemplo usando o ARO e o BDC implantado nessa plataforma, use o script Python disponível aqui.
Você pode implantar Clusters de Big Data no OpenShift local ou no ARO (Red Hat OpenShift no Azure). Valide a versão CRI-O do OpenShifts em relação a configurações testadas nas notas sobre a versão dos clusters de Big Data do SQL Server. Embora o fluxo de trabalho de implantação seja semelhante à implantação em outras plataformas baseadas no Kubernetes (kubeadm e AKS), há algumas diferenças. A diferença está principalmente na execução de aplicativos como o usuário não raiz e o contexto de segurança usado para namespace no qual o BDC é implantado.
Para implantar o cluster OpenShift no local, confira a documentação do Red Hat OpenShift. Para implantações do ARO, confira o Red Hat OpenShift no Azure.
Este artigo descreve as etapas de implantação específicas da plataforma OpenShift, destaca as opções existentes para acessar o ambiente de destino e o namespace que você está usando para implantar o cluster de Big Data.
Pré-requisitos
Importante
Os pré-requisitos abaixo precisam ser executados por um administrador de cluster OpenShift (função de cluster de administrador de cluster) que tenha permissões suficientes para criar esses objetos no nível de cluster. Para obter mais informações sobre as funções de cluster do OpenShift, confira Como usar o RBAC para definir e aplicar permissões.
Verifique se a configuração de
pidsLimit
do OpenShift está atualizada para acomodar cargas de trabalho do SQL Server. O valor padrão no OpenShift é muito baixo para cargas de trabalho semelhantes a de produção. Comece com pelo menos4096
, mas o valor ideal depende da configuração demax worker threads
no SQL Server e do número de processadores da CPU no nó do host do OpenShift.- Para descobrir como atualizar o
pidsLimit
para o cluster do OpenShift, use estas instruções. Observe que as versões do OpenShift anteriores a4.3.5
apresentavam um defeito que fazia com que o valor atualizado não entrasse em vigor. Lembre-se de atualizar o OpenShift para a última versão. - Para ajudar você a calcular o valor ideal dependendo do ambiente e das cargas de trabalho planejadas do SQL Server, use a estimativa e os exemplos abaixo:
Número de processadores Número máximo de threads de trabalho padrão Trabalhos padrão por processador Valor mínimo de pidsLimit 64 512 16 512 + (64 *16) = 1.536 128 512 32 512 + (128*32) = 4.608 Observação
Outros processos (por exemplo, backups, CLR, texto completo, SQLAgent) também adicionam uma sobrecarga; portanto, adicione um buffer ao valor estimado.
- Para descobrir como atualizar o
Baixe a SCC (restrição de contexto de segurança) personalizada
bdc-scc.yaml
:curl https://raw.githubusercontent.com/microsoft/sql-server-samples/master/samples/features/sql-big-data-cluster/deployment/openshift/bdc-scc.yaml -o bdc-scc.yaml
Aplique a SCC ao cluster.
oc apply -f bdc-scc.yaml
Observação
A SCC personalizada para o BDC é baseada na SCC
nonroot
interno no OpenShift, com permissões adicionais. Para saber mais sobre as restrições de contexto de segurança do OpenShift, confira Como gerenciar restrições de contexto de segurança. Para obter informações detalhadas sobre quais permissões adicionais são necessárias para Clusters de Big Data na SCCnonroot
, baixe o white paper aqui.Crie um namespace/um projeto:
oc new-project <namespaceName>
Associe a SCC personalizada às contas de serviços no namespace em que o BDC foi implantado:
oc create clusterrole bdc-role --verb=use --resource=scc --resource-name=bdc-scc -n <namespaceName> oc create rolebinding bdc-rbac --clusterrole=bdc-role --group=system:serviceaccounts:<namespaceName>
Atribua a permissão apropriada ao usuário que está implantando o BDC. Execute uma delas.
Se o usuário que está implantando o BDC tiver a função de administrador de cluster, prossiga para Implantar cluster de Big Data.
Se o usuário que está implantando o BDC for um administrador de namespace, atribua a ele a função local de administrador de cluster no namespace criado. A opção preferencial é que o usuário que implanta e gerencia o cluster de Big Data tenha permissões de administrador no nível do namespace.
oc create rolebinding bdc-user-rbac --clusterrole=cluster-admin --user=<userName> -n <namespaceName>
O usuário que está implantando o cluster de Big Data precisará fazer logon no console do OpenShift:
oc login -u <deployingUser> -p <password>
Implantar um cluster de Big Data
Instale o azdata mais recente.
Clone um dos arquivos de configuração internos do OpenShift, dependendo do ambiente de destino (OpenShift local ou ARO) e do cenário de implantação. Confira a seção Configurações específicas do OpenShift nos arquivos de configuração de implantação abaixo para obter as configurações específicas do OpenShift nos arquivos de configuração internos. Para obter mais detalhes sobre os arquivos de configuração disponíveis, confira as diretrizes de implantação.
Liste todos os arquivos de configuração internos disponíveis.
azdata bdc config list
Para clonar um dos arquivos de configuração internos, execute o comando abaixo (opcionalmente, você pode substituir o perfil com base na plataforma/no cenário de destino):
azdata bdc config init --source openshift-dev-test --target custom-openshift
Para uma implantação no ARO, comece com um dos perfis
aro-
, que inclui valores padrão paraserviceType
estorageClass
apropriados para esse ambiente. Por exemplo:azdata bdc config init --source aro-dev-test --target custom-openshift
Personalize os arquivos de configuração control.json e bdc.json. Estes são alguns recursos adicionais que orientarão você nas personalizações de vários casos de uso:
Observação
Não há suporte para a integração ao Microsoft Entra ID no BDC e, portanto, você não pode usar esse método de autenticação para a implantação no ARO.
Definir variáveis de ambiente
Implantar um cluster de Big Data
azdata bdc create --config custom-openshift --accept-eula yes
Após a implantação bem-sucedida, você poderá fazer logon e listar os pontos de extremidade do cluster externo:
azdata login -n mssql-cluster azdata bdc endpoint list
Configurações específicas do OpenShift nos arquivos de configuração de implantação
O SQL Server 2019 CU5 apresenta duas opções de recurso para controlar a coleta de métricas de pod e nó. Esses parâmetros são definidos como false
por padrão nos perfis internos do OpenShift, já que os contêineres de monitoramento exigem um contexto de segurança com privilégios, o que flexibilizará algumas das restrições de segurança para o namespace no qual BDC foi implantado.
"security": {
"allowNodeMetricsCollection": false,
"allowPodMetricsCollection": false
}
O nome da classe de armazenamento padrão do ARO é managed-premium (em oposição ao AKS, em que a classe de armazenamento padrão é chamada default). Você encontrará isso no control.json
correspondente a aro-dev-test
e aro-dev-test-ha
:
},
"storage": {
"data": {
"className": "managed-premium",
"accessMode": "ReadWriteOnce",
"size": "15Gi"
},
"logs": {
"className": "managed-premium",
"accessMode": "ReadWriteOnce",
"size": "10Gi"
}
Arquivo bdc-scc.yaml
O arquivo SCC para essa implantação é:
allowHostDirVolumePlugin: false
allowHostIPC: false
allowHostNetwork: false
allowHostPID: false
allowHostPorts: false
allowPrivilegeEscalation: true
allowPrivilegedContainer: false
allowedCapabilities:
- SETUID
- SETGID
- CHOWN
- SYS_PTRACE
apiVersion: security.openshift.io/v1
defaultAddCapabilities: null
fsGroup:
type: RunAsAny
kind: SecurityContextConstraints
metadata:
annotations:
kubernetes.io/description: SQL Server BDC custom scc is based on 'nonroot' scc plus additional capabilities required by BDC.
generation: 2
name: bdc-scc
readOnlyRootFilesystem: false
requiredDropCapabilities:
- KILL
- MKNOD
runAsUser:
type: MustRunAsNonRoot
seLinuxContext:
type: MustRunAs
supplementalGroups:
type: RunAsAny
volumes:
- configMap
- downwardAPI
- emptyDir
- persistentVolumeClaim
- projected
- secret
Próximas etapas
Tutorial: Carregar dados de exemplo em um cluster de Big Data do SQL Server