Como você soluciona um aplicativo de aplicativo de nó com haproxy?

1

Eu tenho o que parece ser uma instalação quase funcional do meu aplicativo de nó dentro de um equipamento do Ubuntu Trusty MAAS com o Juju em uma rede privada (que não precisa ser publicada). Eu estou usando juju-gui, então foi capaz de exportar este conteúdo do arquivo bundle.yaml:

series: trusty
services: 
  keystone: 
    charm: "cs:trusty/keystone-29"
    num_units: 1
    options: 
      "admin-password": "redacted"
    to: 
      - "lxc:"
  ntp: 
    charm: "cs:trusty/ntp-11"
  mongodb: 
    charm: "cs:trusty/mongodb-26"
    num_units: 1
    to: 
      - "lxc:"
  docs: 
    charm: "cs:~justin-fathomdb/trusty/node-app-0"
    num_units: 1
    options: 
      app_name: docs
      app_url: "http://github.com/redacted/redacted.git"
    to: 
      - "0"
  haproxy: 
    charm: "cs:trusty/haproxy-13"
    num_units: 1
    to: 
      - "1"
relations: 
  - - "ntp:juju-info"
    - "keystone:juju-info"
  - - "docs:mongodb"
    - "mongodb:database"
  - - "docs:website"
    - "haproxy:reverseproxy"
machines: 
  "0": 
    series: trusty
    constraints: "arch=amd64 cpu-cores=2 mem=2048"
  "1": 
    series: trusty
    constraints: "arch=amd64 cpu-cores=2 mem=4096"
  undefined: 
    series: trusty
    constraints: "arch=amd64 cpu-cores=2 mem=4096"

Parece que o haproxy foi implementado com sucesso no nó delta.maas e o status juju mostra que está na porta 80. Eu posso ssh neste nó e ver que /var/log/juju/unit-haproxy-2.log parece ser feliz. O arquivo /etc/haproxy/haproxy.cfg indica que ele sabe sobre o nó docs:

backend haproxy_service
  balance leastconn
  cookie SRVNAME insert
  server docs-2-8000 10.100.100.10:8000 maxconn 100 cookie S0 check

Parece que docs (o node-app) é implementado no nó alpha.maas e o status juju mostra que está na porta 8000. Eu posso ssh neste nó e ver que / var / log / juju / unit-docs-2 .log parece estar feliz. Ele trouxe a imagem do github, correu npm install, encontrou o mongodb. Executar um "ps aux | grep node" neste nó produz:

ubuntu   22954  0.0  0.4 657432  9600 ?        Rsl  21:28   0:00 node ./bin/www

Executar "netstat -nat | grep LISTEN", no entanto, parece indicar que o nó não está ligado:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

De acordo com a documentação, estou usando um Procfile na raiz do aplicativo:

web: node ./bin/www

... e o arquivo bin / www começa com isso ...

#!/usr/bin/env node
var app = require('../app');
var debug = require('debug')('docs:server');
var http = require('http');
var config = require('../config/config');
var port = normalizePort(process.env.port);
app.set('port', process.env.port);
...

O que é chato é que o hook config-changed no node-app do Juju sempre falha no passo do github, fingindo que não pode encontrá-lo. Felizmente, os ganchos de instalação são bem-sucedidos, no entanto. Por isso, parece que vou precisar remover o unit / add-unit para fazer alterações no próprio aplicativo, mesmo para solucionar isso.

A tentativa do endereço IP haproxy resulta em um erro 503 Serviço Indisponível. Tentar a porta 8000 a partir de um navegador para o próprio nó docs não produz resposta, já que - como observei anteriormente - não está escutando nada.

Alguma opinião sobre isso?

    
por Michael Blankenship 05.10.2015 / 23:56

0 respostas