質問編集履歴

6

状況を追記

2020/05/19 11:56

投稿

coffee_like
test CHANGED
@@ -1 +1 @@
1
- AWS ECSにて、サービスで実行したタスクが3分程で停止してしまう原因がわからない
1
+ AWS ECSにて、サービスで実行したタスクが3分置きに停止してしまう原因がわからない
test CHANGED
@@ -164,668 +164,154 @@
164
164
 
165
165
 
166
166
 
167
- ```task
168
-
169
- # タスク定義
170
-
171
-
172
-
173
- {
174
-
175
- "ipcMode": null,
176
-
177
- "executionRoleArn": null,
178
-
179
- "containerDefinitions": [
180
-
181
- {
182
-
183
- "dnsSearchDomains": null,
184
-
185
- "environmentFiles": null,
186
-
187
- "logConfiguration": {
188
-
189
- "logDriver": "json-file",
190
-
191
- "secretOptions": null,
192
-
193
- "options": null
194
-
195
- },
196
-
197
- "entryPoint": null,
198
-
199
- "portMappings": [
200
-
201
- {
202
-
203
- "hostPort": 0,
204
-
205
- "protocol": "tcp",
206
-
207
- "containerPort": 443
208
-
209
- }
210
-
211
- ],
212
-
213
- "command": null,
214
-
215
- "linuxParameters": null,
216
-
217
- "cpu": 0,
218
-
219
- "environment": [],
220
-
221
- "resourceRequirements": null,
222
-
223
- "ulimits": null,
224
-
225
- "dnsServers": null,
226
-
227
- "mountPoints": [
228
-
229
- {
230
-
231
- "readOnly": null,
232
-
233
- "containerPath": "/rails-app-root/tmp/sockets",
234
-
235
- "sourceVolume": "sockets"
236
-
237
- },
238
-
239
- {
240
-
241
- "readOnly": null,
242
-
243
- "containerPath": "/var/log/nginx",
244
-
245
- "sourceVolume": "logs"
246
-
247
- }
248
-
249
- ],
250
-
251
- "workingDirectory": null,
252
-
253
- "secrets": null,
254
-
255
- "dockerSecurityOptions": null,
256
-
257
- "memory": null,
258
-
259
- "memoryReservation": null,
260
-
261
- "volumesFrom": [],
262
-
263
- "stopTimeout": null,
264
-
265
- "image": "nginx-image",
266
-
267
- "startTimeout": null,
268
-
269
- "firelensConfiguration": null,
270
-
271
- "dependsOn": [
272
-
273
- {
274
-
275
- "containerName": "nginx",
276
-
277
- "condition": "START"
278
-
279
- }
280
-
281
- ],
282
-
283
- "disableNetworking": null,
284
-
285
- "interactive": null,
286
-
287
- "healthCheck": null,
288
-
289
- "essential": true,
290
-
291
- "links": null,
292
-
293
- "hostname": null,
294
-
295
- "extraHosts": null,
296
-
297
- "pseudoTerminal": null,
298
-
299
- "user": null,
300
-
301
- "readonlyRootFilesystem": null,
302
-
303
- "dockerLabels": null,
304
-
305
- "systemControls": null,
306
-
307
- "privileged": null,
308
-
309
- "name": "nginx"
310
-
311
- },
312
-
313
- {
314
-
315
- "dnsSearchDomains": null,
316
-
317
- "environmentFiles": null,
318
-
319
- "logConfiguration": {
320
-
321
- "logDriver": "json-file",
322
-
323
- "secretOptions": null,
324
-
325
- "options": null
326
-
327
- },
328
-
329
- "entryPoint": null,
330
-
331
- "portMappings": [
332
-
333
- {
334
-
335
- "hostPort": 0,
336
-
337
- "protocol": "tcp",
338
-
339
- "containerPort": 3000
340
-
341
- }
342
-
343
- ],
344
-
345
- "command": [],
346
-
347
- "linuxParameters": null,
348
-
349
- "cpu": 0,
350
-
351
- "environment": [
352
-
353
- {
354
-
355
- "name": "DB_HOST",
356
-
357
- "value": "rds-endpoint"
358
-
359
- },
360
-
361
- {
362
-
363
- "name": "DB_PASSWORD",
364
-
365
- "value": "db-password"
366
-
367
- },
368
-
369
- {
370
-
371
- "name": "DB_PORT",
372
-
373
- "value": "db-port"
374
-
375
- },
376
-
377
- {
378
-
379
- "name": "DB_USER_NAME",
380
-
381
- "value": "db-user"
382
-
383
- },
384
-
385
- {
386
-
387
- "name": "JAVA_HOME",
388
-
389
- "value": "/usr/lib/jvm/java-1.8.0-openjdk-amd64"
390
-
391
- },
392
-
393
- {
394
-
395
- "name": "RAILS_ENV",
396
-
397
- "value": "production"
398
-
399
- },
400
-
401
- {
402
-
403
- "name": "RAILS_LOG_TO_STDOUT",
404
-
405
- "value": "ture"
406
-
407
- },
408
-
409
- {
410
-
411
- "name": "RAILS_MASTER_KEY",
412
-
413
- "value": "master-key-value"
414
-
415
- },
416
-
417
- {
418
-
419
- "name": "TZ",
420
-
421
- "value": "Asia/Tokyo"
422
-
423
- }
424
-
425
- ],
426
-
427
- "resourceRequirements": null,
428
-
429
- "ulimits": null,
430
-
431
- "dnsServers": null,
432
-
433
- "mountPoints": [
434
-
435
- {
436
-
437
- "readOnly": null,
438
-
439
- "containerPath": "/rails-app-root/tmp/sockets",
440
-
441
- "sourceVolume": "sockets"
442
-
443
- },
444
-
445
- {
446
-
447
- "readOnly": null,
448
-
449
- "containerPath": "/rails-app-root/log",
450
-
451
- "sourceVolume": "logs"
452
-
453
- }
454
-
455
- ],
456
-
457
- "workingDirectory": null,
458
-
459
- "secrets": null,
460
-
461
- "dockerSecurityOptions": null,
462
-
463
- "memory": null,
464
-
465
- "memoryReservation": null,
466
-
467
- "volumesFrom": [],
468
-
469
- "stopTimeout": null,
470
-
471
- "image": "rails-app-image",
472
-
473
- "startTimeout": null,
474
-
475
- "firelensConfiguration": null,
476
-
477
- "dependsOn": null,
478
-
479
- "disableNetworking": null,
480
-
481
- "interactive": null,
482
-
483
- "healthCheck": null,
484
-
485
- "essential": true,
486
-
487
- "links": null,
488
-
489
- "hostname": null,
490
-
491
- "extraHosts": null,
492
-
493
- "pseudoTerminal": null,
494
-
495
- "user": null,
496
-
497
- "readonlyRootFilesystem": null,
498
-
499
- "dockerLabels": null,
500
-
501
- "systemControls": null,
502
-
503
- "privileged": null,
504
-
505
- "name": "rils-app"
506
-
507
- }
508
-
509
- ],
510
-
511
- "placementConstraints": [],
512
-
513
- "memory": "512",
514
-
515
- "taskRoleArn": null,
516
-
517
- "compatibilities": [
518
-
519
- "EC2"
520
-
521
- ],
522
-
523
- "taskDefinitionArn": "arn:aws:ecs:ap-northeast-1:arn-number:task-definition/task-name:task-number",
524
-
525
- "family": "rails_app_task",
526
-
527
- "requiresAttributes": [
528
-
529
- {
530
-
531
- "targetId": null,
532
-
533
- "targetType": null,
534
-
535
- "value": null,
536
-
537
- "name": "com.amazonaws.ecs.capability.ecr-auth"
538
-
539
- },
540
-
541
- {
542
-
543
- "targetId": null,
544
-
545
- "targetType": null,
546
-
547
- "value": null,
548
-
549
- "name": "ecs.capability.docker-plugin.local"
550
-
551
- },
552
-
553
- {
554
-
555
- "targetId": null,
556
-
557
- "targetType": null,
558
-
559
- "value": null,
560
-
561
- "name": "ecs.capability.container-ordering"
562
-
563
- },
564
-
565
- {
566
-
567
- "targetId": null,
568
-
569
- "targetType": null,
570
-
571
- "value": null,
572
-
573
- "name": "com.amazonaws.ecs.capability.docker-remote-api.1.25"
574
-
575
- },
576
-
577
- {
578
-
579
- "targetId": null,
580
-
581
- "targetType": null,
582
-
583
- "value": null,
584
-
585
- "name": "com.amazonaws.ecs.capability.logging-driver.json-file"
586
-
587
- },
588
-
589
- {
590
-
591
- "targetId": null,
592
-
593
- "targetType": null,
594
-
595
- "value": null,
596
-
597
- "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
598
-
599
- }
600
-
601
- ],
602
-
603
- "pidMode": null,
604
-
605
- "requiresCompatibilities": [
606
-
607
- "EC2"
608
-
609
- ],
610
-
611
- "networkMode": "bridge",
612
-
613
- "cpu": "512",
614
-
615
- "revision": 96,
616
-
617
- "status": "ACTIVE",
618
-
619
- "inferenceAccelerators": null,
620
-
621
- "proxyConfiguration": null,
622
-
623
- "volumes": [
624
-
625
- {
626
-
627
- "efsVolumeConfiguration": null,
628
-
629
- "name": "sockets",
630
-
631
- "host": null,
632
-
633
- "dockerVolumeConfiguration": {
634
-
635
- "autoprovision": null,
636
-
637
- "labels": null,
638
-
639
- "scope": "task",
640
-
641
- "driver": "local",
642
-
643
- "driverOpts": null
644
-
645
- }
646
-
647
- },
648
-
649
- {
650
-
651
- "efsVolumeConfiguration": null,
652
-
653
- "name": "logs",
654
-
655
- "host": null,
656
-
657
- "dockerVolumeConfiguration": {
658
-
659
- "autoprovision": null,
660
-
661
- "labels": null,
662
-
663
- "scope": "task",
664
-
665
- "driver": "local",
666
-
667
- "driverOpts": null
668
-
669
- }
670
-
671
- }
672
-
673
- ]
167
+ ```RailsApp
168
+
169
+ # Dockerfile
170
+
171
+
172
+
173
+ FROM ruby:2.5.1
174
+
175
+
176
+
177
+ ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-amd64
178
+
179
+
180
+
181
+ RUN apt-get update \
182
+
183
+ && apt-get install -y \
184
+
185
+ build-essential \
186
+
187
+ nodejs \
188
+
189
+ openjdk-8-jdk
190
+
191
+
192
+
193
+ ADD . /rails-app-root
194
+
195
+ WORKDIR /rails-app-root
196
+
197
+ RUN mkdir tmp tmp/sockets log \
198
+
199
+ && bundle install
200
+
201
+
202
+
203
+ CMD unicorn_rails -c /rails-app-root/config/unicorn.rb -E production
204
+
205
+
206
+
207
+ ```
208
+
209
+
210
+
211
+ ```nginx
212
+
213
+ # Dockerfile
214
+
215
+
216
+
217
+ FROM nginx:1.15.8
218
+
219
+
220
+
221
+ RUN rm -f /etc/nginx/conf.d/*
222
+
223
+ ADD docker/nginx/nginx.pro.conf /etc/nginx/conf.d/rails_app.conf
224
+
225
+
226
+
227
+ RUN apt-get update \
228
+
229
+ && apt-get install -y \
230
+
231
+ openssl \
232
+
233
+ && mkdir /etc/ssl/ca \
234
+
235
+ && cd /etc/ssl/ca \
236
+
237
+ && openssl req -new -newkey rsa:2048 -keyout server.key -nodes -out server.csr -subj "/C=JP/ST=Prefecture/O=Hoge/CN=www.hoge.com" \
238
+
239
+ && openssl x509 -req -days 3650 -signkey server.key -in server.csr -out server.crt
240
+
241
+
242
+
243
+ CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
244
+
245
+
246
+
247
+ # docker/nginx/nginx.pro.conf
248
+
249
+
250
+
251
+ upstream unicorn {
252
+
253
+ server unix:///rils-app-root/tmp/sockets/unicorn.sock;
674
254
 
675
255
  }
676
256
 
677
- ```
678
-
679
-
680
-
681
- ```RailsApp
682
-
683
- # Dockerfile
684
-
685
-
686
-
687
- FROM ruby:2.5.1
688
-
689
-
690
-
691
- ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-amd64
692
-
693
-
694
-
695
- RUN apt-get update \
696
-
697
- && apt-get install -y \
698
-
699
- build-essential \
700
-
701
- nodejs \
702
-
703
- openjdk-8-jdk
704
-
705
-
706
-
707
- ADD . /rails-app-root
708
-
709
- WORKDIR /rails-app-root
710
-
711
- RUN mkdir tmp tmp/sockets log \
712
-
713
- && bundle install
714
-
715
-
716
-
717
- CMD unicorn_rails -c /rails-app-root/config/unicorn.rb -E production
718
-
719
-
720
-
721
- ```
722
-
723
-
724
-
725
- ```nginx
726
-
727
- # Dockerfile
728
-
729
-
730
-
731
- FROM nginx:1.15.8
732
-
733
-
734
-
735
- RUN rm -f /etc/nginx/conf.d/*
736
-
737
- ADD docker/nginx/nginx.pro.conf /etc/nginx/conf.d/rails_app.conf
738
-
739
-
740
-
741
- RUN apt-get update \
742
-
743
- && apt-get install -y \
744
-
745
- openssl \
746
-
747
- && mkdir /etc/ssl/ca \
748
-
749
- && cd /etc/ssl/ca \
750
-
751
- && openssl req -new -newkey rsa:2048 -keyout server.key -nodes -out server.csr -subj "/C=JP/ST=Prefecture/O=Hoge/CN=www.hoge.com" \
752
-
753
- && openssl x509 -req -days 3650 -signkey server.key -in server.csr -out server.crt
754
-
755
-
756
-
757
- CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
758
-
759
-
760
-
761
- # docker/nginx/nginx.pro.conf
762
-
763
-
764
-
765
- upstream unicorn {
766
-
767
- server unix:///rils-app-root/tmp/sockets/unicorn.sock;
257
+
258
+
259
+ server {
260
+
261
+ listen 443 default ssl;
262
+
263
+ server_name www.hoge.com;
264
+
265
+
266
+
267
+ access_log /var/log/nginx/access.log main;
268
+
269
+ error_log /var/log/nginx/error.log warn;
270
+
271
+
272
+
273
+ root /rails-app-root/public;
274
+
275
+
276
+
277
+ client_max_body_size 100m;
278
+
279
+ error_page 404 /404.html;
280
+
281
+ error_page 505 502 503 504 /500.html;
282
+
283
+ try_files $uri/index.html $uri @rails_app;
284
+
285
+ keepalive_timeout 5;
286
+
287
+
288
+
289
+ ssl_certificate /etc/ssl/ca/server.crt;
290
+
291
+ ssl_certificate_key /etc/ssl/ca/server.key;
292
+
293
+ ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
294
+
295
+ ssl_ciphers HIGH:!aNULL:!MD5;
296
+
297
+
298
+
299
+ location @rails_app {
300
+
301
+ proxy_set_header X-Real-IP $remote_addr;
302
+
303
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
304
+
305
+ proxy_set_header X-Forwarded-Proto $scheme;
306
+
307
+ proxy_set_header Host $http_host;
308
+
309
+ proxy_pass http://unicorn;
310
+
311
+ }
768
312
 
769
313
  }
770
314
 
771
-
772
-
773
- server {
774
-
775
- listen 443 default ssl;
776
-
777
- server_name www.hoge.com;
778
-
779
-
780
-
781
- access_log /var/log/nginx/access.log main;
782
-
783
- error_log /var/log/nginx/error.log warn;
784
-
785
-
786
-
787
- root /rails-app-root/public;
788
-
789
-
790
-
791
- client_max_body_size 100m;
792
-
793
- error_page 404 /404.html;
794
-
795
- error_page 505 502 503 504 /500.html;
796
-
797
- try_files $uri/index.html $uri @rails_app;
798
-
799
- keepalive_timeout 5;
800
-
801
-
802
-
803
- ssl_certificate /etc/ssl/ca/server.crt;
804
-
805
- ssl_certificate_key /etc/ssl/ca/server.key;
806
-
807
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
808
-
809
- ssl_ciphers HIGH:!aNULL:!MD5;
810
-
811
-
812
-
813
- location @rails_app {
814
-
815
- proxy_set_header X-Real-IP $remote_addr;
816
-
817
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
818
-
819
- proxy_set_header X-Forwarded-Proto $scheme;
820
-
821
- proxy_set_header Host $http_host;
822
-
823
- proxy_pass http://unicorn;
824
-
825
- }
826
-
827
- }
828
-
829
315
  ```
830
316
 
831
317
 
@@ -847,3 +333,69 @@
847
333
 
848
334
 
849
335
  宜しくお願い致します。
336
+
337
+
338
+
339
+ ### 追記
340
+
341
+
342
+
343
+ 5/19
344
+
345
+ 調べると以下の公式資料が該当し、停止したタスクには停止理由が表示されるとのことでした。
346
+
347
+ コンソールから確認すると、以下のようになっていました。
348
+
349
+
350
+
351
+ ```
352
+
353
+ 停止理由: Scaling activity initiated by deployment ecs-svc/123456789001122
354
+
355
+ ```
356
+
357
+
358
+
359
+ タスクの実行数を1にしてデプロイしているのですが、今回の問題だと永遠に新しいタスクが実行されてしまうため、確認したいことが終わるとタスク数を0にすることにより対応しています。
360
+
361
+ 上記は、そのタスク数0の変更に対してサービスが対応した結果だと思われます.
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+ ```
370
+
371
+ 停止理由: Task failed ELB health checks in (target-group arn:aws:elasticloadbalancing:ap-northeast-1:...)
372
+
373
+ ```
374
+
375
+ 3分置きに終了してしまうタスクには、この様な停止理由が書かれていました。
376
+
377
+ タスクは、ターゲーットグループのヘルスチェックが何回か失敗すると、自動的に停止する仕様になっているのでしょうか?
378
+
379
+ ヘルスチェックがなぜ失敗するのか、原因を調査してみます。
380
+
381
+
382
+
383
+ 取り急ぎ、共有させて頂きます。
384
+
385
+
386
+
387
+
388
+
389
+ [https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/stopped-task-errors.html](https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/stopped-task-errors.html)
390
+
391
+
392
+
393
+ もう一つ追記です。
394
+
395
+ タスク数を2にしてデプロイしてみましたが、状況は変わりませんでした。
396
+
397
+ むしろ、実行されているタスク数は1から変わらず、少々おかしいような気がします。
398
+
399
+ こちらは、当方のECSやオートスケーリング、タスク配置についての理解不足が原因で、タスク数1が正常なのかなとも思っております。
400
+
401
+ こちらも共有させて頂きます。

5

追記

2020/05/19 11:56

投稿

coffee_like
test CHANGED
File without changes
test CHANGED
@@ -18,6 +18,14 @@
18
18
 
19
19
 
20
20
 
21
+ *5/19追記
22
+
23
+ 以前は問題なくサービスを実行できたと書きましたが、確認してみると、以前のコードでも上手く動きませんでした。
24
+
25
+ コード以外になんらかの変更を加えてしまい、それが原因となっている可能性が高そうです。
26
+
27
+
28
+
21
29
  ### 構成・前提
22
30
 
23
31
 

4

誤字を修正

2020/05/19 10:48

投稿

coffee_like
test CHANGED
File without changes
test CHANGED
@@ -832,7 +832,7 @@
832
832
 
833
833
  サービスを通さずに単発でタスクを実行した状態と、サービスを通してタスクを実行した状態の差分に原因があると考えていますが、その原因をつかめておりません。
834
834
 
835
- ALBが絡むくらいしか差分はないように思うのですが、ALBが原因であるとは考えづらいです、、。
835
+ ALBが絡むくらいしか差分はないように思うのですが、ALBが原因であるとは考えづらいです、、。
836
836
 
837
837
  このような問題の想定原因をご教授頂けますと幸いです。
838
838
 

3

ログに関する記載を追加

2020/05/19 09:04

投稿

coffee_like
test CHANGED
@@ -1 +1 @@
1
- AWS ECSにて、サービスで実行したタスクが分で停止してしまう原因がわからない
1
+ AWS ECSにて、サービスで実行したタスクが3で停止してしまう原因がわからない
test CHANGED
@@ -102,6 +102,14 @@
102
102
 
103
103
 
104
104
 
105
+ ### ログ
106
+
107
+
108
+
109
+ Dockerの標準出力、NginxとRailsAppのログファイルにも、ログは一切出力されませんでした。
110
+
111
+
112
+
105
113
  ### 該当のソースコード
106
114
 
107
115
 

2

修正

2020/05/19 09:03

投稿

coffee_like
test CHANGED
File without changes
test CHANGED
@@ -718,7 +718,7 @@
718
718
 
719
719
  RUN rm -f /etc/nginx/conf.d/*
720
720
 
721
- ADD docker/nginx/nginx.pro.conf /etc/nginx/conf.d/umbrellanotice.conf
721
+ ADD docker/nginx/nginx.pro.conf /etc/nginx/conf.d/rails_app.conf
722
722
 
723
723
 
724
724
 

1

タイポの修正, unicornの追加

2020/05/19 08:26

投稿

coffee_like
test CHANGED
File without changes
test CHANGED
@@ -150,6 +150,10 @@
150
150
 
151
151
  ```task
152
152
 
153
+ # タスク定義
154
+
155
+
156
+
153
157
  {
154
158
 
155
159
  "ipcMode": null,
@@ -658,7 +662,7 @@
658
662
 
659
663
 
660
664
 
661
- ```rilsapp
665
+ ```RailsApp
662
666
 
663
667
  # Dockerfile
664
668