X

Neuigkeiten, Best Practices, Hinweise auf Events zu Oracle Solaris auf Deutsch.

Delegated Zones Migration

Detlef Drewanz
Master Principal Sales Consultant

Auch Solaris 11.4Beta hat wieder diverse neue Features zum Thema Virtualisierung und Solaris Zones. Eines davon ist die Unterstützung der Migration von Solaris Zones und Solaris Kernel Zones durch das Kommando zoneadm. Das ist z.B. nützlich, wenn die Verschiebung von Solaris Zonen auf einen anderen Host notwendig ist - aus Gründen der Wartung am Hostsystem oder z.B. auch für eine Verteilung des Workloads. In so einem Falle kann man die Migration der Zonen udnd as "Umhängen" des Zones Storage zwar selber durch Scripting organisieren, besser ist es aber hier ein Kommando zu haben, was mir die Arbeit abnimmt.

Die Live Migration von Solaris Kernel Zones ist bereits seit Solaris 11.3 unterstützt. Neu ist die Unterstützung von Solaris Zones bei der Migration. Der aktualisierte Migrationsprozess entscheidet, ob eine Live Migration möglich ist (nur bei Kernel Zones) oder ob eine kalte Migration erfolgen muss. Da Solaris Zones keine Live Migration unterstützen, wird also nach dem Aufruf von zoneadm migrate hier eine kalte Migration durchgeführt. Es gibt vor allem zwei Voraussetzungen, die dafür erfüllt sein müssen:

  • Die Solaris Zone muss im Zustand installed sein
  • Das zoneroot muss auf Shared Storage liegen. Für Solaris Zones Storage sind hier FC, SAS oder iSCSI LUN's möglich.

In diesem Blog will ich mir das Thema bzgl. Solaris Zones ansehen. (Jan Pechanec hat in seinem Blog vergleichbare Dinge für Kernel Zones gezeigt)

Meine beiden Hosts heißen s11bk und s11bk2 - bk steht hier für Bastelkiste ;-) Als Shared Storage benutze ich eine ZFS Storage Appliance mit iSCSI - zfssabk.

Allerdings will ich nicht - wie oft üblich - die Migration als root-user anstoßen. Anstelle dessen führe ich einen Benutzer migrater ein, der die Rechte erhält, solche Migrationen anzustoßen.

Was ist also der Reihe nach zu tun ?

  1. Die Hosts s11bk und s11bk2 werden mit Solaris 11.4Beta installieren (Das ist schon erledigt)
  2. Der Nutzer migrater wird auf beiden Hosts angelegt
  3. Die ZFSSA zfssabk wird installiert (Das ist schon erledigt)
  4. Das iSCSI Volume auf zfssabk erzeugen.
  5. zone1 als iSCSI ZOSS Zone (Zones on Shared Storage) auf s11bk konfigurieren
  6. zone1 installieren
  7. Die Hosts für die Migration mit vorbereiten.
  8. Migration testen

2. Zum Anlegen des Nutzers migrater auf s11bk und s11bk2 nutze ich das useradd Kommando.

root@s11bk:~# useradd -m migrater
80 blocks
root@s11bk:~# passwd migrater
New Password: 
Re-enter new Password: 
passwd: password successfully changed for migrater
# ... die gleiche Aktion auf s11bk2 wiederholen ...

4. Die Erzeugung der iSCSI Lun über das BUI der ZFSSA ist einfach gemacht. Die GUID der LUN merke ich mir, weil ich die später für die Konfiguration der Zone benötige.

5. Nachdem die iSCSI Lun verfügbar ist, kann die Zone konfiguriert werden. Der Nutzer migrater wird als der Administrator in die Konfiguration eingetragen, der die kalte Migrationen ausführen darf.

root@s11bk:~# zonecfg -z zone1
Use 'create' to begin configuring a new zone.
zonecfg:zone1> create
create: Using system default template 'SYSdefault'
zonecfg:zone1> add admin
zonecfg:zone1:admin> set user=migrater
zonecfg:zone1:admin> set auths=migrate.cold
zonecfg:zone1:admin> end
zonecfg:zone1> add rootzpool
zonecfg:zone1:rootzpool> add storage \
        iscsi://zfssabk/luname.naa.600144F0C4AE9B4100005A67EE550002
zonecfg:zone1:rootzpool> end
zonecfg:zone1> info
zonename: zone1
brand: solaris
anet 0:
   linkname: net0
   configure-allowed-address: true
rootzpool:
   storage: iscsi://zfssabk/luname.naa.600144F0C4AE9B4100005A67EE550002
zonecfg:zone1> commit
zonecfg:zone1> exit

Nach der Konfiguration von migrater als Administrator der Zone sind auch zusätzliche Profiles und Authorizer in dem Profile des Benutzer migrater auf s11bk sichtbar.

migrater@s11bk:~$ auths
solaris.admin.wusb.read,solaris.mail.mailq,
solaris.network.autoconf.read,solaris.zone.migrate.cold/zone1

migrater@s11bk:~$ profiles
Zone Cold Migration
Basic Solaris User
All

6. Nach der Konfiguration kann die Zone installiert werden. Die Integration der Shared Storage Funktionalität führt dazu, daß mit einem zoneadm install diverse Funktionen für iSCSI auf s11bk ausgeführt werden:

  • Konfiguration des iSCSI Clients
  • Discovery und Import der iSCSI Lun
  • Erzeugung des Zone rootpool
root@s11bk:~# zoneadm -z zone1 install
Configured storage resource(s) from:
   iscsi://zfssabk/luname.naa.600144F0C4AE9B4100005A67EE550002
Imported zpool: zone1_rpool
Progress being logged to /var/log/zones/zoneadm.20180206T115420Z.zone1.install
      Image: Preparing at /system/zones/zone1/root.
 Install Log: /system/volatile/install.9033/install_log
 AI Manifest: /tmp/manifest.xml.lZPH8d
  SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml
    Zonename: zone1
Installation: Starting ...
...
root@s11bk:~# zoneadm -z zone1 boot
... First boot Zone Konfiguration ...

7. Im Anschluß ist die Migrationsfähigkeit der Hosts für Zonen herzustellen. Die Zones Migration nutzt den Remote Administration Service (RAD) von Solaris. Darüber wird die kalte Migration mit Solaris Zones gesteuert und darüber wird auch die Live Migration von Solaris Kernel Zones gesteuert.

RAD ermöglicht verschiedene Authentisierungen. Ich nutze in diesem Blog das RAD SSH-Interface. Im Vorfeld müssen deshalb für migrater die entsprechenden ssh Public Keys zwischen den beteiligten Hosts s11bk und s11bk2 bekannt gemacht werden. Zur Überprüfung der ordnungsgemäßen Keyverteilung lohnt sich danach immer ein kleiner Test mit date.

migrater@s11bk:~$ ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa
migrater@s11bk2:~$ ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa
migrater@s11bk:~$ cat .ssh/id_rsa.pub \
                  | ssh s11bk2 'cat >> ~/.ssh/authorized_keys'
migrater@s11bk2:~$ cat .ssh/id_rsa.pub \
                  | ssh s11bk 'cat >> ~/.ssh/authorized_keys'
migrater@s11bk:~$ ssh s11bk2 date
migrater@s11bk2:~$ ssh s11bk date

8. So! Die Konfiguration und die Vorbereitungen sind fertig. Jetzt probieren wir aus. Zunächst bringen wir die Zone in den Zustand installed und dann wird migriert.

migrater@s11bk:~$ pfexec zoneadm -z zone1 migrate ssh://s11bk2
zoneadm: zone 'zone1': Importing zone configuration.
zoneadm: zone 'zone1': configuration failed:
On line 1:
zone1: cannot set. You are not authorized to modify the persistent zone configuration

Hmm, offensichtlich fehlt hier noch etwas...  Ach so. Die Profiles und Authorizer für den Nutzer migrater fehlen noch auf s11bk2. Auf s11bk wurden diese durch die Konfiguration der Zone zone1 gesetzt. Da ich aber diese Zone auf meinem Zielhost s11bk2 noch nicht konfiguriert hatte, fehlen dort auch die entsprechenden Berechtigungen für den Benutzer. Und richtig, ich will hier eine Migration anstoßen, ohne vorher die Zonenkonfiguration auf dem Zielhost erstellt zu haben. Also setze ich die entsprechenden Berechtigungen auch für den Benutzer auf s11bk2 und starte den nächsten Versuch.

root@s11bk2:~# usermod -P +"Zone Cold Migration" \
                       -A +solaris.zone.migrate.cold/zone1 migrater

Damit könnte ich jetzt den nächsten Versuch starten, aber auch der wird fehlschlagen, weil in diesem Falle noch zwei weitere Berechtigungen fehlen. Auf dem Zielsystem ist noch keine Zonenkonfiguration vorhanden. D.h. migrater benötigt auch die Berechtigung eine Zone zu konfigurieren. Solaris 11.4Beta führt auch das Feature des Zones Delegated Restarters ein. Hier wird für jede konfigurierte Zone eine SMF Instanz svc:/system/zones/zone:<zonename> erzeugt, über die der Start der Zone gesteuert wird. Damit benötigt migrater auch smf Berechtigungen, um diese Instanz erzeugen zu können. (Die Fehlermeldung kann hier zunächst ignoriert werden.)

root@s11bk2:~# usermod -P +"Zone Configuration" \
                       -A +solaris.zone.config/zone1 migrater
root@s11bk2:~# usermod -A +solaris.smf.modify migrater
UX: usermod: WARNING: Cannot find authorization solaris.smf.modify.
Diese beiden zusätzlichen Berechtigungen sind nur notwendig, wenn sich die Zonenkonfiguration nicht bereits auf dem Zielhost befindet. Jetzt können wir den nächsten Versuch starten.
migrater@s11bk:~$ pfexec zoneadm -z zone1 migrate ssh://s11bk2
zoneadm: zone 'zone1': Importing zone configuration.
zoneadm: zone 'zone1': Attaching zone.
zoneadm: zone 'zone1': Migration successful.
... super, hat funktioniert ... Und wieder zurück...
migrater@s11bk2:~$ pfexec zoneadm -z zone1 migrate ssh://s11bk
zoneadm: zone 'zone1': Using existing zone configuration on destination.
zoneadm: zone 'zone1': Attaching zone.
zoneadm: zone 'zone1': Migration successful.

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.