NFS v4, migração de HA e identificadores antigos em clientes

1

Estou gerenciando um servidor executando o NFS v4 com o Pacemaker / OpenAIS. O NFS está configurado para usar o TCP. Quando eu migro o servidor NFS para outro nó no cluster do Pacemaker, mesmo que os metadados sejam persistentes, as conexões dos clientes ficam paralisadas e, eventualmente, atingem o tempo limite após 90 segundos. Após esses 90 segundos, o ponto de montagem antigo torna-se "obsoleto" e os arquivos montados não podem mais ser acessados.

O período de tolerância de 90 segundos parece fazer parte da configuração do servidor e não da configuração do cliente. Eu vejo esta mensagem no servidor:

kernel: NFSD: starting 90-second grace period

Se eu reiniciar o cliente NFS nos nós cliente depois de migrar (desmontar e remontar o compartilhamento), não enfrentei o problema, mas as conexões e transferências de arquivos ainda foram interrompidas.

Três perguntas:

  1. Qual é o período de carência de 90 segundos? Por que isso está aí?
  2. Como posso evitar que os arquivos fiquem obsoletos nos clientes sem reiniciá-los depois que eu migrar o servidor NFS para outro nó?
  3. É realmente possível migrar o servidor NFS sem ter grandes uploads de arquivos?
por Karl Katzke 05.06.2009 / 14:55

4 respostas

3

O NFS armazena muito do estado do cliente no servidor. O marcapasso / OpenAIS não pode compensar as deficiências do NFS nessa área. O período de carência está lá para o servidor e clientes para recapturar o estado. Faz parte do protocolo.

De qualquer forma, parece que você não está mudando completamente o estado do cliente (como o conteúdo / var / lib / nfs). Veja este para ideias e o que precisa ser sincronizado em termos de estado no lado do servidor.

    
por 07.06.2009 / 06:38
1

O disco físico é compartilhado entre as unidades, por exemplo, é um disco de SAN?

Você está exportando o disco com um fsid constante

/ share * (rw, sync, fsid = 6667)

caso contrário:

O inode-Number, o IP, o menor e o maior número do dispositivo que serve o NFS tem que ser o mesmo para manter o mesmo identificador de arquivos NFS. Portanto, use lvm no topo do dispositivo e mantenha menor / maior de lvm em sincronia.

    
por 09.07.2009 / 00:54
1

Considerando que com o NfSv3 você pode especificar o transporte UDP para montagens para obter um failover instantâneo e o cliente / servidor não seria mais sábio, o NFSv4 o torna um pouco mais complicado. Acima de tudo porque o TCP é o único transporte disponível e não é da natureza do TCP ter uma conexão arrancada de baixo dos pés e continuar normalmente.

Você pode diminuir o tempo de transferência. Especialmente se você seguir o conselho sobre um diretório de estado do servidor comum e a manutenção de FSIDs. Tente puxar a interface de escuta antes de parar o NFS e verifique se as montagens não estão retraídas ( exportfs -ua ). Mas nunca será absolutamente instantâneo.

Você também deve ter em mente que mudar de um servidor e depois de volta é um não-não. O servidor antigo ainda pode manter as conexões anteriores abertas em um estado TIME_WAIT e recusará novas conexões por até 20 minutos.

Muitos dos detalhes desta página wiki Heartbeat são um pouco antigos, mas ainda são pertinentes.

    
por 16.07.2009 / 20:04
0

O NFSv4 é um protocolo com estado, o que significa que as partes (cliente, servidor) devem estar sempre cientes de uma sobre a outra se estiverem envolvidas na comunicação. em outras palavras, se o servidor estiver parado & reiniciado em algum outro lugar, os clientes devem desconectar antes do movimento, então reconectar quando o movimento estiver completo (eu acho que Pacemaker + NFSd! = amor: -)

talvez você deva tentar glusterfs para HA / clustering

    
por 16.07.2009 / 19:24