Blinkenlights is a job queuing and load balancing component for Adobe InDesign Server. You can use it as a standalone product, or as an optional component for Typefi Server 8.6 or later.
A job queue is a buffer that stores job requests pending processing. Job queues map to one or more instances of InDesign Server. Blinkenlights supports multiple job queues, which allows clients to submit their jobs to the queue that best suits that type of work.
In addition to job queuing and load balancing, Blinkenlights enables:
- Multiple queues
- Prioritised job queuing
- Status visibility
- Job filtering
- Performance metrics
- Logging
Blinkenlights is built using a high availability cluster to ensure it can handle high traffic, and that no data is lost in the result of a server failure. It also supports a RESTful API to submit jobs, and control jobs, servers, and queues. You do not need Blinkenlights to run InDesign Server successfully, but we highly recommend it when you have multiple InDesign Server instances.
For more information about using Blinkenlights, see Getting started with Blinkenlight and Doing more with job queues.
Container Registry
You can docker pull
the following packages from our container registry:
containers.typefi.com/blinkenlights:latest
containers.typefi.com/grafana:latest
containers.typefi.com/prometheus:latest
containers.typefi.com/nginx:latest
Troubleshooting
To restart the Blinkenlights node without reloading the task or service, visit /api/v1/restart
.
Running Blinkenlights on Docker Desktop
- Edit the base
docker-compose.yml
with your MongoDB instance information.- You can use a local server or MongoDB Atlas. The database is less than 512 MB in production.
- Set the
BL_LICENSE
to the license key issued by Typefi. - Run
docker-compose up
to start the instance.- The instance will be accessible on http://localhost:8081 by default.
Deploying Blinkenlights on Amazon Web Services (AWS) Fargate
We will walkthrough an example of deploying Blinkenlights in an Amazon Virtual Private Cloud (VPC) on Amazon Elastic Container Service (ECS) and Amazon Fargate. This example assumes Blinkenlights has a public IP address (for internet access) and guides you through a complete setup. Your environment may be a simpler, or a more complex, version of this deployment.
You will need the Amazon ECS command-line interface (CLI) to deploy Blinkenlights. To install the Amazon ECS CLI, see ECS CLI installation.
Update parameters
- Rename
ecs-params-sample-fargate.yml
toecs-params.yml
and update theecs-params.yml
file for your desired environment. - Rename
docker-compose-sample-fargate.yml
todocker-compose.yml
and update thedocker-compose.yml
file and substitute the parameters as needed.- Point to your remote MongoDB database
NODE_CONFIG
. Don't have MongoDB? Try MongoDB Atlas. The free tier will suffice. - Update the Blinkenlights license
BL_LICENSE
. - Set the logging to point to the correct region (
awslog-region
). The default isus-east-1
. This will create a cluster and service running on ECS that has Service Discovery. Service Discovery means Blinkenlights is discoverable by services on the same VPC.
- Point to your remote MongoDB database
Start Blinkenlights on Amazon Web Services (AWS)
- Permit access only from trusted private IP ranges (this step is optional and not necessary in all cases).
- While Blinkenlights requires public IP access in AWS Fargate, we suggest permitting access only from trusted private IP ranges. However, this poses several challenges with AWS Service Discovery. To fix this, we suggest using an Amazon Route 53 registered domain name and creating a public namespace based on DNS for API calls and public DNS queries. Visit Cloud Map in the AWS consoleto get started.
- Create and attach the task execution role:
aws iam --region us-east-1 create-role --role-name ecsTaskExecutionRole --assume-role-policy-document file://task-execution-assume-role.json
aws iam --region us-east-1 attach-role-policy --role-name ecsTaskExecutionRole --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
- Create a cluster config:
ecs-cli configure --cluster blinkenlights --default-launch-type FARGATE --config-name blinkenlights --region AWS_REGION
- Create a CLI profile:
ecs-cli configure profile --access-key AWS_ACCESS_KEY_ID --secret-key AWS_SECRET_ACCESS_KEY --profile-name blinkenlights-profile
- Create the security group:
aws ec2 create-security-group --group-name blinkenlights-sg --description "blinkenlights security group"
This command outputs theAWS_SECURITY_GROUP_ID
. - Set security group inbound rules:
- HTTP/HTTPS:
aws ec2 authorize-security-group-ingress --group-id AWS_SECURITY_GROUP_ID --protocol tcp --port 80 --cidr RANGE
aws ec2 authorize-security-group-ingress --group-id AWS_SECURITY_GROUP_ID --protocol tcp --port 443 --cidr RANGE
- Websocket:
aws ec2 authorize-security-group-ingress --group-id AWS_SECURITY_GROUP_ID --protocol tcp --port 8081 --cidr RANGE
- HTTP/HTTPS:
- Create a cluster:
ecs-cli up --cluster-config blinkenlights --ecs-profile blinkenlights-profile --vpc AWS_VPC_ID --subnets AWS_SUBNET_ID_1, AWS_SUBNET_ID_2 --security-group AWS_SECURITY_GROUP_ID
- Update ECS configuration.
- Update the
ecs-params.yml
file with the subnet IDs and security group ID.
- Update the
- Deploy service to cluster:
ecs-cli compose --project-name blinkenlights service up --private-dns-namespace blinkenlights --vpc AWS_VPC_ID --create-log-groups --cluster-config blinkenlights --ecs-profile blinkenlights-profile --enable-service-discovery
or,ecs-cli compose --ecs-params ecs-params.yml --project-name blinkenlights service up --vpc AWS_VPC_ID --cluster-config blinkenlights --ecs-profile blinkenlights-profile --enable-service-discovery --public-dns-namespace-id NAMESPACE-ID
Stop Blinkenlights on AWS
- Remove service:
ecs-cli compose --project-name blinkenlights service down --cluster-config blinkenlights --ecs-profile blinkenlights-profile
- Remove cluster:
ecs-cli down --cluster-config blinkenlights --ecs-profile blinkenlights-profile
Update and restart Blinkenlights on AWS
- If you already have a Blinkenlights service:
aws ecs update-service --cluster CLUSTER_NAME --service SERVICE_NAME --force-new-deployment
For Blinkenlights, the command would look like this:aws ecs update-service --cluster blinkenlights --service blinkenlights --force-new-deployment
- If you do not have a Blinkenlights service:
aws ecs update-service --cluster CLUSTER_NAME --service SERVICE_NAME
For Blinkenlights, the command would look like this:aws ecs update-service --cluster blinkenlights --service blinkenlights
See also
- Amazon Elastic Container Service (ECS)
- Amazon Fargate
- Amazon Route 53
- Amazon Virtual Private Cloud (VPC)
- AWS Service Discovery
- Blinkenlights on GitHub
- Cloud Map in the AWS console
- CreatePublicDnsNamespace
- Doing more with job queues
- ECS CLI installation
- Getting started with Blinkenlights
- MongoDB
- MongoDB Atlas
Comments
0 comments
Please sign in to leave a comment.