Mehrere Apache-Instanzen starten
Hat man einen Apache 2 über die Ports installiert, können einfach mehrere Apache-Instanzen mit unterschiedlicher Konfiguration gestartet werden. Zuerst muss überprüft werden, ob schon ein Apache installiert ist:
# pkg_info -E apache\*
apache-2.0.61_2
Ist noch kein Apache installiert, kann dieser über die Ports installiert werden:
# cd /usr/ports/www/apache20 && make install clean
Nun können die gewünschten Instanzen in der /etc/rc.conf konfiguriert werden. In folgendem Beispiel werden zwei Instanzen konfiguriert. Eine "frontend"-Instanz welche auch SSL Verbindungen terminiert und eine "backend"-Instanz:
apache2_profiles="frontend backend"
apache2_frontend_enable="YES"
apache2ssl_frontend_enable="YES"
apache2_frontend_configfile="/usr/local/etc/apache2/httpd-frontend.conf"
apache2_backend_enable="YES"
apache2_backend_configfile="/usr/local/etc/apache2/httpd-backend.conf"
Nun müssen die jeweiligen Apache Konfigurationsdateien für die verschieden Instanzen erstellt werden. Dabei können auch unterschiedliche Apache Module geladen werden. Die Instanzen müssen an unterschiedliche IP-Adressen oder Ports gebunden werden:
# grep Listen httpd-frontend.conf ssl-frontend.conf httpd-backend.conf
httpd-frontend.conf:Listen 217.150.245.57:80
ssl-frontend.conf:Listen 217.150.245.57:443
httpd-backend.conf:Listen 192.168.1.38:80
Sind die Instanzen konfiguriert, können diese gestartet werden:
# /usr/local/etc/rc.d/apache2 start
===> apache2 profile: frontend
Performing sanity check on apache2 configuration:
Syntax OK
Starting apache2.
===> apache2 profile: backend
Performing sanity check on apache2 configuration:
Syntax OK
Starting apache2.
Nun kann überprüft werden, ob die Instanzen auch gestartet worden sind:
# netstat -tan | grep LISTEN
tcp4 0 0 192.168.1.38.80 *.* LISTEN
tcp4 0 0 217.150.245.57.443 *.* LISTEN
tcp4 0 0 217.150.245.57.80 *.* LISTEN
# ps ax | grep httpd
23597 ?? Ss 0:00,26 /usr/local/sbin/httpd -DSSL -f /usr/local/etc/apache2/httpd-frontend.conf -c PidFile /var/run/httpd.frontend.pid
23606 ?? Ss 0:00,05 /usr/local/sbin/httpd -f /usr/local/etc/apache2/httpd-backend.conf -c PidFile /var/run/httpd.backend.pid
23607 ?? I 0:00,00 /usr/local/sbin/httpd -DSSL -f /usr/local/etc/apache2/httpd-frontend.conf -c PidFile /var/run/httpd.frontend.pid
23608 ?? I 0:00,00 /usr/local/sbin/httpd -DSSL -f /usr/local/etc/apache2/httpd-frontend.conf -c PidFile /var/run/httpd.frontend.pid
23609 ?? I 0:00,00 /usr/local/sbin/httpd -DSSL -f /usr/local/etc/apache2/httpd-frontend.conf -c PidFile /var/run/httpd.frontend.pid
23610 ?? I 0:00,00 /usr/local/sbin/httpd -DSSL -f /usr/local/etc/apache2/httpd-frontend.conf -c PidFile /var/run/httpd.frontend.pid
23611 ?? I 0:00,00 /usr/local/sbin/httpd -DSSL -f /usr/local/etc/apache2/httpd-frontend.conf -c PidFile /var/run/httpd.frontend.pid
23612 ?? I 0:00,00 /usr/local/sbin/httpd -f /usr/local/etc/apache2/httpd-backend.conf -c PidFile /var/run/httpd.backend.pid
23613 ?? I 0:00,00 /usr/local/sbin/httpd -f /usr/local/etc/apache2/httpd-backend.conf -c PidFile /var/run/httpd.backend.pid
23614 ?? I 0:00,00 /usr/local/sbin/httpd -f /usr/local/etc/apache2/httpd-backend.conf -c PidFile /var/run/httpd.backend.pid
23615 ?? I 0:00,00 /usr/local/sbin/httpd -f /usr/local/etc/apache2/httpd-backend.conf -c PidFile /var/run/httpd.backend.pid
23616 ?? I 0:00,00 /usr/local/sbin/httpd -f /usr/local/etc/apache2/httpd-backend.conf -c PidFile /var/run/httpd.backend.pid
In der /etc/rc.conf können noch weitere Variablen für den Apache konfiguriert werden, diese findet man in der Datei /usr/local/etc/rc.d/apache2.
Comments
Danke, aber ich habe eine Frage: Wie kann man es sicherstellen, dass im Fall einer Ausfall von einer Apache- Instanz man automatisch auf die andere Instanz kommt (weil sie ja unterschiedlichen IP/Ports haben) ohne die URL zu wechseln? Also meine 2 te Apache dient quasi als Absicherung für Ausfall von erster und Client muss dann in diesem Fall automatisch darauf (auf die 2 te) zugreifen.
Danke im Vorraus.
Ich denke nicht, dass das Haupteinsatzgebiet von mehreren Apache Instanzen die Ausfallssicherheit ist, da beide Instanzen bei zum Beispiel einem Hardware-Problem, einer Kernelpanic oder einem Ressourcenengpass nicht mehr erreichbar sind. Vielmehr sehe ich das Haupteinsatzgebiet bei mehreren Instanzen die mit unterschiedlicher Konfigurationen wie zum Beispiel unterschiedlich geladenen Apache-Modulen laufen.