jhuckaby / Cronicle

A simple, distributed task scheduler and runner with a web based UI.
http://cronicle.net
Other
3.78k stars 387 forks source link

Cannot work under a proxy and without specific hostname #172

Open missilerider opened 5 years ago

missilerider commented 5 years ago

Cronicle requires a hostname to function properly if connections are done from outside the LAN, but in a cloud environment this is not always possible.

Summary

In our current deployment on Amazon Web Services we have ECS instances after an application balancer (ELB). ECS containers with Fargate type of deployment does not allow hostname to be set in any way, even with custom Dockerfile or scripts the hostname is always renamed to the typical unnamed docker. The constraint is exposed by the need of use of awsvpc type of network, which is mandatory under ECS+Fargate.

[https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html]

The configuration only supports forced use of hostnames and local IP. There is no direct specification of servers, ips, hostnames nor anything usable in a networking point of view. Cronicle seems to have an application approach completely apart of the networking basics.

Steps to reproduce the problem

Deploy a Cronicle image on ECS+Fargate, on AWS. The effect should be the same than deploying a Docker image without hostname set (it uses local docker IP, which is NATted).

Your Setup

Internet => ELB => Cronicle container => NAT Gateway => Internet

Operating system and version?

AWS Fargate 1.3.0

Node.js version?

I've tried 8 and 10, lts and latest

Cronicle software version?

Cronicle 0.8.28 (latest as of writing)

Are you using a multi-server setup, or just a single server?

Single server

Are you using the filesystem as back-end storage, or S3/Couchbase?

No

Can you reproduce the crash consistently?

Always

Log Excerpts

No exceptional logs.

jhuckaby commented 5 years ago

I will try to address this in the next major version. Unfortunately Cronicle was written from the ground up to use fixed hostnames, as they become the primary key identifier for each server, so this kind of change would be drastic. But it's on the list.

LohitasyaTata commented 1 year ago

Hi missilerider,

I have tried to deploy cronicle as ECS service and working fine. https://github.com/LohitasyaTata/cronicleservice.git

missilerider commented 1 year ago

Hi @LohitasyaTata,

The issue I found before was with the cluster deployment as you have to configure addresses and hostnames, both of which are dynamic on ECS+Fargate. Single node deployment works correctly as far as I tested, although abandoned in favor of EC2 cluster deployment as "heavy" machines (working absolutely flawlessly more than 3 years later!).

If these details have changed (I don't know, sorry), maybe I retake the idea and reply to this thread if it works.