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?