Pergunta

Estou trabalhando em minha [primeira] startup há um mês e, embora provavelmente falte pelo menos mais um mês para uma versão alfa, quero saber como implantá-la da maneira certa.O site terá uma carga inicial alta (rede + CPU) para um novo usuário, então estou pensando em ter um servidor/fila separado para esse processo inicial, para que não deixe o site lento para os usuários existentes.

Com base na minha pesquisa até agora, estou atualmente inclinado para nginx + haproxy + unicorn/thin + memcached + mysql e implantando no Linode.No entanto, não tenho experiência anterior em nenhuma das opções acima;portanto, espero aproveitar a experiência da comunidade.

  • A arquitetura acima parece razoável?Alguma sugestão/artigo/livro que você recomendaria?
  • Linode é uma boa escolha?Heroku/EY parece muito caro para mim (pelo menos até que eu tenha receita suficiente), mas estou faltando alguma outra opção melhor?MediaTemplo?
  • Alguma boa sugestão sobre a arquitetura de balanceamento de carga?Ainda estou lendo sobre isso.
  • É melhor ter 2 instâncias de servidor Rails separadas em 2 linodes separados ou executar 1 instância em um linode com o dobro da capacidade (em termos de RAM/armazenamento/largura de banda)?Com quantos Linodes devo começar?
  • Qual distribuição Linux devo escolher?(Linode oferece 8 diferentes - http://www.linode.com/faq.cfm) Existem vantagens/desvantagens relativas entre eles para um site Rails?

Peço desculpas se alguma das minhas perguntas for estúpida ou contraditória;por favor, atribua isso à minha inexperiência.

Foi útil?

Solução

Arquitetura

Você está no caminho certo.Pessoalmente, prefiro o Passenger ao invés do thin/unicorn (tendo executado o nginx em back-ends finos por um longo tempo) apenas por conveniência, mas a configuração proposta é bastante padrão.Se você estiver no Ruby 1.8.7, eu recomendo que você considere REE + Passenger para economizar memória da estrutura.

Hospedagem e balanceamento de carga

Linode é fantástico e eu os uso para quase tudo que posso, mas você precisa estar ciente dos limites de RAM.Cada processo do Rails usa uma quantidade não trivial de RAM, e você deve evitar colocar a máquina em swap.Planeje executar instâncias Rails suficientes por máquina para que sua alocação de memória seja cerca de 90% da memória no Linode.Você provavelmente desejará outro Linode dedicado ao seu banco de dados, embora possa começar com ambos na mesma máquina;apenas esteja preparado para dividir o MySQL conforme você cresce.Você pode configurar comunicações entre Linodes no mesmo data center em IPs privados, que não contam para sua cota de largura de banda.

Sua estratégia de escalonamento deve ser o mais horizontal possível, então eu recomendo apenas obter um segundo Linode e adicioná-lo ao seu pool haproxy quando você precisar de mais potência - Linode cobra US$ 20 por 512 MB a mais de RAM, ou você pode simplesmente obter um ' outro Linode (com CPU, RAM, HDD e cota de largura de banda) pelos mesmos US$ 20.Parece um acéfalo!).No caso do Rails, uma instância é uma instância, então realmente não importa se está na mesma VM ou não, desde que o tempo para conectar-se à sua máquina de banco de dados ou algo assim seja mais ou menos o mesmo.Você poderia estar executando 10 Linodes, cada um executando 10 processos Rails cada, sem muitos problemas.Linode também oferece failover de IP, de modo que se o seu Linode primário (com haproxy) falhar, ele pode falhar automaticamente para um Linode secundário, no qual você teria o haproxy em execução e pronto para atuar na mesma capacidade que o primeiro.

Distribuição

Honestamente, isso é com você!Muitas pessoas usam distros Ubuntu ou Redhat (CentOS/Fedora) - eu também gosto do CentOS - mas é apenas sobre o que você se sente mais confortável.Se você não tem uma distribuição favorita, eu recomendaria experimentar o Ubuntu/CentOS, pois eles tendem a ser bastante amigáveis ​​para iniciantes e têm suporte da comunidade extremamente robusto.

Você provavelmente desejará escolher uma distribuição de 32 bits, a menos que tenha um motivo convincente para escolher uma distribuição de 64 bits;Os executáveis ​​de 64 bits requerem mais RAM do que seus equivalentes de 32 bits e, como a RAM provavelmente será seu recurso mais precioso, faz sentido salvá-la onde puder.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top