Linux Ubuntu, NFS para logs e cache, NFS ou GFS

0

minha empresa não tem desenvolvedores e eu sou desenvolvedor, então dificilmente conheço as melhores práticas de operações de desenvolvimento, pois sou nova nisso, então, por favor, me perdoe por qualquer erro.

Eu tenho duas máquinas Ubuntu. Cada um deles tem um servidor web SAME exato e, portanto, eles fornecem registros de acesso. Ambos estão executando o servidor web ruby on rails e usando o nginx.

Problema: Agora eu preciso de um lugar comum para visualizar logs de acesso e logs de aplicativos da web. E o armazenamento em cache de arquivos deve ser comum a ambos os servidores da Web.

Para isso eu tenho que vir esta solução : Ter um servidor separado para armazenar o cache e os logs usando o NFS. Assim, os dois servidores da Web agem como clientes e armazenam logs e cache no servidor NFS.

Eu também ouvi um pouco sobre o GFS.

Agora, o cache dificilmente será gravado uma vez por hora ou algo assim, mas os registros serão gravados a cada segundo.

Então, eu quero saber o que devo usar para esse problema? NFS ou GFS ou ambos? Qual vai me dar o melhor desempenho? Algumas pessoas dizem usar o GFS como eu pesquisei muito na internet, mas eu quero saber porque o GFS pode ser melhor que o NFS no meu caso?

    
por user1735921 30.09.2017 / 08:43

1 resposta

0

Se você quiser enviar o log de ambos os servidores para um terceiro, aconselho-o a usar o protocolo syslog (também proposto por @ satō-katsura) com o rsyslog em sua instalação do ubuntu. Você pode encontrar informações sobre "apache syslog".

Primeiro redirecione o log do apache para o syslog na sua configuração do host virtual do apache, por exemplo:

ErrorLog  "|/usr/bin/tee -a /var/log/www/error.log  | /usr/bin/logger -t apache -plocal6.err"
CustomLog "|/usr/bin/tee -a /var/log/www/access.log | /usr/bin/logger -t apache -plocal6.info"

</virtualhost>

onde local6 é o recurso, err e info são o nível de log.

Então, através da configuração do rsyslog, envie para o terceiro:

local6.* @<ip_dest>

Onde ip_dest é o ip da máquina de logging

Agora você deve receber os logs no terceiro e você pode fazer desta uma regra para redirecioná-los para um arquivo:

# process remote messages
if $fromhost-ip == '<ip_host1>' or $fromhost-ip == '<ip_host2>' then {
        action(type="omfile" file="/var/log/apachecluster.log")
        stop
    }

Isso deve funcionar e você terá um log centralizado chamado apachecluster.log, mas esteja ciente de que Você também pode usar a ferramenta de registro para processar logs em várias máquinas, como o Splunk

Em relação ao cache, você não precisa de algum cache compartilhado na rede, você precisa usar um proxy que tenha algum cache e que registre o acesso, etc. Como você disse no seu comentário, use o google cloud para balanceamento de carga, Ele oferece algumas habilidades de cache. Senão, basta fazer com cache local de seus apache hosts, você quer cache no seu RAM, não em um disco rígido de um terceiro computador distante.

Divirta-se

    
por 30.09.2017 / 11:05