A execução de qualquer coisa dentro de uma máquina virtual terá algum nível de desempenho, mas quanto isso realmente afeta o desempenho de um sistema de banco de dados?
Encontrei este artigo de referência acadêmica com algumas referências interessantes, mas era um teste limitado usando apenas o Xen e o PostgreSQL. A conclusão foi que o uso de uma VM "não tem um alto custo de desempenho" (embora você possa pensar que os dados reais dizem o contrário).
Quais são as desvantagens técnicas, administrativas e outras associadas à execução de um banco de dados em uma máquina virtual?
Por favor, poste respostas que possam ser apoiadas por fatos objetivos, não estou interessado em especulações ou qualquer outro argumento semi-religioso (a paixão nerd é boa de várias maneiras, mas isso não vai nos ajudar aqui).
Dito isto,
- Quais problemas aparecem ao executar o banco de dados em uma máquina virtual? (por favor, poste referências)
- Essas questões são significativas?
- Eles são significativos apenas em certos cenários?
- Quais são as soluções alternativas?
Respostas:
Embora muitos fornecedores de banco de dados tenham demorado muito para fazer isso, quase todos agora oferecem suporte oficial ao software em execução em um ambiente virtualizado.
Nós executamos muitas instâncias do Oracle 11g no linux sobre o ESXi, e certamente é possível obter um desempenho muito bom. Como em todo o dimensionamento de hardware, você só precisa garantir que o host de virtualização possua muitos recursos (RAM, CPU) e que sua camada de disco esteja pronta para a tarefa de fornecer o desempenho de E / S necessário.
fonte
Como diz ErikA, isso está se tornando cada vez mais comum. Estou no campo do SQL Server e pessoalmente não tenho sistemas de produção em execução nas VMs, mas não hesitaria em fazê-lo (depois de um pouco mais de estudo sobre o assunto). Definitivamente, há algumas coisas a serem levadas em consideração antes de você seguir esse caminho (pelo menos no SQL Server). E / S de disco (como outros já mencionaram) e alocação de memória são apenas 2 exemplos. As coisas também serão diferentes entre os hipervisores diferentes.
Brent Ozar é um especialista reconhecido em virtualizar o SQL Server, especificamente no VMWare. Eu recomendo a leitura de seu material.
http://www.brentozar.com/community/virtualization-best-practices/
fonte
Há lata e depois há que deve . Uma corveta pode percorrer 250 km / h, mas você deveria em rodovias públicas? Você pode se machucar desnecessariamente.
Bancos de dados são sistemas operacionais convidados. Por design, quando iniciam, eles agarram blocos de um recurso e o gerenciam diretamente por motivos de desempenho. Assim que você tornar o sistema operacional principal do servidor de banco de dados um convidado no ambiente de hospedagem virtualizado, estará colocando uma camada de arbitragem com o hipervisor entre o elemento alocado em bloco do disco e a RAM e o servidor de banco de dados. Vai diminuir a velocidade. Quanto mais ineficientes forem suas consultas, mais ela diminuirá. Hoje, essas ineficiências podem ser mascaradas em hardware dedicado, mas assim que você introduzir a arbitragem no seu recurso dependente, descobrirá rapidamente.
O que muitos contadores de bean que exigem virtualização não conseguem reconhecer é que os servidores de banco de dados, como sistemas operacionais convidados, oferecem sua própria camada de consolidação. Não há razão para que você não consiga mover várias instâncias de banco de dados lógicas em um servidor físico, mesmo a ponto de mover endereços IP, configurar nomes de host adicionais, etc ..., para permitir que esse coalescimento natural de serviços ocorra. E, com esse modelo, você não apenas retém a economia de custos que o gerenciamento está promovendo para um número reduzido de hosts físicos, mas também o acesso ao bloco de recursos físicos sem o impacto do hypervisor arbitrário, que pode tomar decisões benéficas às vezes e não outras.
O mesmo vale para outros sistemas operacionais convidados, como Java. As soluções de virtualização geralmente são ambientes ocupados e o hipervisor precisa tomar muitas decisões sobre quem "recebe o token" em um recurso. Sempre que você puder eliminar essa camada, ficará melhor.
Combine várias instâncias usando a camada do sistema operacional convidado natural primeiro. As probabilidades são de que você poderá atingir com mais facilidade os objetivos de consolidação e desempenho da plataforma.
fonte
Há duas coisas a realizar aqui:
Dito isto, onde trabalho nossa instalação do Sql Server é um dos dois únicos servidores que não tenho intenção de virtualizar tão cedo (o outro é o controlador de domínio primário).
fonte
A execução do SQL Server é uma VM, tudo bem, desde que você possa fornecer recursos suficientes para a VM para executar seu aplicativo. Se no mundo físico você precisar de 24 núcleos e 256 Gigs de RAM, precisará fornecer 24 vCPUs e 256 Gigs de RAM no mundo virtual.
Acabei de escrever um artigo na revista SQL Server dos últimos meses sobre a execução do SQL Server no vSphere da VMware.
fonte
Eu corro dois bancos de dados, um PostgreSQL e outro MySQL, em um ambiente virtual (Xen) onde os dom0s estão altamente disponíveis. Os sistemas de arquivos domU estão todos localizados em um iSCSI SAN LUN, dividido em volumes lógicos LVM2. O banco de dados MySQL é exclusivamente para Cacti e, portanto, não possui muita utilidade, e também está localizado no iSCSI LUN.
O banco de dados PostgreSQL é o banco de dados do nosso ambiente de teste e, portanto, possui uma utilização mais alta que o banco de dados MySQL. Por esse motivo, o banco de dados está localizado em um conjunto RAID10 local e o DRBD é replicado no segundo nó do cluster. No entanto, em termos de carga real, esse banco de dados temporário não vê carga muito alta. O que, na minha opinião, torna um bom / ótimo candidato para virtualizar.
Alguns dos benefícios para nossa organização foram o consumo reduzido de energia, economia de espaço em rack e menos sobrecarga administrativa de hardware.
Nosso principal banco de dados de produção, por outro lado, não consigo imaginar ficar virtual ....
fonte
Eu trabalho com servidores MSSQL e MySQL em vários servidores. Alguns anos atrás, eu hesitava em começar a configurar servidores SQL em VMs porque tinha ouvido falar sobre os problemas de desempenho da execução de um servidor SQL em uma VM. No entanto, fiquei surpreso depois de configurar meus primeiros servidores SQL e não vi nenhuma alteração no desempenho. Mais e mais servidores nos quais trabalho estão em VM e quase todos os clientes corporativos maiores em que trabalho têm virtualmente servidores SQL.
Sim, a VM adiciona algum custo adicional e, se você hospedar várias VMs em uma única caixa, precisará de um bom servidor robusto. Um problema comum de recursos a ser observado é adicionar VMs adicionais e diminuir os recursos disponíveis. É prática comum planejar algum crescimento, mas se você comprou seu servidor para hospedar 2 ou 3 VMs e agora está executando 10 VMs, provavelmente verá um impacto no desempenho.
Eu mentiria se dissesse que nunca vi problemas de desempenho executando um servidor SQL em uma VM. Mas aprendi que, se você estiver tendo um desempenho ruim, provavelmente há algo errado com o ambiente.
fonte