[RESOLU] Reboot serveur automatique

Reboot serveur automatique [RESOLU] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 25-07-2013 à 09:25:58    

Bonjour,
 
J'ai deux serveurs linux identiques que je souhaite faire rebooter dans la nuit du jeudi à vendredi alternativement.
Exemple pour le mois d'aout par exemple : le 2 à 2h00, le serveur 1 reboot, le 9 ce sera le serveur 2, le 16 ce sera de nouveau le serveur 1 etc ...
Donc les serveurs rebooteront TOUTES les 2 semaines.
 
Je souhaite passer par Crontab (ai je le choix ?)
 
 
je pensais inscrire cette ligne : 00 02 * * 4/2 usr/bin/reboot> /dev/null 2>&1
Ai-je bon ?
Sachant que je suis une quiche lorraine en Linux, j'ai surement mal interprété le Wiki sur Crontab http://fr.wikipedia.org/wiki/Crontab
 
Merci d'avance !


Message édité par Omar Cheifrai le 02-08-2013 à 14:46:15
Reply

Marsh Posté le 25-07-2013 à 09:25:58   

Reply

Marsh Posté le 26-07-2013 à 14:13:01    

Personne n'a d'avis ? Ou peut etre que c'est pas clair mon explication :s

Reply

Marsh Posté le 26-07-2013 à 15:39:57    

pourquoi rebooter les serveurs toutes les 2 semaines ?


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 26-07-2013 à 15:57:12    

une histoire de cache à vider et de validation que tout refonctionne en cas de reboot intempestif ou voulu

Reply

Marsh Posté le 29-07-2013 à 11:27:56    

Je ne suis pas sûr de la syntaxe avec les jours de la semaine. Le mieux c'est de tester dans une machine virtuelle en changeant la date, ou de poser un flag à l’exécution et de tester son âge dans ta ligne cron. Si plus ancien qu'1 semaine -> exécution.


---------------
"Your god is too small", Giordano Bruno, 1548 - 1600
Reply

Marsh Posté le 31-07-2013 à 09:30:07    

Un collègue me propose de faire en fonction des semaines paires et impaires en lançant un script tous les vendredi et ça donnerais :
 
if [ $(($date +"%U" ) % 2)) -eq 0 ]
then
le reboot
fi
 
 
ça semble logique dans mon esprit, mais dans le votre ? :D

Message cité 1 fois
Message édité par Omar Cheifrai le 31-07-2013 à 09:30:34
Reply

Marsh Posté le 31-07-2013 à 10:38:05    

Mouais, ça me paraît bizarre aussi de devoir rebooter toutes les 2 semaines, et par défaut j'opterais pour une inscription "en dur" dans le cron sur chaque serveur [:spamatounet]

 

Pour rappel les champs de cron sont :
- minute
- heure
- jour du mois
- mois
- jour de la semaine
Aussi le cron ne s'édite qu'avec la commande crontab -e, surtout ne pas l'éditer directement avec vi/vim/nano car la commande lance un verrouillage en exécution des crons en cours. Si t'édites et que tu as un cron qui se lance au moment de l'enregistrement, ça peut être folklorique :D

 

Du genre serveur 1 :

Code :
  1. 00 02 02 * * usr/bin/reboot> /dev/null 2>&1
  2. 00 02 16 * * usr/bin/reboot> /dev/null 2>&1


Serveur 2 :

Code :
  1. 00 02 09 * * usr/bin/reboot> /dev/null 2>&1
  2. 00 02 23 * * usr/bin/reboot> /dev/null 2>&1


Reboot donc à 2h du matin (heure sur le serveur) :
- serveur 1 les 2 et 16 de chaque mois
- serveur 2 les 9 et 23 de chaque mois

 

Mais bon encore une fois, bizarre de redémarrer un serveur pour vider du cache et revalider quelque chose, alors qu'il doit y avoir moyen de le faire plus proprement qu'un reboot à l'arraché. Idem le coup du "usr/bin/reboot> /dev/null 2>&1" alors qu'il faudrait balancer ça dans un fichier de log à part histoire de vérifier par la suite qu'il n'y a pas de problème.
Dis-nous plutôt de quel(s) genre(s) de serveurs il s'agit...


Message édité par bardiel le 31-07-2013 à 10:41:25

---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 31-07-2013 à 11:13:46    

redémarrer trop souvent est un peu "stupide" dans le cas général.
c'est même un risque puisqu'il y a des sollicitations particulières lors du reboot, au niveau du hard....genre des petits pics de courants ce genre de chose qui accélèrent la fin de la durée de vie naturelle des composants...(je sais c'est de l'ordre du négligeable en théorie)
 
parenthèse amusante :

redémarrer un serveur tous les 15 jours j'ai connu qu'une fois dans ma vie (c'est la 15iaime année que je travail...), et c'était la femme de ménage qui avait pour instruction d'utiliser une prise bien précise pour son aspirateur et un jour sur cette prise il y a eu une rangée de serveur... et on a vu qu'il redémarrait tous 15jours le jeudi soir  aléatoirement entre 18 et 19h....ça a du prendre genre 6 mois pour comprendre  le défaut....et entre temps bien sur ... on eu droit à tout.... des disques qui ont lâches.... des boot échoués... des filesystems corrompus....etc...etc....on a même fini par accuser le fabriquant pour avoir fournie une serie défectueuse puisque seule le boitier à la fin n'avait pas été remplacé....  
parce qu'on comprenait pas d'où ça venait forcément on a tout changé...  
en 2004 dans une industrie très connue mondialement de l’électronique, cette histoire est désormais célèbre dans le monde du SI.

fin de la parenthèse amusante...
 
rebouter de façon planifiée.... perso je préconiserai plus un arrêt machine. surtout avec une si forte fréquence, puis la machine qui est "up" envoi un wake-on-lan 30 minutes plus tard à la machine éteinte....c'est déjà moins risqué...
 
sinon tu peux garder ton principe de base, mais réduit la fréquence... genre tous les 2 mois... ou faire les deux (arrêt complet+réduire la fréquence)
 
-----------------------------------
 
maintenant pour revenir à l'histoire des caches à vider... ça se gère très bien au niveau software sans reboot ça.....
un simple script qui fait un arrêt/redémarrage de certains services et/ou applications et qui purge les caches entre les deux actions.... voir même mieux qui stoppe l'action des applications/services sans les couper, purgent et libèrent les activités naturelles des applications/services concernés....
 
ce qui est une bien meilleurs méthode... par contre oui là faut apprendre un peu plus profondément linux, et l'architecture soft des machines que tu as en charge... c'est long et rébarbatif si tu es débutant mais ça vaut le coup de s'y pencher.
 
 
 
 


---------------
Collectionner les vieux serveurs c'est chouette mais c'est lourd et ça prend de la place ;)
Reply

Marsh Posté le 31-07-2013 à 11:25:37    

Omar Cheifrai a écrit :

Un collègue me propose de faire en fonction des semaines paires et impaires en lançant un script tous les vendredi et ça donnerais :
 
if [ $(($date +"%U" ) % 2)) -eq 0 ]
then
le reboot
fi
 
 
ça semble logique dans mon esprit, mais dans le votre ? :D


 
 
y'a encore plus simple... suffit que les machinent flagueut...(un fichier dans /var.... par exemple) le quel des deux à rebooter le dernier et donc seul l'autre à droit de rebooter cette fois ci....
 
bien sur l’intérêt de faire un flag c'est que si il y a des reboot manuels entre temps ça ne perturbe pas la sélection planifiée  
alors que le coup du date... il suffit que le serveur ne soit pas à la bonne date pour une raison X ou Y pour que ça perturbe le truc...(je sais ça arrive jamais ... ou presque) mais je suis un peu parano :hello:


---------------
Collectionner les vieux serveurs c'est chouette mais c'est lourd et ça prend de la place ;)
Reply

Marsh Posté le 31-07-2013 à 14:20:48    

Merci de vous intéresser à mon problème :)
 
Ce sont des serveurs qui font office de "cache" pour de la donnée financière (flux marché)
Le reboot est une préconisation du fournisseur de service qui a mis en place l'appli sur le serveur. Ils préconisent des faire d'ailleurs des reboot toutes les semaines ... mais on (le client) préfère les faire rebooter alternativement pour ne pas se retrouver en carafe si ça plante pour une raison X ou Y.
 
Pour la commande crontab -e uniquement, merci de l'info, je n'aurais pas pu me douter du problème que ça engendrerait avec vi !
 
@bardiel, il ne sera pas possible de les faire rebooter a des dates précises car il faut que ce soit obligatoirement dans la nuit du jeudi au vendredi (avec le décalage des jours selon les mois, ça pourrait rebooter le lundi soir et faire planter le truc jusqu'au mercredi (cas extrême) et le retour en prod serait impacté et les pertes financières catastrophiques)
 
@goblin-rieur Je peux pas mettre la main dans l'appli du presta. Ils en sont responsables tout ça. D'où le besoin de reboot car dans leur préconisation.

Message cité 1 fois
Message édité par Omar Cheifrai le 31-07-2013 à 14:21:49
Reply

Marsh Posté le 31-07-2013 à 14:20:48   

Reply

Marsh Posté le 31-07-2013 à 14:23:21    

Pour info, je me suis monté un CentOS 6.4 sur une bécane virtuelle et faire des tests  
(j'en ai déjà chié pour configurer le réseau sans passer par la gui de l'install  :o )

Message cité 1 fois
Message édité par Omar Cheifrai le 31-07-2013 à 14:23:34
Reply

Marsh Posté le 31-07-2013 à 14:40:54    

oui donc là effectivement le crontab est une bonne solution.


---------------
Collectionner les vieux serveurs c'est chouette mais c'est lourd et ça prend de la place ;)
Reply

Marsh Posté le 31-07-2013 à 14:51:27    

Omar Cheifrai a écrit :

Pour info, je me suis monté un CentOS 6.4 sur une bécane virtuelle et faire des tests  
(j'en ai déjà chié pour configurer le réseau sans passer par la gui de l'install  :o )


Tu peux mettre ton test dans la ligne cron elle-même si tu veux garder ça compact.


---------------
"Your god is too small", Giordano Bruno, 1548 - 1600
Reply

Marsh Posté le 31-07-2013 à 15:03:48    

roscocoltran a écrit :


Tu peux mettre ton test dans la ligne cron elle-même si tu veux garder ça compact.


 
Comment ça ?
tout se passe pas dans le fichier dédié du crontab dans /var/spool/cron/root ?

Reply

Marsh Posté le 31-07-2013 à 15:12:30    

Omar Cheifrai a écrit :

@bardiel, il ne sera pas possible de les faire rebooter a des dates précises car il faut que ce soit obligatoirement dans la nuit du jeudi au vendredi (avec le décalage des jours selon les mois, ça pourrait rebooter le lundi soir et faire planter le truc jusqu'au mercredi (cas extrême) et le retour en prod serait impacté et les pertes financières catastrophiques)


Ah ça, tu ne nous l'avait pas précisé, juste un reboot toutes les 2 semaines.
Dans ce cas, je taperais un truc du genre pour le serveur 1 :

Code :
  1. 00 02 1-7 * 5 usr/bin/reboot> /dev/null 2>&1
  2. 00 02 15-21 * 5 usr/bin/reboot> /dev/null 2>&1


Serveur 2 :

Code :
  1. 00 02 8-14 * 5 usr/bin/reboot> /dev/null 2>&1
  2. 00 02 22-31 * 5 usr/bin/reboot> /dev/null 2>&1


Pour avoir tous les mois, à 2h du matin :
- serveur 1 : entre le 1er et le 7, un vendredi -> reboot. Entre le 15 et le 21, un vendredi -> reboot.
- serveur 2 : entre le 8 et le 14, un vendredi -> reboot. Entre le 22 et le 31, un vendredi -> reboot.
C'est un peu crade, mais ça devrait faire le taf :o
 
Autrement tu fais par script, quelques pistes ici.

Message cité 1 fois
Message édité par bardiel le 31-07-2013 à 15:15:34

---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 31-07-2013 à 15:13:48    

ce que je veux dire c'est que tu peux mettre ton test dans la ligne contab:
 
# Run the `monday` command every monday at 2 AM
0 2 * * 1 /usr/local/bin/monday
 
là tu n'es pas forcé de juste mettre l'appel du script mais tu peux déjà insérer le test de ton flag. dans ce style
 
0 2 * * 4 test $(date +\%u) -eq 2 && /sbin/shutdown -r now


---------------
"Your god is too small", Giordano Bruno, 1548 - 1600
Reply

Marsh Posté le 31-07-2013 à 15:23:58    

bardiel a écrit :


Ah ça, tu ne nous l'avait pas précisé, juste un reboot toutes les 2 semaines.
Dans ce cas, je taperais un truc du genre pour le serveur 1 :

Code :
  1. 00 02 1-7 * 5 usr/bin/reboot> /dev/null 2>&1
  2. 00 02 15-21 * 5 usr/bin/reboot> /dev/null 2>&1


Serveur 2 :

Code :
  1. 00 02 8-14 * 5 usr/bin/reboot> /dev/null 2>&1
  2. 00 02 22-31 * 5 usr/bin/reboot> /dev/null 2>&1


Pour avoir tous les mois, à 2h du matin :
- serveur 1 : entre le 1er et le 7, un vendredi -> reboot. Entre le 15 et le 21, un vendredi -> reboot.
- serveur 2 : entre le 8 et le 14, un vendredi -> reboot. Entre le 22 et le 31, un vendredi -> reboot.
C'est un peu crade, mais ça devrait faire le taf :o
 
Autrement tu fais par script, quelques pistes ici.


 
 
Merci pour le lien, je vais zieuter.
 
Par contre, avec ton idée de caler le reboot à des tranche de dates, ça ne marchera pas les mois ou ils y a 5 fois le même jour (genre aout 2013) :(

Reply

Marsh Posté le 31-07-2013 à 15:26:49    

roscocoltran a écrit :

ce que je veux dire c'est que tu peux mettre ton test dans la ligne contab:
 
# Run the `monday` command every monday at 2 AM
0 2 * * 1 /usr/local/bin/monday
 
là tu n'es pas forcé de juste mettre l'appel du script mais tu peux déjà insérer le test de ton flag. dans ce style
 
0 2 * * 4 test $(date +\%u) -eq 2 && /sbin/shutdown -r now


 
Oui ok, je vois ce que tu veux dire (je crois :) )

Reply

Marsh Posté le 31-07-2013 à 21:05:35    

Omar Cheifrai a écrit :

Par contre, avec ton idée de caler le reboot à des tranche de dates, ça ne marchera pas les mois ou ils y a 5 fois le même jour (genre aout 2013) :(


 [:transparency]  
En août 2013 les vendredis sont le 2, 9, 16, 23, 30.
En demandant les vendredis uniquement dans les tranches :
- 1-7 -> j'ai le 2
- 8-14 -> 9
- 15-21 -> 16
- 22-31 -> 23 et 30.
Effectivement, un reboot de trop [:manust]  
 
Bon, go taper sur le flag alors.


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 01-08-2013 à 17:03:28    

bonjour à tous,
 
Voice le resultat finalement et qui est fonctionnel  
 
Crontab serveur 1 et 2

Code :
  1. 0 2 * * 5 /var/spool/cron/monscript.sh > /dev/null 2>&1


 
monscript.sh serveur 1
 

Code :
  1. num=$(date +"%U" )
  2. rest=$(($num % 2))
  3. if [ $rest -eq 0 ]
  4. then
  5. /sbin/shutdown -r now
  6. fi


 
monscript.sh serveur 2
 

Code :
  1. num=$(date +"%U" )
  2. rest=$(($num % 2))
  3. if [ $rest -ne 0 ]
  4. then
  5. /sbin/shutdown -r now
  6. fi


 
Et ça fonctionne au poil :)
Merci de votre aide dans tous les cas !


Message édité par Omar Cheifrai le 01-08-2013 à 17:04:27
Reply

Marsh Posté le 03-08-2013 à 15:36:27    

Plutôt que passer par un script.
Serveur 1:

Code :
  1. 0 2 * * 5 expr `date +\%U` \% 2 > /dev/null && /sbin/shutdown -r now


Serveur 2

Code :
  1. 0 2 * * 5 expr `date +\%U` \% 2 > /dev/null || /sbin/shutdown -r now


Message édité par roondar le 03-08-2013 à 15:40:53
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed