Balanceamento de carga multipathd no md3200i

2

Estou trabalhando na configuração de um cluster de servidores com uma SAN iSCSI MD3200i para armazenamento compartilhado. Tudo está funcionando bem, mas tenho um pequeno detalhe que parece que não consigo trabalhar. O Multipath parece querer apenas fazer failover com as conexões iSCSI com a SAN. Eu gostaria de fazer isso funcionar no modo de balanceamento de carga para que ele use cada caminho e não apenas um ou outro.

Sempre aparece como fantasma aqui, o que significa que não está sendo usado.

[root@kvm-01]~# multipath -ll
mpath2 (36842b2b0006b9d87000004383bf558d9) dm-5 DELL,MD32xxi
[size=2.2T][features=3 queue_if_no_path pg_init_retries 50][hwhandler=1 rdac][rw]
\_ round-robin 0 [prio=100][active]
 \_ 8:0:0:0   sdb 8:16  [active][ready]
  \_ 7:0:0:0  sdc 8:32  [active][ghost]

Meu multipathd conf:

[root@kvm-01]~# egrep -v '(#|^$)' /etc/multipath.conf
blacklist {
        device {
                vendor  "*"
                product "Universal Xport"
        }
        device {
                vendor  "*"
                product "MD3000"
        }
        device {
                vendor  "*"
                product "MD3000i"
        }
        device {
                vendor  "*"
                product "Virtual Disk"
        }
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z][[0-9]*]"
devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
devnode "^sda$"
}
defaults {
        user_friendly_names   yes
        polling_interval      5
        selector              "round-robin 0"
        path_checker          rdac
        path_grouping_policy  multibus
        rr_weight             uniform
        no_path_retry         30
        failback              immediate
        rr_min_io             100
        prio_callout          "/sbin/mpath_prio_rdac /dev/%n"
        max_fds               8192
}
devices {
        device {
                vendor                "DELL"
                product               "MD32xxi"
                hardware_handler      "1 rdac"
                features              "2 pg_init_retries 50"
        }
        device {
                vendor                "DELL"
                product               "MD32xx"
                hardware_handler      "1 rdac"
                features              "2 pg_init_retries 50"
        }
        device {
                vendor                "DELL"
                product               "MD36xxi"
                hardware_handler      "1 rdac"
                features              "2 pg_init_retries 50"
        }
}

Eu tentei uma variedade de configurações de group_by e rr_weight, todas com o mesmo resultado.

[root@kvm-01]~# lsmod | grep rdac
dm_rdac                41673  1
dm_multipath           58457  3 dm_round_robin,dm_rdac
scsi_mod              199001  14 dm_rdac,be2iscsi,ib_iser,iscsi_tcp,bnx2i,cxgb3i,libiscsi2,scsi_transport_iscsi2,scsi_dh,sr_mod,sg,libata,megaraid_sas,sd_mod

Eu também tentei carregar o scsi_dh_rdac com isso também não fez diferença.

[root@kvm-01]~# egrep -v '(#|^$)' /etc/iscsi/iscsid.conf
node.startup = automatic
node.session.timeo.replacement_timeout = 30
node.conn[0].timeo.login_timeout = 15
node.conn[0].timeo.logout_timeout = 15
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 15
node.session.err_timeo.abort_timeout = 15
node.session.err_timeo.lu_reset_timeout = 20
node.session.initial_login_retry_max = 8
node.session.cmds_max = 128
node.session.queue_depth = 32
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768
node.conn[0].iscsi.HeaderDigest = None
node.session.iscsi.FastAbort = No
node.session.xmit_thread_priority = -20
node.conn[0].iscsi.MaxXmitDataSegmentLength = 0

Eu venho pesquisando isso há algum tempo, e eu encontrei muitas pessoas recebendo essa configuração para trabalhar com um MD3000i, mas nenhuma confirmação do 3200i. Encontrei uma pessoa dizendo que ela não é compatível porque o controlador secundário é passivo por design, mas não consegui confirmar isso na documentação da Dell.

[root@kvm-01]~# uname -a
Linux kvm-01 2.6.18-238.9.1.el5 #1 SMP Tue Apr 12 18:10:13 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
    
por sinping 09.05.2011 / 15:07

2 respostas

1

Resumo

O único balanceamento de carga que você pode fazer é distribuir os LUNs entre os controladores. Enquanto ele se anuncia como ativo-ativo, é na verdade uma SAN ativa dupla. Assim, um LUN só pode ser associado a no máximo um processador de armazenamento a qualquer momento, mas ambos os controladores podem estar ativos e direcionar LUNs dedicados a cada controlador. Isso é o que se entende por Ativo / Ativo neste caso, que a SAN pode ser totalmente utilizada, e não que um único LUN pode ser balanceado por dois controladores ao mesmo tempo.

Detalhes

Seu status de caminho para o sdc diz tudo, fantasma == passivo , então todos os seus a configuração de multipath é boa para o failover. Sua configuração é Ativo / Passivo por definição.

link

Esse controlador de armazenamento em espera precisa ser configurado para Ativo / Ativo modo para realizar o que você procura; Pode ser uma limitação da SAN.

Verificação

Ao responder a uma pergunta diferente usando a mesma SAN, descobri os documentos para a SAN na web e verificou que esta marca e modelo é de fato dual-ativo. Veja:

Dell PowerVault MD3200i Configuração de dm-multipath e problemas de desempenho no Debian 6.0 (squeeze)

    
por 07.02.2012 / 17:12
1

O MD3200i (assim como todos os outros rebrands do LSI) usa o RDAC. Isso é um algoritmo a / p.

    
por 14.03.2012 / 21:18