У меня есть машина CentOS 7, которая постоянно копирует данные в AWS/S3.
Однако у нее есть проблема, и я был бы благодарен за предложения по ее устранению.
Копирование на S3 продолжалось часами/днями, а затем сеть переставала функционировать (у меня есть задание, cron
которое каждую минуту записывает пинг в сеть, а также команду S3 aws s3 cp
, поэтому я знаю точную минуту, когда это произошло).
На этом этапе NetworkManager
демон выглядит нормально, syslog
и journalctl -xe
не показывает ничего необычного, но единственный способ снова заставить сеть работать — это перезагрузка.
Ни у одного пользователя на этой машине нет запланированных заданий (crontab) на время, когда сеть перестала нормально функционировать, у машины есть статический IP-адрес, и до момента возникновения проблемы машина и сеть функционировали без проблем.
Есть идеи, как решить эту проблему?
Редактировать 1:
По предложению Артема Ташкинова я добавил в crontab вызов скрипта, который выполняет следующие действия:
#!/bin/bash -xv
ping -c1 1.1.1.1 >/dev/null 2>&1
if [ $? -eq 0 ];
then
echo Successful
else
echo Fail
systemctl stop NetworkManager
rmmod r8169
modprobe r8169
systemctl start NetworkManager
fi
И я посмотрю, сможет ли он оживить сеть, когда она умрет.
Редактировать 2:
Даже при наличии сценария сеть не была восстановлена после сбоя.
Однако я улучшил скрипт, добавив внешнюю сетевую карту, чтобы посмотреть, решит ли это проблему.
#!/bin/bash -xv
#
#kernel_module="r8169" # on-board NIC
#kernel_module="e1000e" # add-on NIC
nic=$( ifconfig | grep -B1 10.60.100 | head -1 | awk -F: '{ print $1 }' )
kernel_module=$( ethtool -i $nic | grep driver | awk '{ print $NF }' )
ping -c1 1.1.1.1 >/dev/null 2>&1
if [ $? -eq 0 ];
#if [ $? -ne 0 ];
then
echo Successful
else
echo Fail
systemctl stop NetworkManager
rmmod $kernel_module
modprobe $kernel_module
systemctl start NetworkManager
fi
решение1
но единственный способ восстановить работоспособность сети — это перезагрузка.
У меня уже были подобные серверы в прошлом.
Я добавил задачу в crontab, пингующую известный IP-адрес. Если он недоступен, сеть отключалась, модуль ядра, отвечающий за NIC, удалялся ( rmmod module_name
) и вставлялся снова ( modprobe module_name
), и, наконец, сеть запускалась снова. Попробуйте, пожалуйста.
Если это работает для вас, вам определенно стоит это сделать.сообщить об ошибке.