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:
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:
* 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.
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
* 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 ]