Zelfs het meest veilige datacenter kan niet voorkomen dat hardware van tijd tot tijd defect raakt. Daarom is het voor bedrijfskritische processen nuttig om servers redundant op te zetten zodat als er een server uitvalt, dat niet betekent dat je gehele infrastructuur uitvalt.
In deze handleiding laten we zien hoe je een Nginx-server redundant en met loadbalancing opzet. Hiervoor maken we gebruik van:
Je kunt deze setup ook opschalen naar meerdere VPS'en en domeinen. Het process dat in dit artikel beschreven wordt blijft hetzelfde.
- Host je dynamische websites en ben je op zoek naar hoe je ook je database server redundant opzet? Neem dan een kijkje in onze redundantie tutorial series.
- Het doel van deze setup is redundantie zodat als een availability zone onbereikbaar wordt, jouw website in de lucht blijft. We raden daarom aan je VPS'en geografisch te scheiden en er bijvoorbeeld één in Amsterdam te plaatsen en één in Delft (RTM).
HA-IP Pro configureren
TL;DR: koppel 2 VPS'en en stuur poorten 80 en 443 door in proxy modus.
Ga in je controlepaneel naar je HA-IP Pro en klik op het tandwiel achter 'Overzicht'.
Stap 2
Vink de blokjes onder 'Gekoppeld' aan bij de VPS'en die je wil gebruiken.
Als je veel VPS'en gebruikt, kun je de opties 'VPS zoeken' gebruiken om op VPS-naam te zoeken, of op 'Alle beschikbare VPS'en' klikken om een overzicht van al je VPS'en te tonen.
Stap 3
Ga terug naar de vorige pagina en klik nu op het tandwiel achter 'Instellingen HA-IP'.
Stap 4
Pas de instellingen van je HA-IP Pro aan als volgt:
-
Loadbalancing: bepaalt de loadbalancing methode. Je bent vrij in welke optie je hier kiest.
-
Poort-instellingen: Voeg de volgende poort-instellingen toe:
Naam: HTTP HA-IP poort: 80 Modus: PROXY VPS-poort: 80 SSL naar VPS: uit
Naam: HTTPS HA-IP poort: 443 Modus: PROXY VPS-poort: 443 SSL naar VPS: uit
We gebruiken PROXY-modus; Bij de PROXY-modus wordt al het verkeer inclusief alle informatie van de originele request doorgestuurd. In dit Knowledge Base-artikel leggen wij de verschillen tussen de doorstuurmodi verder uit.
-
IPv6-configuratie: Je bent ook hier vrij in je keuze, zie deze handleiding voor meer informatie. VPS'en die gebruik maken van DHCP-netwerkconfiguratie kunnen de standaard optie 'IPv6 ingeschakeld' gebruiken.
-
Health checks: deze optie controleert of de poorten van de gekoppelde VPS’en verkeer accepteren. Geef hier een waarde tussen de 2 en 5 seconden op. Je kunt optioneel ook gebruik maken van HTTP health checks, zie dit artikel.
-
Reverse DNS: Stel hier een subdomein in voor reverse DNS checks. Vergeet niet ook daadwerkelijk dit subdomein in je DNS-instellingen naar je HA-IP Pro te verwijzen.
Ga nu verder met het volgende onderdeel. Je hoeft in je HA-IP Pro instellingen dankzij het gebruik van PROXY modus geen SSL-certificaat in te stellen.
DNS configureren
Wijs de DNS-records van je domein naar je HA-IP Pro, zoals in het voorbeeld hieronder.
- De root- en wildcard-records verwijzen naar je HA-IP Pro. Gebruik hiervoor het IPv4- en IPv6-address van je HA-IP Pro, zie stap 1 in de vorige paragraaf. Dit zorgt ervoor dat je domein (bijv example.com), Reverse DNS (bijv mail.example.com) en andere subdomeinen (bijv www.example.com) allemaal naar je HA-IP Pro verwijzen.
- Andere records zoals MX-records, of een record voor je hostname zijn optioneel en ben je vrij zelf toe te voegen.
Je VPS'en configureren
Voor de configuratie van je VPS'en richten we één VPS in. Vervolgens maak je een snapshot en zet je die terug op de tweede VPS. Tot slot pas je bij de tweede VPS je netwerkconfiguratie aan.
Stap 1
Verbind met één van je gekoppelde VPS'en via SSH of de VPS-console in het TransIP-controlepaneel.
Stap 2
Installeer Nginx met PHP-ondersteuning op je VPS, zie bijvoorbeeld onze handleidingen voor Ubuntu/Debian of CentOS Stream/AlmaLinux/Rocky Linux (vergeet niet poort 80 en 443 te openen in je firewall(s).
Installeer vervolgens een (Sectigo) SSL-certificaat op je server, zie deze handleiding.
Stap 3
Open het server block van je domein, bijvoorbeeld:
nano /etc/nginx/sites-available/example.com
Stap 4
Pas het server block aan zoals in dit voorbeeld. Vervang daarbij example.com door je eigen domeinnaam. Tip: gebruik SSH in plaats van de VPS-console, dan kun je de onderstaande code kopiëren en in het geopende bestand plakken.
server {
root /var/www/example.com/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
listen [::]:443 ssl ipv6only=on proxy_protocol;
listen 443 ssl proxy_protocol;
ssl_certificate /etc/pki/nginx/example.com/ssl-bundle.crt;
ssl_certificate_key /etc/pki/nginx/example.com/certificate.key;
ssl_prefer_server_ciphers on;
## OCSP Stapling
resolver 127.0.0.1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/pki/nginx/example.com/ssl-bundle.crt;
}
server {
if ($host = example.com) {
return 301 https://$host$request_uri;
}
listen 80 proxy_protocol;
listen [::]:80 proxy_protocol;
server_name example.com www.example.com;
return 404;
}
- Met deze setup wordt HTTP verkeer naar HTTPS geredirect
- Nginx heeft uitstekende PROXY-ondersteuning voor loadblance setups. De listen directive toevoeging proxy_protocol is het enige dat nodig is in een al correct geconfigureert server block om PROXY-ondersteuning in te schakelen.
Stap 5
Sla de wijzigingen op en sluit het bestand (ctrl + x > y > enter). Herstart vervolgens Nginx om de wijzigingen te verwerken.
systemctl restart nginx
Krijg je een foutmelding? Controleer dan je configuratie met:
nginx -t
Stap 6
Maak een snapshot van je VPS en plaats die terug op de tweede VPS.
Stap 7
Controleer de netwerkconfiguratie van je tweede VPS, zie onze handleidingen voor Ubuntu 18.04, 20.04 en CentOS 7 en 8. Als deze geen gebruik maakt van DHCP voor IPv4 en/of IPv6 moet je hier het IPv4- en/of IPv6-adres van je tweede VPS statisch instellen.
Testen
Je setup is nu klaar! Een leuke manier om deze te testen is door bijvoorbeeld een test-bestandje aan te maken op je server, e.g. /var/www/example.com/html/test.html en daar de volgende inhoud in te plaatsen:
<!DOCTYPE html>
<html>
<head>
<title>HA-IP Sample</title>
</head>
<body>
<p>Server 1</p>
</body>
</html>
Op server 2 geef je het bestand dezelfde inhoud maar dan met de tekst Server 2. Je kunt nu de werking van je setup in je browser testen door naar de pagina test.html op je domein te gaan (e.g. example.com/test.html) en de pagina een aantal keer te herladen. Gebruik je geen round robin loadbalancing methode? Schakel dan op een van de VPS'en Nginx uit om de werking te testen.
Daarmee zijn we aan het eind gekomen van deze handleiding voor het opzetten van een redundante Nginx-setup met twee VPS'en en HA-IP Pro.
Mocht je aan de hand van dit artikel nog vragen hebben, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' onderaan deze pagina.