Como quebrar o limite de 1 Gbit iSCSI entre ESXi e VNXe

15

Estou tendo grandes problemas com minha rede iSCSI e não consigo fazê-la funcionar o mais rápido possível.

Então, eu tentei de tudo para obter desempenho total da minha SAN, envolvendo especialistas de VMware e EMC.

Uma breve descrição do meu equipamento: 3x NICs integradas HP DL360 G7 / vSphere 5.5 / 4 / NICs Intel PCIe para iSCSI 2x Processadores de armazenamento HP 2510-24G 1x Processadores EMC VNXe 3100/2, cada um com 2 NICs dedicadas iSCSI / SAS RAID 10x 15k / 6x RAID6 SAS de 7,2k

Adotei as práticas recomendadas e coloquei os pools de armazenamento igualmente nos dois servidores iSCSI. Criei 2 servidores iSCSI, um em cada processador de armazenamento. Por favor, veja a imagem para minha configuração iSCSI.

configuração iSCSI

O tráfego iSCSI é separado via VLAN (conjunto de proibições para outras VLANs); eu até tentei com outro switch HP da série 29xx. O controle de fluxo está ativado (também tentou desativado), o Jumbo está desativado. Não há roteamento envolvido.

Nos hosts ESX, todas as NICs iSCSI estão sendo usadas, como eu usei a configuração Round Robin para cada armazenamento de dados. Também tentei com uma política de mudança de caminho de 1 IO, pois muitas outras parecem ter conseguido desempenho dessa maneira. Também tentei as placas de rede internas (Broadcom), mas não há diferença. Nos comutadores, vejo que as portas estão sendo usadas de maneira muito uniforme, lado ESX e lado VNXe. Eu tenho um balanceamento de carga perfeito, no entanto: não consigo passar de 1 Gbit no total. Entendo que o VNXe é otimizado para várias conexões e o Round Robin também precisa disso, mas mesmo quando faço um vMotion de armazenamento entre 2 hosts e 2 datastores (usando diferentes servidores iSCSI), vejo uma linha reta em torno de 84 MBit / s via interface da web do Unisphere. Consigo ver essa linha tantas vezes exatamente no mesmo valor que não acredito que meus discos não ' entregar mais ou as tarefas não são exigentes o suficiente. Está ficando ainda melhor: com apenas um cabo em cada host e em cada processador de armazenamento, eu alcanço o mesmo desempenho. Então, eu tenho muita redundância, mas nenhuma velocidade extra.

Como já vi muitas pessoas falando sobre seu desempenho iSCSI, estou desesperado para descobrir o que há de errado com minha configuração (que foi testada e verificada por pessoas treinadas da VMware e EMC). Sou grato por todas as opiniões!

EDITAR:

Sim, configurei o vMotion para usar várias NICs. Além desse armazenamento, o vMotion sempre passa pelos adaptadores iSCSI, não pelos adaptadores vMotion. Anexei capturas de tela da minha configuração.

Ligação de porta iSCSI

Destinos iSCSI

Caminhos iSCSI

Sei que o armazenamento vMotion não é referência, no entanto, tive que fazer muito disso nos últimos dias e o limite superior sempre foi de cerca de 80 MB / s. Um conjunto de 6x discos SAS de 15k 600 GB no RAID 10 deve ser capaz de fazer muito mais, você não acha? Fiz um teste do IO Meter para você - tentei alguns deles, o mais rápido foi 256 KiB 100% Read. Eu tenho 64,45 MB / s - meu Unisphere também mostra a mesma velocidade. Isso ocorre em uma VM armazenada em um conjunto de discos SAS 15 x 300 GB de 300 GB (RAID 10) que dificilmente qualquer outra atividade a essa hora do dia.

IO Meter

Unisphere

EDIT2:

Desculpe pelos nomes de usuário duplicados, mas eu escrevi esta pergunta no trabalho e ela não usava meu nome de usuário que eu já recebi no Stock Overflow. No entanto, aqui está a captura de tela mostrando minhas configurações de Round Robin. É o mesmo em todos os hosts e todas as lojas.

Round Robin

Ryan Hardy
fonte
Eu não acho que algo esteja errado. O que exatamente você está esperando? Você configurou o vMotion multi-NIC?
ewwhite
3
Fazer o armazenamento vmotion não é uma referência para sistemas de armazenamento, pois o vmkernel é restrito ao uso de E / S e CPU. Você já tentou fazer benchmarking usando o iometer etc? Que tipo de discos no VNXe e que tipo de configuração de raid / pool de armazenamento?
pauska
Além disso, você pode publicar uma captura de tela do "caminho de gerenciamento" do LUN no vSphere?
pauska
Você fez login com um usuário diferente do que costumava fazer a pergunta, portanto sua edição ficou presa em uma fila.
pauska
Obrigado pelas capturas de tela, mas ainda não é o que eu pedi. Clique em um de seus hosts esxi, na guia configurar, armazenamento de dados, selecione o armazenamento de dados que você deseja solucionar e clique no link "Propriedades" no canto inferior direito. Em seguida, clique em "gerenciar caminhos" e envie-nos uma captura de tela dessa janela.
pauska

Respostas:

1

É possível que você não gere IOPS suficientes para isso realmente começar.
Veja aqui como alterar a configuração de 1'000 IOPS padrão para um valor menor. (Isso é específico para simetria, mas você pode fazer o mesmo para o VMWare Round Robin Provider)

No entanto, ainda não estou convencido se ele realmente é capaz de utilizar mais de um link totalmente em paralelo com apenas um armazenamento de dados. Eu acho que você precisa fazer o teste IOMeter em mais de um armazenamento de dados em paralelo para obter benefícios. (Não tenho 100% de certeza)

MichelZ
fonte
Conforme indicado na minha pergunta, eu já defini a política de mudança de caminho para 1 em vez de 1.000 - realmente não mudei muito.
Ryan Hardy
Aah, eu devo ter esquecido essa parte, desculpe.
MichelZ
1

Crie uma regra SATP para o fornecedor de armazenamento chamado EMC, defina a política de caminho como Round Robine e IOPS do padrão 1000 para 1. Isso persistirá durante as reinicializações e sempre que um novo EMC iSCSI LUNs for apresentado, essa regra será escolhida. Para que isso se aplique aos EMC iSCSI LUNs existentes, reinicie o host.

esxcli storage nmp satp rule add --satp="VMW_SATP_DEFAULT_AA" \
  --vendor="EMC" -P "VMW_PSP_RR" -O "iops=1"

Eu brinquei com a alteração do IOPS entre 1 e 3 e achei o melhor desempenho em uma única VM. Dito isto, se você possui muitas VMs e muitos datastores, 1 pode não ser o ideal ...

Certifique-se de que cada interface no VNXe esteja definida como 9000 MTU. Além disso, o vSwitch com suas interfaces iSCSI deve ser definido como 9000 MTU junto com cada VMKernel. No seu VNXe, crie dois servidores iSCSI - um para SPA e outro para SPB. Associe um IP para cada um inicialmente. Em seguida, visualize os detalhes de cada servidor iSCSI e adicione IPs adicionais para cada interface ativa por SP. Isso fornecerá o desempenho de rodízio que você está procurando.

Em seguida, crie no mínimo dois datastores. Associe um armazenamento de dados ao iSCSIServer-SPA e outro ao iSCSIServer-SPB. Isso garantirá que um dos seus SPs não fique parado no modo inativo.

Por fim, todas as interfaces no lado ESX que estão sendo usadas para iSCSI devem ir para um vSwitch separado com todas as interfaces ativas. No entanto, você desejará um VMkernel para cada interface no lado ESX dentro desse vSwitch designado. Você deve substituir a ordem de failover do vSwitch para que cada VMKernel tenha um adaptador ativo e todos os outros não utilizados. Este é o meu script de implantação que usei para provisionar hosts ESX. Cada host possui um total de 8 interfaces, 4 para LAN e 4 para tráfego iSCSI / VMotion.

  1. Executar abaixo da configuração

uma. # DNS esxcli network ip dns search add --domain = mydomain.net

servidor de DNS de rede IP esxcli add --server = XXXX

servidor de DNS de rede IP esxcli add --server = XXXX

b. # definir atualização do nome do host de acordo

conjunto de nomes de host do sistema esxcli --host = server1 --domain = mydomain.net

c. # adicionar uplinks ao vSwitch0 rede esxcli vswitch uplink padrão add --uplink-name = vmnic1 --vswitch-name = vSwitch0

esxcli network vswitch uplink padrão add --uplink-name = vmnic4 --vswitch-name = vSwitch0

esxcli network vswitch uplink padrão add --uplink-name = vmnic5 --vswitch-name = vSwitch0

d. # create vSwitch1 para armazenamento e configure o MTU para 9000

padrão do vswitch de rede esxcli add --vswitch-name = vSwitch1

conjunto padrão de vswitch de rede esxcli --vswitch-name = vSwitch1 --mtu = 9000

e # adicionar uplinks ao vSwitch1

esxcli network vswitch uplink padrão add --uplink-name = vmnic2 --vswitch-name = vSwitch1

esxcli network vswitch uplink padrão add --uplink-name = vmnic3 --vswitch-name = vSwitch1

esxcli network vswitch uplink padrão add --uplink-name = vmnic6 --vswitch-name = vSwitch1

esxcli network vswitch uplink padrão add --uplink-name = vmnic7 --vswitch-name = vSwitch1

f. # definir NIC ativa para vSwitch0

conjunto de failover de política padrão da rede esxcli vswitch --vswitch-name = vSwitch0 --active-uplinks = vmnic0, vmnic1, vmnic4, vmnic5

g. # definir NIC ativa para vSwitch1

conjunto de failover de política padrão da rede esxcli vswitch --vswitch-name = vSwitch1 --active-uplinks = vmnic2, vmnic3, vmnic6, vmnic7

h. # criar grupos de portas para iSCSI e vmkernels para ESX01 e não ESX02

add-portgroup padrão do vswitch de rede esxcli add --portgroup-name = iSCSI-vmnic2 --vswitch-name = vSwitch1

adição da interface IP da rede esxcli --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000

interface IP de rede esxcli conjunto ipv4 --interface-name = vmk2 - ipv4 = 192.158.50.152 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk2

add do grupo de portas padrão do vswitch de rede esxcli --portgroup-name = iSCSI-vmnic3 --vswitch-name = vSwitch1

adição da interface IP da rede esxcli --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000

interface IP da rede esxcli conjunto ipv4 --interface-name = vmk3 - ipv4 = 192.158.50.153 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk3

add-portgroup padrão do vswitch de rede esxcli add --portgroup-name = iSCSI-vmnic6 --vswitch-name = vSwitch1

adição da interface IP da rede esxcli --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000

interface esxcli de rede ip ipv4 set --interface-name = vmk6 - ipv4 = 192.158.50.156 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk6

add-portgroup padrão do vswitch de rede esxcli add --portgroup-name = iSCSI-vmnic7 --vswitch-name = vSwitch1

adição da interface IP da rede esxcli --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000

interface de rede IP da rede esxcli conjunto ipv4 --interface-name = vmk7 - ipv4 = 192.158.50.157 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk7

Eu. # criar grupos de portas para iSCSI e vmkernels para ESX02 e não ESX01

add-portgroup padrão do vswitch de rede esxcli add --portgroup-name = iSCSI-vmnic2 --vswitch-name = vSwitch1

adição da interface IP da rede esxcli --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000

interface esxcli de rede ip ipv4 set --interface-name = vmk2 - ipv4 = 192.168.50.162 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk2

add do grupo de portas padrão do vswitch de rede esxcli --portgroup-name = iSCSI-vmnic3 --vswitch-name = vSwitch1

adição da interface IP da rede esxcli --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000

interface de rede IP da rede esxcli conjunto ipv4 --interface-name = vmk3 - ipv4 = 192.168.50.163 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk3

add-portgroup padrão do vswitch de rede esxcli add --portgroup-name = iSCSI-vmnic6 --vswitch-name = vSwitch1

adição da interface IP da rede esxcli --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000

interface esxcli de rede ip conjunto ipv4 --interface-name = vmk6 - ipv4 = 192.168.50.166 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk6

add-portgroup padrão do vswitch de rede esxcli add --portgroup-name = iSCSI-vmnic7 --vswitch-name = vSwitch1

adição da interface IP da rede esxcli --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000

interface IP da rede esxcli conjunto ipv4 --interface-name = vmk7 - ipv4 = 192.168.50.167 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk7

j. # definir NIC ativa para cada vmkernel iSCSI

conjunto de failover da diretiva de grupo de portas padrão da rede esxcli vswitch --portgroup-name = iSCSI-vmnic2 - active-uplinks = vmnic2

conjunto de failover da diretiva de grupo de portas padrão da rede esxcli vswitch --portgroup-name = iSCSI-vmnic3 - active-uplinks = vmnic3

conjunto de failover da diretiva de grupo de portas padrão da rede esxcli vswitch --portgroup-name = iSCSI-vmnic6 - active-uplinks = vmnic6

conjunto de failover da política de grupo de portas padrão da rede esxcli vswitch --portgroup-name = iSCSI-vmnic7 - --active-uplinks = vmnic7

k) # criar grupos de portas

add-portgroup padrão do vswitch de rede esxcli add --portgroup-name = VMNetwork1 --vswitch-name = vSwitch0

add-portgroup padrão do vswitch de rede esxcli add --portgroup-name = VMNetwork2 --vswitch-name = vSwitch0

add-portgroup padrão do vswitch de rede esxcli add --portgroup-name = VMNetwork3 --vswitch-name = vSwitch0

eu. # define VLAN para grupos de portas da VM

grupo de portas padrão da rede esxcli vswitch definido -p VMNetwork1 --vlan-id ##

conjunto de portgroup padrão da rede esxcli vswitch -p VMNetwork2 --vlan-id ##

conjunto de portgroup padrão da rede esxcli vswitch -p VMNetwork3 --vlan-id ###

m. # remove o grupo de portas da VM padrão

remoção de grupo de portas padrão da rede esxcli vswitch --portgroup-name = "VM Network" -v = vSwitch0

n. # enable Adaptador de software iSCSI

conjunto de software esxcli iscsi - ativado = true

esxcli iscsi networkportal add -A vmhba33 -n vmk2

esxcli iscsi networkportal add -A vmhba33 -n vmk3

esxcli iscsi networkportal add -A vmhba33 -n vmk6

esxcli iscsi networkportal add -A vmhba33 -n vmk7

o. # renomear armazenamento de dados local

nome do host> $ var =

vim-cmd hostsvc / datastore / renomeie datastore1 local-$var

p. #Definir o plug-in de tipo de matriz de armazenamento de vários caminhos nativo para o EMC VNXe 3300 e ajustar IOPS de rodízio de 1000 a 1

regra de satp nmp de armazenamento esxcli add --satp = "VMW_SATP_DEFAULT_AA" --vendor = "EMC" -P "VMW_PSP_RR" -O "iops = 1"

q # atualizar rede

atualização do firewall de rede esxcli

vim-cmd hostsvc / net / refresh

  1. Configurar o cliente NTP usando o vSphere Client para cada host

uma. Configuração -> Configuração da hora -> Propriedades -> Opções -> Configurações do NTP -> Adicionar -> ntp.mydomain.net -> Marque "Reiniciar o serviço NTP para aplicar alterações" -> OK -> aguarde… -> Selecione "Iniciar e parar com o host" -> OK -> Marque "Cliente NTP ativado -> OK

  1. Reiniciar host

  2. Prossiga com o provisionamento de armazenamento EMC VNXe, retorne a este guia quando concluir

  3. Efetue login no cliente vSphere por host

  4. Atualize cada Datastore para VMFS-5

uma. Configuração -> Armazenamento -> Destaque Datastore -> Atualizar para VMFS-5

Robert Margeson
fonte
0

Infelizmente, acho que nada está errado com sua configuração. Você simplesmente não pode usar mais de 1 Gb / s para uma única VM.

O ponto aqui é que você não deseja simplesmente usar duas (ou mais) placas de rede, deseja usá-las simultaneamente , em uma configuração semelhante ao RAID-0.

O 802.3ad, o padrão sobre agregação em nível de link e que acho que você configurou em seus comutadores, normalmente não pode ser configurado para distribuir uma única conexão entre diferentes NICs. Isso se deve ao modo como a seleção interface-alg funciona: ela é baseada em MACs e / ou IP / portas src e dst e uma única conexão sempre terá os mesmos MACs / IPs / portas .

Isso não significa que sua instalação não pode gerar números mais altos (como tput e IOPS), mas isso impõe um limite rígido para a quantidade de desempenho que uma única VM pode extrair. Tente carregar 2 ou 4 instâncias do IOMeter em 2/4 VMs diferentes: aposto que a tput agregada será muito maior que o benchmark de VM única, mas nenhuma máquina passará do limite de 1 Gb / s.

A ponte do Linux e alguns switches de ponta oferecem suporte a diferentes métodos de agregação de link e permitem interfaces de rede agregadas e distribuídas. No entanto, isso tem implicações não triviais sobre como outros switches / sistemas interagem com esses métodos de agregação "não padronizados".

De qualquer forma, para a rede de armazenamento, você realmente deve ativar os jumbo-frames, se houver suporte.

shodanshok
fonte