Een op CentOS gebaseerde virtuele Azure-machine voorbereiden
Let op
Dit artikel verwijst naar CentOS, een Linux-distributie die de end-of-life-status (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 (OS) bevat. Zie voor meer informatie:
- Een CentOS 6.x virtuele machine (VM) voorbereiden voor Azure
- Een CentOS 7.0+ VM voorbereiden voor Azure
Vereisten
In dit artikel wordt ervan uitgegaan dat u al een CentOS-besturingssysteem (of vergelijkbare afgeleide) Linux-besturingssysteem hebt geïnstalleerd op een VHD. Er bestaan meerdere hulpprogramma's om VHD-bestanden te maken. Een voorbeeld hiervan is een virtualisatieoplossing zoals Hyper-V. Zie De Hyper-V-rol installeren en een VIRTUELE machine configureren voor instructies.
CentOS-installatienotities
- Zie 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
convert-vhd
cmdlet. Als u VirtualBox gebruikt, selecteert u Vaste grootte in plaats van de standaardgrootte die dynamisch wordt toegewezen wanneer u de schijf maakt. - De vfat-kernelmodule moet zijn ingeschakeld in de kernel.
- Wanneer u het Linux-systeem installeert, wordt u aangeraden standaardpartities te gebruiken in plaats van LVM (Logical Volume Manager). Dit is vaak de standaardinstelling voor veel installaties. Als u partities gebruikt, 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 ook worden gebruikt op gegevensschijven.
- Kernelondersteuning voor het koppelen van door de gebruiker gedefinieerde functies (UDF) bestandssystemen is nodig. Bij het 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 is voornamelijk van 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 Red Hat Enterprise Linux (RHEL)-kernels die ouder zijn dan 2.6.32-504, moeten de opstartparameter
numa=off
instellen op de kernelopdrachtregel 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 de installatieopmerkingen voor Linux voor meer informatie.
Notitie
Cloud-init >= 21.2 verwijdert de UDF-vereiste. Maar zonder dat de UDF-module is ingeschakeld, wordt de CD-ROM niet bevestigd tijdens het inrichten, waardoor aangepaste gegevens niet kunnen worden toegepast. Een tijdelijke oplossing voor deze situatie is het toepassen van aangepaste gegevens met behulp van gebruikersgegevens. In tegenstelling tot aangepaste gegevens worden gebruikersgegevens niet versleuteld. Zie Indelingen voor gebruikersgegevens voor meer informatie.
CentOS 6.x
Belangrijk
CentOS 6 heeft het EOL bereikt en wordt niet meer ondersteund door de CentOS-community. Er worden geen verdere updates of beveiligingspatches uitgebracht voor deze versie, waardoor deze kwetsbaar blijft voor mogelijke 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 voor verdere hulp contact op met uw IT-afdeling of systeembeheerder.
Selecteer de VIRTUELE machine in Hyper-V-beheer.
Selecteer Verbinding maken om een consolevenster voor de virtuele machine te openen.
In CentOS 6
NetworkManager
kan dit de Azure Linux-agent verstoren. Verwijder dit pakket: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
Wijzig udev-regels om te voorkomen dat statische regels voor de Ethernet-interfaces worden gegenereerd. Deze regels kunnen problemen veroorzaken wanneer u een VIRTUELE machine kloont in 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:
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. Met deze actie wordt ook de opslagplaats [openlogic] toegevoegd 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 might 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 dit artikel wordt ervan uitgegaan dat u ten minste de
[openlogic]
opslagplaats gebruikt, die wordt gebruikt om de Azure Linux-agent te installeren.Voeg de volgende regel toe aan
/etc/yum.conf
:http_caching=packages
Wis de huidige yum-metagegevens en werk het systeem bij 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 nadat u deze opdracht hebt uitgevoerd.
Optioneel: installeer de stuurprogramma's voor de Linux Integration Services (LIS).
Belangrijk
De stap is vereist voor CentOS 6.3 en eerder en is optioneel voor latere versies.
sudo rpm -e hypervkvpd ## (might return an 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. Start en schakel de
waagent
service in:sudo yum install python-pyasn1 WALinuxAgent sudo service waagent start sudo chkconfig waagent on
Het WALinuxAgent-pakket verwijdert de
NetworkManager
enNetworkManager-gnome
pakketten als ze nog niet zijn verwijderd, zoals beschreven in stap 3.Wijzig de kernel-opstartlijn in uw grub-configuratie om andere kernelparameters voor Azure op te nemen. Als u deze stap wilt uitvoeren, 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
Deze wijziging zorgt er ook voor dat alle consoleberichten worden verzonden naar de eerste seriële poort, die kan helpen ondersteuning voor Azure met foutopsporingsproblemen.
U wordt ook aangeraden de volgende parameters te verwijderen :
rhgb quiet crashkernel=auto
Grafisch en stil opstarten is niet handig in een cloudomgeving waarin u wilt dat alle logboeken naar de seriële poort worden verzonden. De
crashkernel
optie kan desgewenst worden geconfigureerd. Deze parameter vermindert echter de hoeveelheid beschikbaar geheugen in de VIRTUELE machine met 128 MB of meer, wat een probleem kan zijn voor kleinere VM-grootten.Belangrijk
CentOS 6.5 en eerder moet ook de kernelparameter
numa=off
instellen. Zie Red Hat KB 436883 voor meer informatie.Zorg ervoor dat de Secure Shell-server is geïnstalleerd en geconfigureerd om te starten tijdens het opstarten. Deze instelling 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 nadat de VIRTUELE machine is ingericht 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 de 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.
Maak de inrichting van de VIRTUELE machine ongedaan en bereid deze voor op inrichting in Azure:
sudo waagent -force -deprovision+user sudo export HISTSIZE=0
Notitie
Als u een specifieke VM migreert en geen gegeneraliseerde installatiekopieën wilt maken, slaat u de inrichtingsstap over.
Selecteer Actie>afsluiten in Hyper-V-beheer. Uw Linux-VHD is nu klaar om te worden geüpload naar Azure.
CentOS 7.0+
Volg de stappen in de volgende secties als u CentOS 7.0+ gebruikt.
Wijzigingen in CentOS 7 (en soortgelijke derivaten)
Het voorbereiden van een CentOS 7-VM voor Azure is vergelijkbaar met CentOS 6. Enkele belangrijke verschillen zijn de moeite waard om te 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 de sectie Configuratiestappen.)
XFS is nu het standaardbestandssysteem. Het ext4-bestandssysteem kan nog steeds worden gebruikt als u wilt.
Omdat 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 de VIRTUELE machine in Hyper-V-beheer.
Selecteer 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
Wijzig udev-regels om te voorkomen dat statische regels voor de Ethernet-interfaces worden gegenereerd. Deze regels kunnen problemen veroorzaken wanneer u een VIRTUELE machine kloont in 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 bestand /etc/yum.repos.d/CentOS-Base.repo door de volgende opslagplaatsen. Met deze actie wordt ook de opslagplaats [openlogic] toegevoegd 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 might 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 dit artikel wordt ervan uitgegaan dat u ten minste de
[openlogic]
opslagplaats gebruikt, die wordt gebruikt om de Azure Linux-agent te installeren.Wis de huidige yum-metagegevens en installeer eventuele updates:
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 nadat u deze opdracht hebt uitgevoerd.
Wijzig de kernel-opstartlijn in uw grub-configuratie om andere kernelparameters voor Azure op te nemen. Als u deze stap wilt uitvoeren, opent
/etc/default/grub
u deze in een teksteditor en bewerkt u deGRUB_CMDLINE_LINUX
parameter. Voorbeeld:GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Deze wijziging 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 netwerkinterfacekaarten uitgeschakeld. U wordt ook aangeraden de volgende parameters te verwijderen :
rhgb quiet crashkernel=auto
Grafisch en stil opstarten is niet handig in een cloudomgeving waarin u wilt dat alle logboeken naar de seriële poort worden verzonden. De
crashkernel
optie kan desgewenst worden geconfigureerd. Deze parameter vermindert echter de hoeveelheid beschikbaar geheugen in de VIRTUELE machine met 128 MB of meer, wat een probleem kan zijn voor kleinere VM-grootten.Nadat u klaar bent met bewerken
/etc/default/grub
, bouwt u de grub-configuratie opnieuw op:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Notitie
Als u een UEFI-VM 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 het verwijdert of uitschakelt, treedt er een inrichtings- of opstartfout op. (_Cloud-init >= 21,2 verwijdert de udf-vereiste. Lees het begin van het document voor meer informatie.)
Als u de installatiekopieën van VMware, VirtualBox of KVM bouwt, moet u ervoor zorgen dat de Hyper-V-stuurprogramma's zijn opgenomen in de initramfs:
Inhoud bewerken
/etc/dracut.conf
en 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
Installeren
cloud-init
om de inrichting af te handelen:sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
- Configureren
waagent
voorcloud-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
- Configureren
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 aan de VIRTUELE machine is gekoppeld nadat de VIRTUELE machine is ingericht in Azure.
cloud-init
Deze stap wordt nu echter verwerkt. U moet de Linux-agent niet gebruiken om de resourceschijf te formatteren om het wisselbestand te maken. 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 het wisselbestand wilt koppelen, opmaken en maken, kunt u het volgende doen:
Geef deze opdracht door als een
cloud-init
configuratie telkens wanneer u een virtuele machine maakt.Gebruik een
cloud-init
instructie die in de installatiekopieën is gebakken om deze stap uit te voeren 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 voor inrichting in Azure.
Notitie
Als u een specifieke VM 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
Selecteer Actie>afsluiten in Hyper-V-beheer. Uw Linux-VHD is nu klaar om te worden geüpload naar Azure.
Gerelateerde inhoud
U kunt nu uw CentOS Linux-VHD gebruiken om nieuwe VM's 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.