Een op CentOS gebaseerde virtuele Azure-machine voorbereiden
Van toepassing op: ✔️ Flexibele schaalsets voor Linux-VM's ✔️
Leer hoe u een virtuele harde schijf (VHD) van Azure maakt en uploadt die een Linux-besturingssysteem op basis van CentOS bevat.
- Een virtuele CentOS 6.x-machine voorbereiden voor Azure
- Een CentOS 7.0+ virtuele machine voorbereiden voor Azure
Vereisten
In dit artikel wordt ervan uitgegaan dat u al een CentOS-besturingssysteem (of een soortgelijk afgeleid) Linux-besturingssysteem hebt geïnstalleerd op een virtuele harde schijf. Er bestaan meerdere hulpprogramma's om VHD-bestanden te maken, bijvoorbeeld een virtualisatieoplossing zoals Hyper-V. Zie De Hyper-V-rol installeren en een virtuele machine configureren voor instructies.
CentOS-installatienotities
- Zie ook Algemene linux-installatieopmerkingen voor meer tips over het voorbereiden van Linux voor Azure.
- De VHDX-indeling wordt niet ondersteund in Azure, alleen vaste VHD. U kunt de schijf converteren naar VHD-indeling met Hyper-V-beheer of de cmdlet convert-vhd. Als u VirtualBox gebruikt, betekent dit dat u vaste grootte selecteert in plaats van de standaard dynamisch toegewezen bij het maken van de schijf.
- Bij het installeren van het Linux-systeem wordt aanbevolen dat u standaardpartities gebruikt in plaats van LVM (vaak de standaardinstelling voor veel installaties). Dit voorkomt conflicten met LVM-naam met gekloonde VM's, met name als een besturingssysteemschijf ooit moet worden gekoppeld aan een andere identieke VM voor probleemoplossing. LVM of RAID kan worden gebruikt op gegevensschijven.
- Kernelondersteuning voor het koppelen van UDF-bestandssystemen is vereist. Bij het eerste opstarten in Azure wordt de inrichtingsconfiguratie doorgegeven aan de Virtuele Linux-machine via UDF-geformatteerde media die aan de gast zijn gekoppeld. De Azure Linux-agent moet het UDF-bestandssysteem kunnen koppelen om de configuratie ervan te lezen en de VM in te richten.
- Linux-kernelversies lager dan 2.6.37 bieden geen ondersteuning voor NUMA op Hyper-V met grotere VM-grootten. Dit probleem heeft voornamelijk invloed op oudere distributies met behulp van de upstream Red Hat 2.6.32-kernel en is opgelost in RHEL 6.6 (kernel-2.6.32-504). Systemen met aangepaste kernels die ouder zijn dan 2.6.37 of RHEL-kernels ouder dan 2.6.32-504 moeten de opstartparameter
numa=offinstellen op de kernel-opdrachtregel in grub.conf. Zie Red Hat KB 436883 voor meer informatie. - Configureer geen wisselpartitie op de besturingssysteemschijf. Meer informatie hierover vindt u in de onderstaande stappen.
- Alle VHD's in Azure moeten een virtuele grootte hebben die is afgestemd op 1 MB. Bij het converteren van een onbewerkte schijf naar VHD moet u ervoor zorgen dat de onbewerkte schijfgrootte een veelvoud van 1 MB is voordat deze wordt geconverteerd. Zie Linux-installatieopmerkingen voor meer informatie.
CentOS 6.x
Selecteer in Hyper-V-beheer de virtuele machine.
Klik op Verbinding maken om een consolevenster voor de virtuele machine te openen.
In CentOS 6 kan NetworkManager de Azure Linux-agent verstoren. Verwijder dit pakket door de volgende opdracht uit te voeren:
sudo rpm -e --nodeps NetworkManagerMaak of bewerk het bestand
/etc/sysconfig/networken voeg de volgende tekst toe:NETWORKING=yes HOSTNAME=localhost.localdomainMaak of bewerk het bestand
/etc/sysconfig/network-scripts/ifcfg-eth0en voeg de volgende tekst toe:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=noWijzig udev-regels om te voorkomen dat statische regels worden gegenereerd voor de Ethernet-interface(s). Deze regels kunnen problemen veroorzaken bij het klonen van een virtuele machine in Microsoft Azure of Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules sudo rm -f /etc/udev/rules.d/70-persistent-net.rulesZorg ervoor dat de netwerkservice bij het opstarten wordt gestart door de volgende opdracht uit te voeren:
sudo chkconfig network onAls u de OpenLogic-spiegels wilt gebruiken die worden gehost in de Azure-datacenters, vervangt u het
/etc/yum.repos.d/CentOS-Base.repobestand door de volgende opslagplaatsen. Hiermee wordt ook de opslagplaats [openlogic] toegevoegd die aanvullende pakketten bevat, zoals de Azure Linux-agent:[openlogic] name=CentOS-$releasever - openlogic packages for $basearch baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/ enabled=1 gpgcheck=0 [base] name=CentOS-$releasever - Base #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #released updates [updates] name=CentOS-$releasever - Updates #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #contrib - packages by Centos Users [contrib] name=CentOS-$releasever - Contrib #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6Notitie
In de rest van deze handleiding wordt ervan uitgegaan dat u ten minste de
[openlogic]opslagplaats gebruikt, die wordt gebruikt om de Onderstaande Azure Linux-agent te installeren.Voeg de volgende regel toe aan /etc/yum.conf:
http_caching=packagesVoer de volgende opdracht uit om de huidige yum-metagegevens te wissen en het systeem bij te werken met de nieuwste pakketten:
yum clean allTenzij u een installatiekopieën voor een oudere versie van CentOS maakt, is het raadzaam om alle pakketten bij te werken naar de nieuwste versie:
sudo yum -y updateMogelijk is opnieuw opstarten vereist na het uitvoeren van deze opdracht.
(Optioneel) Installeer de stuurprogramma's voor de Linux Integration Services (LIS).
Belangrijk
De stap is vereist voor CentOS 6.3 en eerder, en optioneel voor latere versies.
sudo rpm -e hypervkvpd ## (may return error if not installed, that's OK) sudo yum install microsoft-hyper-vU kunt ook de handmatige installatie-instructies volgen op de LIS-downloadpagina om de RPM op uw VM te installeren.
Installeer de Azure Linux-agent en afhankelijkheden. Waagent-service starten en inschakelen:
sudo yum install python-pyasn1 WALinuxAgent sudo service waagent start sudo chkconfig waagent onHet WALinuxAgent-pakket verwijdert de NetworkManager- en NetworkManager-kabouterpakketten als ze nog niet zijn verwijderd, zoals beschreven in stap 3.
Wijzig de kernel-opstartlijn in uw grub-configuratie om extra kernelparameters voor Azure op te nemen. Hiervoor opent
/boot/grub/menu.lstu een teksteditor en zorgt u ervoor dat de standaardkernel de volgende parameters bevat:console=ttyS0 earlyprintk=ttyS0 rootdelay=300Dit zorgt er ook voor dat alle consoleberichten worden verzonden naar de eerste seriële poort, die Ondersteuning van Azure kan helpen bij foutopsporingsproblemen.
Naast het bovenstaande is het raadzaam om de volgende parameters te verwijderen :
rhgb quiet crashkernel=autoGrafisch en stil opstarten is niet handig in een cloudomgeving waarin alle logboeken naar de seriële poort moeten worden verzonden. De
crashkerneloptie kan indien gewenst worden geconfigureerd, maar houd er rekening mee dat deze parameter de hoeveelheid beschikbaar geheugen in de VIRTUELE machine met 128 MB of meer vermindert. Dit kan problematisch zijn voor de kleinere VM-grootten.Belangrijk
CentOS 6.5 en eerder moet ook de kernelparameter
numa=offinstellen. Zie Red Hat KB 436883.Zorg ervoor dat de SSH-server is geïnstalleerd en geconfigureerd om te starten tijdens het opstarten. Dit is meestal de standaardinstelling.
Maak geen wisselruimte op de besturingssysteemschijf.
De Azure Linux-agent kan automatisch wisselruimte configureren met behulp van de lokale resourceschijf die is gekoppeld aan de VIRTUELE machine na inrichting in Azure. Houd er rekening mee dat de lokale resourceschijf een tijdelijke schijf is en mogelijk wordt geleegd wanneer de vm wordt gedeprovisioneerd. Nadat u de Azure Linux-agent hebt geïnstalleerd (zie de vorige stap), wijzigt u de volgende parameters op
/etc/waagent.confde juiste manier:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.Voer de volgende opdrachten uit om de inrichting van de virtuele machine ongedaan te maken en deze voor te bereiden op inrichting in Azure:
sudo waagent -force -deprovision+user export HISTSIZE=0 logoutKlik op Actie -> Afsluiten in Hyper-V-beheer. Uw Linux-VHD is nu klaar om te worden geüpload naar Azure.
CentOS 7.0+
Wijzigingen in CentOS 7 (en soortgelijke derivaten)
Het voorbereiden van een virtuele CentOS 7-machine voor Azure is vergelijkbaar met CentOS 6, maar er zijn verschillende belangrijke verschillen die u moet noteren:
- Het NetworkManager-pakket conflicteert niet meer met de Azure Linux-agent. Dit pakket is standaard geïnstalleerd en we raden u aan het pakket niet te verwijderen.
- GRUB2 wordt nu gebruikt als de standaard bootloader, dus de procedure voor het bewerken van kernelparameters is gewijzigd (zie hieronder).
- XFS is nu het standaardbestandssysteem. Het ext4-bestandssysteem kan desgewenst nog steeds worden gebruikt.
Configuratiestappen
Selecteer in Hyper-V-beheer de virtuele machine.
Klik op Verbinding maken om een consolevenster voor de virtuele machine te openen.
Maak of bewerk het bestand
/etc/sysconfig/networken voeg de volgende tekst toe:NETWORKING=yes HOSTNAME=localhost.localdomainMaak of bewerk het bestand
/etc/sysconfig/network-scripts/ifcfg-eth0en voeg de volgende tekst toe:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no NM_CONTROLLED=noWijzig udev-regels om te voorkomen dat statische regels worden gegenereerd voor de Ethernet-interface(s). Deze regels kunnen problemen veroorzaken bij het klonen van een virtuele machine in Microsoft Azure of Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rulesAls u de OpenLogic-spiegels wilt gebruiken die worden gehost in de Azure-datacenters, vervangt u het
/etc/yum.repos.d/CentOS-Base.repobestand door de volgende opslagplaatsen. Hiermee voegt u ook de opslagplaats [openlogic] toe die pakketten bevat voor de Azure Linux-agent:[openlogic] name=CentOS-$releasever - openlogic packages for $basearch baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/ enabled=1 gpgcheck=0 [base] name=CentOS-$releasever - Base #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #released updates [updates] name=CentOS-$releasever - Updates #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7Notitie
In de rest van deze handleiding wordt ervan uitgegaan dat u ten minste de
[openlogic]opslagplaats gebruikt, die wordt gebruikt om de Onderstaande Azure Linux-agent te installeren.Voer de volgende opdracht uit om de huidige yum-metagegevens te wissen en eventuele updates te installeren:
sudo yum clean allTenzij u een installatiekopieën voor een oudere versie van CentOS maakt, is het raadzaam om alle pakketten bij te werken naar de nieuwste versie:
sudo yum -y updateEen herstart is mogelijk vereist na het uitvoeren van deze opdracht.
Wijzig de kernel-opstartlijn in uw grub-configuratie om extra kernelparameters voor Azure op te nemen. Hiervoor opent
/etc/default/grubu de parameter in een teksteditor en bewerkt uGRUB_CMDLINE_LINUXde parameter, bijvoorbeeld:GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"Dit zorgt er ook voor dat alle consoleberichten worden verzonden naar de eerste seriële poort, die Ondersteuning van Azure kan helpen bij foutopsporingsproblemen. Ook worden de nieuwe CentOS 7-naamconventies voor NIC's uitgeschakeld. Bovendien is het raadzaam om de volgende parameters te verwijderen :
rhgb quiet crashkernel=autoGrafisch en stil opstarten is niet handig in een cloudomgeving waarin alle logboeken naar de seriële poort moeten worden verzonden. De
crashkerneloptie kan indien gewenst worden geconfigureerd, maar houd er rekening mee dat deze parameter de hoeveelheid beschikbaar geheugen in de VIRTUELE machine met 128 MB of meer vermindert, wat mogelijk problematisch is voor de kleinere VM-grootten.Zodra u klaar bent met bewerken
/etc/default/grubper bovenstaande, voert u de volgende opdracht uit om de grub-configuratie opnieuw te bouwen:sudo grub2-mkconfig -o /boot/grub2/grub.cfgAls u de installatiekopieën bouwt vanuit VMware, VirtualBox of KVM: Zorg ervoor dat de Hyper-V-stuurprogramma's zijn opgenomen in de initramfs:
Bewerken
/etc/dracut.conf, inhoud toevoegen:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "Bouw de initramfs opnieuw:
sudo dracut -f -vInstalleer de Azure Linux-agent en afhankelijkheden voor Azure VM-extensies:
sudo yum install python-pyasn1 WALinuxAgent sudo systemctl enable waagentCloud-init installeren om de inrichting af te handelen
yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons # Configure waagent for cloud-init sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf echo "Adding mounts and disk_setup to init stage" sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg echo "Allow only Azure datasource, disable fetching network setting via IMDS" cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF if [[ -f /mnt/resource/swapfile ]]; then echo Removing swapfile - RHEL uses a swapfile by default swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi echo "Add console log file" cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF # This tells cloud-init to redirect its stdout and stderr to # 'tee -a /var/log/cloud-init-output.log' so the user can see output # there without needing to look on the console. output: {all: '| tee -a /var/log/cloud-init-output.log'} EOFWisselconfiguratie Maak geen wisselruimte op de besturingssysteemschijf.
Voorheen werd de Azure Linux-agent gebruikt om wisselruimte automatisch te configureren met behulp van de lokale resourceschijf die is gekoppeld aan de virtuele machine nadat de virtuele machine is ingericht in Azure. Dit wordt nu echter verwerkt door cloud-init, u mag de Linux-agent niet gebruiken om de resourceschijf te formatteren om het wisselbestand te maken, de volgende parameters op
/etc/waagent.confde juiste manier wijzigen:sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.confAls u koppelen, formatteren en wisselen wilt maken, kunt u het volgende doen:
Geef dit door als een cloud-init-configuratie telkens wanneer u een VIRTUELE machine maakt
Gebruik een cloud-init-instructie die is gebakken in de installatiekopieën die dit doen telkens wanneer de VIRTUELE machine wordt gemaakt:
echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #cloud-config # Generated by Azure cloud image build disk_setup: ephemeral0: table_type: mbr layout: [66, [33, 82]] overwrite: True fs_setup: - device: ephemeral0.1 filesystem: ext4 - device: ephemeral0.2 filesystem: swap mounts: - ["ephemeral0.1", "/mnt"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"] EOF
Voer de volgende opdrachten uit om de inrichting van de virtuele machine ongedaan te maken en deze voor te bereiden voor inrichting in Azure:
Opmerking: als u een specifieke virtuele machine migreert en geen gegeneraliseerde installatiekopieën wilt maken, slaat u de inrichtingsstap over
# sudo rm -f /var/log/waagent.log # sudo cloud-init clean # waagent -force -deprovision+user # rm -f ~/.bash_history # export HISTSIZE=0 # logoutKlik op Actie -> Afsluiten in Hyper-V-beheer. Uw Linux-VHD is nu klaar om te worden geüpload naar Azure.
Volgende stappen
U bent nu klaar om de virtuele harde schijf van CentOS Linux te gebruiken om nieuwe virtuele machines in Azure te maken. Als dit de eerste keer is dat u het VHD-bestand uploadt naar Azure, raadpleegt u Een Virtuele Linux-machine maken op basis van een aangepaste schijf.