첫째, 우리는 우리가 시작하기 전에 관리자로 실행하려는 systemd 작업를 설치해야합니다. /usr/bin/pre-supervisor.sh
스크립트를 작성하여 해당 작업을 수행하고 시스템 용 /lib/systemd/system/pre-supervisor.service
을 작성하십시오.
[Unit]
Description=Task to run prior to supervisor Starting up
After=cloud-init.service
Before=supervisor.service
Requires=cloud-init.service
[Service]
Type=oneshot
WorkingDirectory=/usr/bin
ExecStart=/usr/bin/pre-supervisor.sh
RemainAfterExit=no
TimeoutSec=90
User=ubuntu
# Output needs to appear in instance console output
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
당신이 볼 수 있듯이, 이것은 EC2 클라우드 init.service이 완료된 후에 실행하고 이전 supervisor.service에 대한 것입니다.
다음, 우리가 network.target 후 대신의 대가-supervisor.service 완료 한 후 실행하는 /lib/systemd/system/supervisor.service
을 수정할 수 있습니다. 우리 전 감독 작업을 시작하기 전에 관리자로 실행되도록합니다
[Unit]
Description=Supervisor process control system for UNIX
Documentation=http://supervisord.org
After=pre-supervisor.service
[Service]
ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl -c /etc/supervisor/supervisord.conf $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=50s
[Install]
WantedBy=multi-user.target
.
이러한 스팟 인스턴스이기 때문에, AWS는 메타 데이터 URL에 해지 통보를 노출했다, 나는 단순히 같은 것을 주입해야는 5 초마다 체크 한 내 파이썬 서비스에
if requests.get("http://169.254.169.254/latest/meta-data/spot/termination-time").status_code == 200
또는 종료 통지가 나타나 자마자 정상적으로 종료됩니다.