Hetzner - DokuWiki
OpenSolaris Zones
Inhaltsverzeichnis |
OpenSolaris Zones/Containers
OpenSolaris bietet eine eigene Virtualisierungstechnolgie genannt Container oder Zones, die mit Solaris 10 eingeführt wurde.
Packet Loss
Der weiter unten beschriebene Packet Loss hat seine Ursache in der Konfiguration der Hetzner Switche und einer Variante des ARP Protokolls. Auf der Seite Solaris_DAD ist eine Lösung für dieses Problem beschrieben.
ein Exempel zur Netzwerkvirtualisierung unter Solaris
Meine Erfahrungen mit Open Solaris Zonen im Hetzner Netz war steinig. Der übliche Weg, jeder Zone eine shared IP Adresse in der Zonenkonfiguration zu geben, was nach aussen hin, lediglich ein IP Alias ist, hatte bei mir zur Folge, dass zwar alle Zonen Netzwerkkontakt hatten, aber es Unmengen verlorener Pakete zu allen Zonen, auch der globalen Zonen gab (~ 10 %). Teilweise war der Server minutenlan nicht erreichbar.
Der zweite Versuch, jeder Zone einen virtuellen NIC mit einer Adresse aus einem privaten Bereich zu geben und über NAT am rge0 Interface die Pakate an die Zonen weiterzuleiten ging kurzfristig gut, um nach ein paar Tagen in einem ähnlichen Desater zu ender, wie der erste Versuch.
Als Nächstes habe ich dann den Versuch gemacht über eine routende Zone, die anderen Zonen zu erreichen, was ich hier skizzieren will, da es jetzt schon mehrere Wochen stabil und ruckelfrei läuft.
Gedacht ist es so: Die physikalische Netzkarte (rge0) bekommt die erste zugewiese IP Adresse. Die virtuellen Netzwerkkarten in den Zonen mail und www bekommen je eine zusätzliche zugewiesene IP-Adresse. Die anderen virtuellen Netzwerkkarten bekommen je eine aus dem privaten Bereich 192.168.xxx.yyy Die Netzwerkkarten der Zonen werden über je zwei Switche und die Router Zone erreicht.
Zur Veranschaulichung eine primitive Grafik:
--- global zone ----------------------------------------------------- | -- zone router-- --- zone www ---- | | | | | | | | | +---switch1----+ | | | | vnic10 vnic11 | | | | +--------------+ | | | +---switch0----+ | |---------------| | rge0 vnic0 vnic1 | | | +--------------+ | --- zome mail --- | | | +---switch2- --+ | | | | vnic20 vnic21 | | | | +--------------+ | | | | | | | | | --------------- ----------------- | ---------------------------------------------------------------------
Konkret:
rge0: <1.zugewiesene IP-Adresse>/255.255.255.255 vnic0: 192.168.16.1/255.255.255.248 vnic1: 192.168.16.1/255.255.255.248 vnic10: 192.168.16.10/255.255.255.248 vnic11: <1. zusätzliche IP-Adresse>/255.255.255.255 vnic10: 192.168.16.20/255.255.255.248 vnic11: <2. zusätzliche IP-Adresse>/255.255.255.255
Und so wird es gemacht:
Zuerst werden die virtuellen Switche erstellt:
dladm create-etherstub switch0 dladm create-etherstub switch1 dladm create-etherstub switch2
Dann die virtuellen NICs:
dladm create-vnic -l switch0 vnic0 dladm create-vnic -l switch0 vnic1 dladm create-vnic -l switch1 vnic10 dladm create-vnic -l switch1 vnic11 dladm create-vnic -l switch2 vnic20 dladm create-vnic -l switch2 vnic21
Ausschnitt aus der Zonenkonfiguration der Zone router:
set ip-type=exclusive add net set physical=vnic1 add net set physical=vnic10 add net set physical=vnic20
Ausschnitt aus der Zonenkonfiguration der Zone www:
..... set ip-type=exclusive add net set physical=vnic11
Ausschnitt aus der Zonenkonfiguration der Zone mail:
..... set ip-type=exclusive add net set physical=vnic21
/etc/hostname.vnic* in der Zone router:
/etc/hostname.vnic1:192.168.126.2/29 /etc/hostname.vnic10:192.168.126.10/29 /etc/hostname.vnic20:192.168.126.20/29
/etc/hostname.vnic11 in der Zone www
/etc/hostname.vnic11:<1. zusätzliche IP Adresse>/32
/etc/hostname.vnic11 in der Zone mail
/etc/hostname.vnic11:<2. zusätzliche IP Adresse>/32
Routen:
globale Zone:
route -p add -host <Default Gateway> <1. IP Adresse> -iface route -p add -host <1. zusätzliche IP Adresse> 192.168.126.2 route -p add -host <2. zusätzliche IP Adresse> 192.168.126.2 route -p add -net 192.168.126.8/29 192.168.126.2 route -p add -net 192.168.126.16/29 192.168.126.2 route -p add default <Default Gateway>
Zone router:
route -p add -host <1. IP Adresse>/32 192.168.126.10 -iface route -p add -host <1. zusätzliche IP Adresse>/32 192.168.126.20 -iface route -p add -host <2. zusätzliche IP Adresse>/32 192.168.126.30 -iface route -p add default 192.168.126.1
Zone www:
route -p add -host 192.168.126.10 <1. zusätzliche IP Adresse> -iface route -p add default 192.168.126.10
Zone mail:
route -p add -host 192.168.126.20 <2. zusätzliche IP Adresse> -iface route -p add default 192.168.126.20
Routing enablen in der globalen Zone und der Zone router:
svcadm enable svc:/network/routing/route:default routeadm -e ipv4-forwarding routeadm -e ipv4-routing routeadm -u

