Startup volgorde van services in CentOS 6.4

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Pinyin
  • Registratie: September 2002
  • Laatst online: 30-06 22:35
Op mijn huidige werk maken we sinds enige tijd voor een deel van de serverfarm gebruik van CentOS 6.4 als guestOS.
We gebruiken het voor het hosten van dingen als webservices (Apache),reverse proxy (haproxy), loadbalancing (Keepalived+LVS), tijdsynchronisatie (NTPD) en recursieve DNS. (PDNS-Recursor).
Dit werkt allemaal prima, maar er is 1 ding wat niet lekker werkt.

Elke keer als ik een VM met CentOS 6.4 herstart start de network-service later op dan de applicaties die erop draaien. Het gevolg is dat die applicaties niet goed op komen, omdat de networkservice nog niet gestart is.* Dit gedrag is consistent en komt op alle 12 virtual machines die we nu op CentOS hebben draaien. Volgens mij heeft dit met de bootorder van de services te maken, maar ik krijg er maar niet de vinger achter hoe ik het oplos.

Dit is wat ik zie als ik een listing opvraag van rc3.d:
root@tuxdoosje1:~$ ls -al /etc/rc3.d/
<output omitted>
lrwxrwxrwx. 1 root root 17 Nov 29 20:36 S99network -> ../init.d/network

Echter, als ik de inhoud van /etc/init.d/network opvraag zie ik dit lsb-block staan:
#! /bin/bash
#
# network       Bring up/down networking
#
# chkconfig: 2345 10 90
# description: Activates/Deactivates all network interfaces configured to \
#              start at boot time.
#
### BEGIN INIT INFO
# Provides: $network
# Should-Start: iptables ip6tables
# Short-Description: Bring up/down networking
# Description: Bring up/down networking
### END INIT INFO
....


Ik zou dus een symlink verwachten naar S10network, maar er staat echt s99network. Hierdoor komt de networkservice zo'n beetje als laatste aan de beurt bij het opstarten.

Wat heb ik geprobeerd:
  • chkconfig network off &
  • chkconfig network on
  • de inhoud van /etc/init.d/network vergelijken met dat van init.d-bestanden die zich wel aan de bootorder houden.
  • googlen
Kortom, ik snap het even niet. Waarschijnlijk zie ik iets over het hoofd, maar wat precies?

* Voor de beeldvorming: 2 voorbeelden van zo'n applicatie betreffen HaProxy en Apache.
Ik heb het standaard init-script aangepast zodat voor het starten van de deamon eerst alle configfiles worden geparsed. Daarbij vis ik de te binden ipadressen uit de configfiles zodat ik die adressen eerst op de interface kan zetten. Elke vhost luistert in principe op een eigen ipadres en om maximale flexibiliteit te behouden wil ik die ipadressen graag dynamisch op het betreffende netwerkkaart instellen. Zodra het betreffende process wordt gestopt haalt het init-script de ipadressen weer van de interface af.
Een soort gelijke constructie gebruik ik ook om iptables in te stellen, zodat alleen verkeer wordt toegelaten dat voor de betreffende host is bedoelt.

[ Voor 4% gewijzigd door Pinyin op 29-11-2013 21:15 . Reden: Geprobeerde dingen toevoegen ]


Acties:
  • 0 Henk 'm!

Verwijderd

S10network is inderdaad standaard. De vraag is wie of wat er met zijn poten aan die scripts heeft gezeten. Gebruik je een control panel? Configuration management?

Hoe zijn die servers geïnstalleerd?

Acties:
  • 0 Henk 'm!

  • Pinyin
  • Registratie: September 2002
  • Laatst online: 30-06 22:35
Opgelost! Met dank aan Cheatah voor de pointers.

Naar aanleiding van je opmerking ben ik stapsgewijs nagegaan hoe wij onze CentOS machines inrichten* en al snel kwam ik op het spoor van het (homemade) init-script waarmee we iptables configureren. Via chkconfig is geregeld dat dit script wordt afgetrapt tijdens het opstarten van het OS en het lijkt erop dat het LSB-block niet klopte.

Dit was wat er in het script /etc/init.d/ipfilter stond:
#!/bin/sh

### Single host firewall script #####################
#
# This script will configure IPtables the way we want.
# Additional rules to open port for services should be added in seperate scripts
#  in the /etc/ipfilter directory. These will be included from within this script.
#
######################################################

### BEGIN INIT INFO
# Provides:       iptables
# Required-Start: network
# Required-Stop:  network
# Default-Start:  2 3 5
# Default-Stop:   0 1 6
# Description:    Configure iptables
### END INIT INFO
<Output omitted>


Vermoedelijk conflicteerde dit met het eigenlijke init-script van iptables.
Ik heb er nu dit van gemaakt:

#!/bin/sh
#
# Single host firewall script
#
# chkconfig: 2345 90 10
# description: Configures IPtables the way we want
#
### BEGIN INIT INFO
# Provides:       ipfilter
# Required-Start: network
# Required-Stop:  network
# Default-Start:  2 3 5
# Default-Stop:   0 1 6
# Description:    Configure iptables
### END INIT INFO
#
# This script will configure IPtables
#  Additional rules to open port for services should be added in seperate scripts
#  in the /etc/ipfilter directory. These will be included from within this script.
<output omitted>


en dat lijkt te werken. Vervolgens was een eenvoudig "chkconfig ipfilter off;chkconfig network off;chkconfig network on; chkconfig ipfilter on" voldoende om het probleem te verhelpen. Het onderliggende probleem dat applicaties niet goed op kwamen na een reboot is hiermee ook meteen verholpen.

Dank! :)


* Wellicht leuk om te vertellen: m.b.v. dit artikel heb ik een unattended install gemaakt van CentOS waarbij o.a. de VMware tools en zabbix-agent worden geslipstreamed. Aan het einde van de unattended install wordt een naconfiguratiescript afgetrapt waarmee bijv. nmon en ipfilt worden geinstalleerd. Ook worden zaken als zabbix-agent,logrotation, proxysettings tbv Yum en de sudo-files ingericht. Op deze wijze rollen we een uniform ingerichte VM uit in +/- 10 minuten. Op soortgelijke wijze installeren we onze applicaties, vaak in minder dan 1 minuut incl. naconfiguratie. Het uitzoeken en scripten van deze zaken kost even wat tijd&energie, maar we hebben er een hoop gemak van. :)

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Voor je laatste deel lijkt Puppet een betere tool dan wat je nu doet. Nou heb ik nog niet met Puppet gewerkt, dus het is even nagaan of het zo is, maar het klinkt meer als het wiel opnieuw uitvinden wat Puppet al gedaan heeft.

Commandline FTW | Tweakt met mate