Comments (6)
Aside from a fixed sleep, another option would be to write a polling loop, retrying your curl until you get a meaningful response. I'd recommend a short sleep (probably 1 second is fine) between loop iterations and a fatal timeout of maybe 1 or two minutes so you avoid looping forever in case the agent never starts for some reason.
In theory we could implement such a loop in ecs-init itself or in the upstart config we use to start it, so I'll leave this issue open as a feature request. It's possible that there are issues with this idea that I haven't considered yet, so it may not be the right thing to do.
from amazon-ecs-init.
Hi @davidvuong. ecs-init and ecs-agent both log to files in /var/log/ecs/
. It is possible that these will provide some insight into what's happening. My guess is that there's a dependency that hasn't yet finished initializing by the time you call start ecs
or curl, but that's just a guess.
from amazon-ecs-init.
Hey @narehayrapetyan,
Here's the log for both files in /var/log/ecs/
:
ecs-init.log:
2016-12-30T03:16:26Z [INFO] pre-start
2016-12-30T03:16:27Z [INFO] start
2016-12-30T03:16:27Z [INFO] No existing agent container to remove.
2016-12-30T03:16:27Z [INFO] Starting Amazon EC2 Container Service Agent
ecs-agent.log:
2016-12-30T03:16:29Z [INFO] Starting Agent: Amazon ECS Agent - v1.13.1 (efe53c6)
2016-12-30T03:16:29Z [INFO] Loading configuration
2016-12-30T03:16:29Z [INFO] Event stream ContainerChange start listening...
2016-12-30T03:16:29Z [INFO] Checkpointing is enabled. Attempting to load state
2016-12-30T03:16:29Z [INFO] Loading state! module="statemanager"
2016-12-30T03:16:29Z [INFO] Detected Docker versions [1.17 1.18 1.19 1.20 1.21 1.22 1.23]
2016-12-30T03:16:29Z [INFO] Registering Instance with ECS
2016-12-30T03:16:29Z [INFO] Registered! module="api client"
2016-12-30T03:16:29Z [INFO] Registration completed successfully. I am running as 'xxx' in cluster 'yyy'
2016-12-30T03:16:29Z [INFO] Saving state! module="statemanager"
2016-12-30T03:16:29Z [INFO] Beginning Polling for updates
2016-12-30T03:16:29Z [INFO] Initializing stats engine
2016-12-30T03:16:29Z [INFO] Event stream DeregisterContainerInstance start listening...
2016-12-30T03:16:29Z [INFO] Creating poll dialer, host: ecs-a-1.us-east-1.amazonaws.com
2016-12-30T03:16:29Z [INFO] Creating poll dialer, host: ecs-t-1.us-east-1.amazonaws.com
2016-12-30T03:16:39Z [INFO] Saving state! module="statemanager"
from amazon-ecs-init.
This might also be useful. Cloud init logs before and after the start ecs
call:
echo "before"
docker ps -a
cat /var/log/ecs/ecs-init.log.2016-12-30-03
cat /var/log/ecs/ecs-agent.log.2016-12-30-03
echo ECS_CLUSTER=$ECS_CLUSTER >> /etc/ecs/ecs.config
start ecs
echo "after"
docker ps -a
cat /var/log/ecs/ecs-init.log.2016-12-30-03
cat /var/log/ecs/ecs-agent.log.2016-12-30-03
and this is what I get:
before
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cat: /var/log/ecs/ecs-init.log.2016-12-30-03: No such file or directory
cat: /var/log/ecs/ecs-agent.log.2016-12-30-03: No such file or directory
ecs start/running, process 3029
after
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2016-12-30T03:29:11Z [INFO] pre-start
2016-12-30T03:29:12Z [INFO] start
2016-12-30T03:29:12Z [INFO] No existing agent container to remove.
2016-12-30T03:29:12Z [INFO] Starting Amazon EC2 Container Service Agent
cat: /var/log/ecs/ecs-agent.log.2016-12-30-03: No such file or directory
from amazon-ecs-init.
@nmeyerhans Yep you're right. It seems like there's a timing issue. I forced a sleep 10
before the curl
and everything works as it should.
Is there another way I can fix this aside from forcing an arbitrary sleep time?
from amazon-ecs-init.
Based on my understanding, the problem here is "start ecs" just works as an interface to tell upstart init system to start agent, but starting agent is async. Adding loop in ecs-init or upstart config will not make "start ecs" command itself to wait for agent successfully started and then return. So the retry mentioned above would be the way to handle your case now.
Close the issue considering there is no action items on our side. Feel free to reopen it if you have any questions.
from amazon-ecs-init.
Related Issues (20)
- Add staticcheck tool to ecs-init (same as agent) HOT 1
- Containers with multiple listening ports in 'host' networking unable to send traffic to other local ports HOT 2
- Installation of ecs volume plugin on RHEL HOT 3
- ECS Agent update issue HOT 1
- iptables rule isn't removed on service restart after changing ECS_ALLOW_OFFHOST_INTROSPECTION_ACCESS from false to true HOT 1
- Setting ECS_ALLOW_OFFHOST_INTROSPECTION_ACCESS=true doesn't appear to work on Amazon Linux 1 HOT 1
- ECS cluster registers new task every time While uploading large file in aws ecs through loadbalancer with 503 gateway error HOT 7
- ECS service doesn't always run at boot time due to systemd breaking service ordering cycles HOT 4
- Migrate from dep to go modules for dependency management HOT 1
- Configurable ecs-agent image version HOT 8
- Support overriding ecs agent certificate with host certificate for generic rpm package
- 1.53.0 not availalbe as rpm HOT 1
- Running "make deb" or "make generic-rpm" does not package amazon-ecs-volume-plugin HOT 2
- Offhost ECS Agent Container Introspection is permanently enabled when primary NIC is not called eth0 HOT 4
- ecs anywhere install script: unnecessary requirement on dirmngr HOT 1
- post-stop seems to require dockerd socket access HOT 11
- Cannot build RPM package on CentOS 7.9.2009 HOT 2
- amazon-ecs-volume-plugin.service is missing in SLES 15 SP2 amazon-ecs-init 1.53 version HOT 2
- [Proposal] Integrate ECS Init into ECS Agent & deprecate standalone ECS Init repository HOT 3
- VolumeDriver.Create: encountered error(s) in creating the volume HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from amazon-ecs-init.