Избегайте повторных сценариев dhclient-script на amazon linux ami

486
Thomas Kettenbach

Мы используем кластер emr на веб-сервисах Amazon «aws». Мы используем изображения Amazon Linux AMI по умолчанию без настройки. Мне кажется, что скрипт dhclient выбирает конфигурации от наших компаний dhcp (протокол динамической конфигурации хоста), особенно ntp (протокол сетевого времени)

В качестве примера на главном узле сценарий dhclient добавляет в /etc/ntp.confфайл ntp-серверы наших компаний .

[hadoop@ip-10-5-21-157 ~]$ grep ^server /etc/ntp.conf  server 0.amazon.pool.ntp.org iburst server 1.amazon.pool.ntp.org iburst server 2.amazon.pool.ntp.org iburst server 3.amazon.pool.ntp.org iburst server 10.2.78.21 # added by /sbin/dhclient-script server 10.2.78.22 # added by /sbin/dhclient-script server 10.2.78.23 # added by /sbin/dhclient-script server 10.2.78.24 # added by /sbin/dhclient-script 

IP-адреса 10.2.78.21-24 разрешают в clockNN.ntp.mycompany.com

Как этого избежать, чтобы мы просто использовали настройки по умолчанию от Amazon?

РЕДАКТИРОВАТЬ У нас были проблемы при запуске свиноводства на кластере emr. Пример трассировки стека исключений:

18/01/07 13:50:23 INFO tez.TezJob: DAG Status: status=FAILED, progress=TotalTasks: 4737 Succeeded: 3777 Running: 0 Failed: 1 Killed: 959 FailedTaskAttempts: 428 KilledTaskAttempts: 309, diagnostics=Vertex failed, vertexName=scope-421, vertexId=vertex_1515326570070_0001_1_04, diagnostics=[Task failed, taskId=task_1515326570070_0001_1_04_002846, diagnostics=[TaskAttempt 0 failed, info=[Container launch failed for container_1515326570070_0001_01_000599 : org.apache.hadoop.yarn.exceptions.YarnException: Unauthorized request to start container. This token is expired. current time is 1515332813920 found 1515330236564 Note: System times on machines may be out of sync. Check system time and time zones. at sun.reflect.GeneratedConstructorAccessor51.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.instantiateException(SerializedExceptionPBImpl.java:168) at org.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.deSerialize(SerializedExceptionPBImpl.java:106) at org.apache.tez.dag.app.launcher.TezContainerLauncherImpl$Container.launch(TezContainerLauncherImpl.java:160) at org.apache.tez.dag.app.launcher.TezContainerLauncherImpl$EventProcessor.run(TezContainerLauncherImpl.java:353) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 

Основной причиной отключения системного времени (некоторых из) машин emr (виртуальных машин, изображений, узлов?) Может быть DNS-серверы наших компаний. (Но это дикая догадка.) Одна из идей удалить эту возможность - удалить эти ntp-серверы из файла /etc/ntp.conf и повторно инициализировать системное время.

0

1 ответ на вопрос

0
Thomas Kettenbach

После некоторого исследования я придумал следующее:

Создан файл modify_ntp_config.shна S3:

#!/bin/bash  set -eEu  ntp_config_file="$" echo "Removing 'server 10.*' entries from \"$ntp_config_file\"" sudo sed -i -e '/server 10.*/d' $ntp_config_file echo "Reinitialize ntp" sudo service ntpd stop sudo ntpdate -s time.nist.gov sudo service ntpd start 

Скопировал этот файл в s3:

$ aws s3 cp /var/tmp/modify_ntp_config.sh \ s3://<s3-bucket-name>/data/scripts/modify_ntp_config.sh 

А затем с помощью aws-tools:

aws emr create-cluster --name "..." [...cluster create options ...] \ --steps \ Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,\ Jar=s3://<region>.elasticmapreduce/libs/script-runner/script-runner.jar,\ Args=["s3://<s3-bucket-name>/data/scripts/modify_ntp_config.sh","/etc/ntp.conf"] 

Результаты в следующем выводе журнала (скопированы с s3 на локальный диск)

$ aws s3 cp --recursive s3://<s3-bucket-name>/log/<cluster-id>/steps/<step-id>/ /var/tmp/5HKO7 download: s3://[...]/stdout.gz to ../../var/tmp/5HKO7/stdout.gz download: s3://[...]/stderr.gz to ../../var/tmp/5HKO7/stderr.gz download: s3://[...]/controller.gz to ../../var/tmp/5HKO7/controller.gz  $ zcat /var/tmp/5HKO7/stdout.gz  Downloading 's3://<s3-bucket-name>/data/scripts/modify_ntp_config.sh' to '/mnt/var/lib/hadoop/steps/[...]/.' Removing 'server 10.*' entries from "/etc/ntp.conf" Reinitialize ntp Shutting down ntpd: [ OK ] Starting ntpd: [ OK ]  $ zcat /var/tmp/5HKO7/stderr.gz  Command exiting with ret '0' 

ПРИМЕЧАНИЕ. Другой способ - использовать его на уже запущенном кластере emr aws emr add-steps.

$ aws emr add-steps --cluster-id "j-<emr_cluster_id>"\ --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,\ Jar=s3://<region>.elasticmapreduce/libs/script-runner/script-runner.jar,\ Args=["s3://<s3-bucket-name>/data/scripts/modify_ntp_config.sh","/etc/ntp.conf"] 

Ссылки: https://docs.aws.amazon.com/emr/latest/DeveloperGuide//emr-hadoop-script.html https://docs.aws.amazon.com/cli/latest/reference/emr/add- steps.html https://askubuntu.com/questions/254826/how-to-force-a-clock-update-using-ntp https://unix.stackexchange.com/questions/158802/how-to-update- нтп-без выключения-погружного НТП-демон

Похожие вопросы