Een op CentOS gebaseerde virtuele Azure-machine voorbereiden
Let op
In dit artikel wordt verwezen naar CentOS, een Linux-distributie die de status End Of Life (EOL) nadert. Houd rekening met uw gebruik en plan dienovereenkomstig. Zie de Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.
Van toepassing op: ✔️ Flexibele schaalsets voor Linux-VM's ✔️
Leer hoe u een virtuele harde schijf (VHD) van Azure maakt en uploadt die een Op CentOS gebaseerd Linux-besturingssysteem 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 vergelijkbare afgeleide) Linux-besturingssysteem op een virtuele harde schijf hebt geïnstalleerd. 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 Algemene opmerkingen bij de installatie van Linux voor Linux 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 grootte bij het maken van de schijf.
- De vfat-kernelmodule moet zijn ingeschakeld in de kernel
- Bij het installeren van het Linux-systeem raden we u aan standaardpartities te gebruiken in plaats van LVM (vaak de standaardinstelling voor veel installaties). Hierdoor voorkomt u dat de LVM-naam conflicteert 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 nodig. Bij het eerste opstarten in Azure wordt de inrichtingsconfiguratie doorgegeven aan de Virtuele Linux-machine met behulp van door UDF geformatteerde media die aan de gast zijn gekoppeld. De Azure Linux-agent of cloud-init moet het UDF-bestandssysteem koppelen om de configuratie ervan te lezen en de VM in te richten.
- Linux-kernelversies onder 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 Centos 2.6.32-kernel en is opgelost in Centos 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=off
instellen op de kernel-opdrachtregel in grub.conf. Zie Red Hat KB 436883 voor meer informatie. - Configureer geen wisselpartitie op de besturingssysteemschijf.
- Alle VHD's in Azure moeten een virtuele grootte hebben die is afgestemd op 1 MB. Wanneer u converteert van een onbewerkte schijf naar VHD, moet u ervoor zorgen dat de grootte van de onbewerkte schijf vóór de conversie een veelvoud van 1 MB is. Zie Installatieopmerkingen voor Linux voor meer informatie.
Notitie
Cloud-init >= 21.2 verwijdert de udf-vereiste. Zonder dat de udf-module is ingeschakeld, wordt de cdrom niet bevestigd tijdens het inrichten, waardoor aangepaste gegevens niet kunnen worden toegepast. Een tijdelijke oplossing hiervoor is het toepassen van aangepaste gegevens met behulp van gebruikersgegevens. In tegenstelling tot aangepaste gegevens worden gebruikersgegevens echter niet versleuteld. https://cloudinit.readthedocs.io/en/latest/topics/format.html
CentOS 6.x
Belangrijk
Houd er rekening mee dat CentOS 6 het einde van de levensduur (EOL) heeft bereikt en niet meer wordt ondersteund door de CentOS-community. Dit betekent dat er geen verdere updates of beveiligingspatches worden uitgebracht voor deze versie, waardoor deze kwetsbaar blijft voor potentiële beveiligingsrisico's. We raden u ten zeerste aan een upgrade uit te voeren naar een recentere versie van CentOS om de veiligheid en stabiliteit van uw systeem te garanderen. Neem contact op met uw IT-afdeling of systeembeheerder voor verdere hulp.
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 NetworkManager
Maak of bewerk het bestand
/etc/sysconfig/network
en voeg de volgende tekst toe:NETWORKING=yes HOSTNAME=localhost.localdomain
Maak of bewerk het bestand
/etc/sysconfig/network-scripts/ifcfg-eth0
en voeg de volgende tekst toe:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Udev-regels wijzigen om te voorkomen dat statische regels voor de Ethernet-interface(s) worden gegenereerd. 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.rules
Zorg ervoor dat de netwerkservice begint bij het opstarten door de volgende opdracht uit te voeren:
sudo chkconfig network on
Als u de OpenLogic-spiegels wilt gebruiken die worden gehost in de Azure-datacenters, vervangt u het
/etc/yum.repos.d/CentOS-Base.repo
bestand door de volgende opslagplaatsen. Hiermee voegt u ook de opslagplaats [openlogic] toe die extra 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-6
Notitie
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=packages
Voer de volgende opdracht uit om de huidige yum-metagegevens te wissen en het systeem bij te werken met de nieuwste pakketten:
sudo yum clean all
Tenzij u een installatiekopieën voor een oudere versie van CentOS maakt, wordt u aangeraden alle pakketten bij te werken naar de nieuwste versie:
sudo yum -y update
Mogelijk 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 releases.
sudo rpm -e hypervkvpd ## (may return error if not installed, that's OK) sudo yum install microsoft-hyper-v
U kunt ook de handmatige installatie-instructies volgen op de LIS-downloadpagina om de RPM op uw VIRTUELE machine 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 on
Het WALinuxAgent-pakket verwijdert de NetworkManager- en NetworkManager-kabouterpakketten als ze nog niet zijn verwijderd, zoals beschreven in stap 3.
Wijzig de kernelstartregel in uw grub-configuratie om extra kernelparameters voor Azure op te nemen. Hiervoor opent
/boot/grub/menu.lst
u een teksteditor en zorgt u ervoor dat de standaardkernel de volgende parameters bevat:console=ttyS0 earlyprintk=ttyS0 rootdelay=300
Dit zorgt er ook voor dat alle consoleberichten worden verzonden naar de eerste seriële poort, die kan helpen ondersteuning voor Azure met foutopsporingsproblemen.
Naast het bovenstaande raden we u aan om de volgende parameters te verwijderen :
rhgb quiet crashkernel=auto
Grafisch en
quiet boot
zijn niet handig in een cloudomgeving waarin alle logboeken naar de seriële poort moeten worden verzonden. Decrashkernel
optie kan desgewenst 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=off
instellen. 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 standaardwaarde.
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. De lokale resourceschijf is een tijdelijke schijf en kan worden geleegd wanneer de vm ongedaan wordt gemaakt. Nadat u de Azure Linux-agent hebt geïnstalleerd (zie vorige stap), wijzigt u de volgende parameters op
/etc/waagent.conf
de 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 sudo export HISTSIZE=0
Notitie
Als u een specifieke virtuele machine migreert en geen gegeneraliseerde installatiekopieën wilt maken, slaat u de inrichtingsstap over.
- Klik 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.
Aangezien CentOS 8 Stream en nieuwer niet meer standaard worden opgenomen
network.service
, moet u deze handmatig installeren:sudo yum install network-scripts sudo systemctl enable network.service
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/network
en voeg de volgende tekst toe:NETWORKING=yes HOSTNAME=localhost.localdomain
Maak of bewerk het bestand
/etc/sysconfig/network-scripts/ifcfg-eth0
en voeg de volgende tekst toe:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no NM_CONTROLLED=no
Udev-regels wijzigen om te voorkomen dat statische regels voor de Ethernet-interface(s) worden gegenereerd. 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
Als u de OpenLogic-spiegels wilt gebruiken die worden gehost in de Azure-datacenters, vervangt u het
/etc/yum.repos.d/CentOS-Base.repo
bestand 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-7
Notitie
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 all
Tenzij u een installatiekopieën voor een oudere versie van CentOS maakt, wordt u aangeraden alle pakketten bij te werken naar de nieuwste versie:
sudo yum -y update
Mogelijk is opnieuw opstarten vereist na het uitvoeren van deze opdracht.
Wijzig de kernelstartregel in uw grub-configuratie om extra kernelparameters voor Azure op te nemen. U doet dit door in een teksteditor te openen
/etc/default/grub
en deGRUB_CMDLINE_LINUX
parameter te bewerken, 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 kan helpen ondersteuning voor Azure met foutopsporingsproblemen. Ook worden de nieuwe CentOS 7-naamconventies voor NIC's uitgeschakeld. Naast het bovenstaande raden we u aan om de volgende parameters te verwijderen :
rhgb quiet crashkernel=auto
Grafisch en stil opstarten is niet handig in een cloudomgeving waarin alle logboeken naar de seriële poort moeten worden verzonden. De
crashkernel
optie kan desgewenst 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.Zodra u klaar bent met bewerken
/etc/default/grub
per bovenstaande, voert u de volgende opdracht uit om de grub-configuratie opnieuw te bouwen:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Notitie
Als u een VM met UEFI uploadt, is grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
de opdracht om grub bij te werken. Bovendien moet de vfat-kernelmodule zijn ingeschakeld in de kernel, anders mislukt het inrichten.
Zorg ervoor dat de udf-module is ingeschakeld. Als u ze verwijdert of uitschakelt, treedt er een inrichtings-/opstartfout op. (_Cloud-init >= 21,2 verwijdert de udf-vereiste. Lees het begin van het document voor meer informatie.)
Als 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 -v
Installeer de Azure Linux-agent en afhankelijkheden voor Azure VM-extensies:
sudo yum install python-pyasn1 WALinuxAgent sudo systemctl enable waagent
Cloud-init installeren om de inrichting af te handelen
sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
- Waagent configureren voor cloud-init
sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=auto/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
sudo echo "Adding mounts and disk_setup to init stage" sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS" sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF if [[ -f /mnt/swapfile ]]; then echo Removing swapfile - RHEL uses a swapfile by default swapoff /mnt/swapfile rm /mnt/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'} EOF
Configuratie wisselen
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 moet de Linux-agent niet gebruiken om de resourceschijf het wisselbestand te formatteren. Wijzig de volgende parameters op
/etc/waagent.conf
de juiste manier:sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
Als u wilt koppelen, opmaken 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:
sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf sudo 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 op inrichting in Azure:
Notitie
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 sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Klik 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 te maken in Azure. Als dit de eerste keer is dat u het VHD-bestand uploadt naar Azure, raadpleegt u Een Virtuele Linux-machine maken vanaf een aangepaste schijf.