当前位置:网站首页>Kolla ansible deploy openstack Yoga version

Kolla ansible deploy openstack Yoga version

2022-06-26 05:43:00 Un mu de terre à Shanghai

kollaIntroduction

Introduction

kolla La Mission de openstack La plateforme Cloud offre⽣ Niveau de production 、Déballage⽤ La livraison de ⼒.kolla L'idée de base est⼀ Coupez tous les contenants , Tous les services sont basés sur Docker Transport ⾏,Et garantir⼀ Les conteneurs ne courent que ⼀Services(Processus), Fais le plus ⼩ Transport granulométrique ⾏ docker. kolla Pour réaliser openetack Le déploiement est généralement divisé en deux étapes ,No⼀ L'étape est de faire docker Miroir,No⼆ L'étape est d'organiser le déploiement .Donc,,kolla Item (s)⽬⼜ Divisé en deux ⼩Item (s)⽬: kolla、kolla-ansible .

kolla Avantages

kolla Les avantages de la technologie des conteneurs :

  1. Grâce à un déploiement mûr ⼯Avec ansible Et docker, Déploiement rapide et stable .
  2. ⼀ Les conteneurs ne courent que ⼀Services,Pour pouvoir openstack Le service est très contrôlé ⼩Taille des grains.
  3. Peut être entré en tant que composant ⾏Mise à jour et retour en arrière,Par exemple, mise à jour nova Components,Faire⽤ kolla-ansible -i /path/to/inventory -t nova Commande juste.
  4. kolla Cueillette⽤⼀ L'idée de base de la découpe des récipients , Donc, il suffit que le système d'exploitation et docker Compatible avec,De⽽ Contourne de nombreux conflits de dépendance des paquets d'installation .
  5. ⽬Avant kolla Item (s)⽬ La chaleur est relativement élevée dans la communauté ⾼,Communauté⽀Mieux vaut.

kolla Les inconvénients de

  1. Entièrement dépendant docker ,docker L'instabilité de l'environnement peut être énorme ⼤La catastrophe de,Mais⽬Avant docker Il y a peu de problèmes. .
  2. Faire⽤ kolla Après le déploiement de la plateforme Cloud , Pour le développement debug Et le dépannage o & M apportera plus de complexité , La question peut également être posée en écrivant ⼀Simple. client Solution C'est décidé.

Configuration de l'environnement avant l'installation

Cet article n'est pas un petit livre blanc , Ne vous apprendra pas à utiliser KVM,Mise en place du réseau,Monter le disque dur,CréationLVM Attendre les moyens d'exploitation et d'entretien , J'ai besoin de vos compétences. . Le fond est trop mince , J'écris juste 10 Je ne peux pas finir. .

Planification des noeuds

Le plan utilise KVMCréé3Machines virtuelles.

  1. Un commeopenstackDemanagerGérer les noeuds, Il s'est enfui openstackDekeystone Identification et RabbitMQ、etcdÉléments de base égaux,- Oui.openstack La racine de vie de . Toute expansion future du cluster doit être connectée managerDe.CPU Le noyau doit être suffisant pour , Assez de mémoire , La vitesse du réseau est encore meilleure . Les exigences de stockage ne sont pas élevées , Un seul disque système ,100GBÇa suffit..
  2. Un comme noeud de calcul , Est dédié à l'exploitation d'un serveur Cloud . Les noeuds de calcul sont caractérisés par: cpu Le noyau et la mémoire sont grands . Peu de stockage requis , Disques système et stockage en bloc pour ECS 、Stockage des objets、 Le stockage de Snapshot miroir est fourni par un autre noeud .
  3. Un comme noeud de stockage ,Ça marchecinder、glance、swiftAttendez.openstackComposants de stockage. Donc la caractéristique de ce type de noeud de stockage est que le disque est grand , Réseau rapide ( Sinon, la machine virtuelle n'est pas une carte spéciale pour accéder à son disque système ?).

Installation de l'hôtekvm

DebianOuUbuntuInstallationKVMMéthode

sudo apt update
sudo apt -y install qemu qemu-system qemu-kvm virt-manager bridge-utils vlan

KVMCréer deux d'abordNATUn périphérique réseau virtuel pour

Avant de créer une machine virtuelle, créez deux NATCarte réseau virtuelle de type.
Nom du premier périphérique réseau openstack,PouropenstackDe chaque composantendpointCommunications.Le segment réseau est10.0.0.0/24
Nom du deuxième périphérique réseau public, Accès au réseau public pour les serveurs Cloud .Le segment réseau est192.168.100.0/24
Insérer la description de l'image ici
Insérer la description de l'image ici

Planification matérielle des machines virtuelles.

Utilisation du miroir système Ubuntu-20.04-desktop, Chaque machine virtuelle utilise les deux cartes réseau virtuelles créées précédemment .
Planification du matériel:

  1. Nom d'hôte:kolla-manager.Puissance de calcul:4Nucléaire8GB.Disque dur:200GBDisque système.Réseau: Les deux cartes réseau sont utilisées .IPRespectivement.10.0.0.201Et192.168.100.201
  2. Nom d'hôte:kolla-compute1.Puissance de calcul:6Nucléaire16GB.Disque dur:200GBDisque système.Réseau: Les deux cartes réseau sont utilisées .IPRespectivement.10.0.0.202Et192.168.100.202
  3. Nom d'hôte:kolla-storage.Puissance de calcul:2Nucléaire4GB,Disque dur200GBDisque système, Ajouter deux autres 250GB Disque dur supplémentaire pour , Ces deux disques seront fusionnés en un 500GBDeVG.Réseau: Les deux cartes réseau sont utilisées .( En fait, c'est tout ce qu'il faut. openstack Assez de cartes réseau pour , Un de plus ne perd rien. )IPRespectivement.10.0.0.203Et192.168.100.203

OSModifications de configuration du système après l'installation

InstallationOS Vous ne pouvez sélectionner qu'une seule carte réseau et un seul disque , Donc quand l'installation sera terminée OS Éteignez - le immédiatement après , Et ajouter la carte réseau du chapitre 2 au résumé du matériel ,storage Ajout de périphériques de stockage 500GBPériphérique de disque dur.
Rallumez le moteur, Et faites les réglages suivants

# Définir le nom de l'hôte
hostnamectl set-hostname --static kolla-manager # Le premier.
hostnamectl set-hostname --static kolla-compute1 # Deuxième.
hostnamectl set-hostname --static kolla-storage # Troisième.

# ModifierrootMot de passe
sudo passwd root
Nouveau mot de passe:123456

# Modifierip
#  Peut être modifié graphiquement , Voici les modifications de la ligne de commande ip
ip -a   #  Afficher le nom de l'interface réseau 

# Éditionnetplan. Prenons par exemple la configuration de la première Unit é 
vim /etc/netplan/01-network-manager-all.yaml
------------------------------------------------
network:
  version: 2
  renderer: NetworkManager
  # Nouveau
  ethernets:
   enp1s0: #  C'est le premier nom de périphérique réseau , Ce nom de périphérique passe par ip a Acquis par la commande.
    dhcp4: no
    addresses: [10.0.0.201/24]
    optional: true
    gateway4: 10.0.0.1
    nameservers:
     addresses: [10.0.0.1]
   enp6s0: #  C'est le deuxième nom de périphérique réseau 
    dhcp4: no
    addresses: [192.168.100.201/24]
    optional: true
    gateway4: 192.168.100.1
    nameservers:
     addresses: [192.168.100.1]


# Désactiver le pare - feu
ufw disable

#  Mettre à jour le paquet système 
apt -y update && apt -y full-upgrade
apt -y install ssh vim git
apt -y install python3-dev libffi-dev gcc libssl-dev
vim /etc/ssh/sshd_config
# ModifierPermitRootLogin,Allowroot L'utilisateur se connecte par mot de passe 
PermitRootLogin yes

# Redémarrerssh
systemctl restart ssh
systemctl enable ssh

storageConfiguration du noeudVG(Volume Group)

L'opération suivante est storage(10.0.0.203)Exécution supérieure

# storageCréer un500GBDeVG
apt -y install lvm2
pvcreate /dev/vdb /dev/vdc
vgcreate cinder-volumes /dev/vdb /dev/vdc

N'installez pasdocker!

Utiliserkolla-ansibleDéploiementopenstackAvant, Assurez - vous que le système d'exploitation de chaque noeud est aussi pur que possible , Ne pas installer en privé docker, Ne pas modifier sans autorisation GPG key.Sinon, il en résulterakolla-ansibleImpossible d'exécuter, Il ne peut que vous forcer à recharger le système .
kolla-ansible Nous aidera automatiquement à installer l'ensemble complet de l'environnement de fonctionnement ,Y compris:docker!!!

kollaInstallationopenstack

InstallationDocker SDK

docker SDKLe rôle de,ansible Via le docker SDK Pour travailler sur des noeuds individuels dockerMoteur, Pour manipuler le miroir et le conteneur . Donc il doit y avoir ceci sur chaque machine docker SDK.
À l'origine.kolla-ansible Ceci sera installé automatiquement Docker SDK, Mais j'ai trouvé que le réseau n'était pas bon quand je l'ai installé ,CauseKolla-ansible Les échecs fréquents . Alors installez - le à l'avance par Tsinghua source docker SDKAprès,C'est garanti.kolla-ansibleDe100%Succès.
Les opérations suivantes sont effectuées pour chaque machine

# Installationsshpass
apt -y install sshpass # ansibleDépendancesshpass
apt -y install python3-dev libffi-dev gcc libssl-dev

# Installationpython pipEtvenv
apt -y install python3-pip python3-venv

# TéléchargerDocker SDK.Si cette étape est incorrecte, Ça pourrait être un mauvais réseau. , Essayez encore quelques fois. .
# En fait, cette étape estkolla-ansible -i ./multinode bootstrap-serversMoyenneansibleUnstep
#  Si nous le faisons à l'avance , Il n'y a pas d'erreur signalée par un mauvais réseau 

#  Cette commande est disponible à l'adresse suivante: 3 Exécuter sur tous les noeuds !!
pip3 install docker -i https://pypi.tuna.tsinghua.edu.cn/simple

Configuration de l'installationAnsible

Nous prévoyonsmanagerSur le noeudkollaDéploiement,Les opérations suivantes ne sont effectuées qu'à10.0.0.201Exécution supérieure.



# Générer un environnement virtuel
python3 -m venv ~/venv3
source ~/venv3/bin/activate
pip install -U pip wheel setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple

# Installationansible
pip install 'ansible>=4,<6' -i https://pypi.tuna.tsinghua.edu.cn/simple

# Ajouter un nouveau profil,JeanansibleNe vérifiez pasknown host key
vim ~/ansible.cfg
----------------------------------
[defaults]
host_key_checking=False
pipelining=True
forks=100

Téléchargerkolla-ansible 14.0.0Version,Et installerGalaxyDépendance.

# PourgithubTéléchargerkolla-ansible,yogaBranches
pip install kolla-ansible==14.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

# InstallationAnsible GalaxyDépendance
cd ~  # Cette étapecd Pour que le répertoire actuel ait ansible.cfg
kolla-ansible install-deps

ConfigurationinventoryDocumentation

# Configurationansible inventory
cd ~
cp ~/venv3/share/kolla-ansible/ansible/inventory/* ~/
ls ~
# Deux fichiers apparaissent:all-in-one 、 multinode
# all in oneC'est tout.openstackDéployer sur un noeud.Si adoptéall-in-one,Aucune modification n'est nécessaire.
# On vaopenstackDéploiement dans3 Sur le noeud de table ,Utilisermultinode

vim ~/multinode
----------------------------------------
#  Ajouter ceci au début du fichier 3D'accord, Modifier le mot de passe par vous - même 
manager ansible_host=10.0.0.201 ansible_user=root ansible_password=123456 ansible_python_interpreter=/usr/bin/python3
compute1 ansible_host=10.0.0.202 ansible_user=root ansible_password=123456 ansible_python_interpreter=/usr/bin/python3
storage1 ansible_host=10.0.0.203 ansible_user=root ansible_password=123456 ansible_python_interpreter=/usr/bin/python3

#  Modifier ces groupes , Autres réserves inchangées 
[control] 
manager

[network]
control
compute1
storage1

[compute] 
compute1

[monitoring]
manager

[storage]
storage1

[deployment]
localhost ansible_connection=local become=true

En fait, en regardant l'original multinodeDocumentation,Vous pouvez trouver,kolla Vous avez divisé tous vos noeuds en 5Type d'espèce,C'est - à - dire:controlNoeud de classe、networkNoeud de classe、computeCatégorie、monitoringNoeud de classe、storageNoeud de classe.
Voilà.5 Les groupes de noeuds sont des sous - groupes d'autres groupes .
Par exemple, il y a beaucoup de composants sous le fichier ,Par exemple,loadbalance、troveAttendez.,Tous.[xxx:children]Forme, C'est une combinaison de liberté. 5Groupes.
Rejoignez - moi en tant que responsable de l'environnement de production ,J'ai100Serveurs, Je vais d'abord planifier ça. 100 Les machines sont divisées en 5Types.Et réfléchis.openstack Quels composants sont déployés sur quel type de noeud .
Par exemple:nova- Oui.openstack Composants de calcul pour , Je veux l'installer dans controlEtcompute Sur les types de machines ,Je vais écrire.

[nova:children]
control
compute

Par exemple:horizonOuskyline- Oui.openstackPanneauzComponents, Je vais installer ces composants monitoring Sur les noeuds du type d'affichage .

[horizon:children]
monitoring

TestsansibleConnectivité avec les noeuds individuels

ansible -i multinode all -m ping
-------------------------------------------
localhost | SUCCESS => {
    
    "ansible_facts": {
    
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
manager | SUCCESS => {
    
    "changed": false,
    "ping": "pong"
}
compute1 | SUCCESS => {
    
    "changed": false,
    "ping": "pong"
}
storage1 | SUCCESS => {
    
    "changed": false,
    "ping": "pong"
}

ConfigurationkollaDocumentation

# CréationkollaProfil
mkdir -p /etc/kolla
chown -R $USER:$USER /etc/kolla
cp -r ~/venv3/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
ls /etc/kolla
# Deux fichiersglobals.yml passwords.yml

# Générer un mot de passe
kolla-genpwd
#  Le mot de passe généré est automatiquement écrit /etc/kolla/passwords.yml


#  Écrire un modèle de configuration 

cat << EOF > /etc/kolla/globals.yml  --- kolla_base_distro: "ubuntu" kolla_install_type: "source" #Faire⽤ Basé sur le code source image openstack_release: "yoga" # L'élément de configuration est mieux aligné sur kolla-ansiblePoints⽀ La version reste ⼀À kolla_internal_vip_address: "10.0.0.250" #  Trouver un segment réseau inoccupé ip # docker_registry: "10.0.0.203:5000" # Spécifier privé registry network_interface: "enp1s0" # Interneopenstack Gérer les segments du réseau  neutron_external_interface: "enp6s0" enable_haproxy: "yes" enable_cinder: "yes" #  Celui - ci est lancé cinder Les blocs stockent et utilisent nos VG enable_cinder_backend_lvm: "yes" nova_compute_virt_type: "qemu" #Faire⽤ Lors du déploiement de la machine virtuelle , L'élément de configuration doit être remplacé par qemu,La valeur par défaut estkvm EOF

#  Ce qui précède est considéré comme une ligne de commande ,DecatÀEOF. Copie avec copie 

Qu'est - ce qui se passe?VIP:Nous pouvons voirglobal.yml Il y a un kolla_internal_vip_address,C'estVIP C'est tous les composants endpointUtilisationip.C'est clair.,openstack Chaque forme de livraison de composants est fournie à l'extérieur avec un URL, Et tous les composants URLDeipC'estVIP.
Les documents officiels exigent également ceci VIPIl doit y en avoir un.
Insérer la description de l'image ici

openstack Dépendances des composants individuels pour VIP Pour communiquer entre eux
Insérer la description de l'image ici

Démarrer l'installation

# Installation environnementale, Cette étape est automatiquement installée docker
kolla-ansible -i ./multinode bootstrap-servers

#  Pré - vérification des paramètres 
kolla-ansible -i ./multinode prechecks

# Téléchargeropenstack Miroir des conteneurs de composants individuels 
kolla-ansible -i ./multinode pull

# Déploiement
kolla-ansible -i ./multinode deploy

# Erreur rencontrée, Détruire l'environnement installé 
kolla-ansible -i ./multinode destroy --yes-i-really-really-mean-it

La figure ci - dessous montremanager Miroir du conteneur sur le noeud
Insérer la description de l'image ici

openstack CLIEtRCInstallation de fichiers

# CLI Installation du client
pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/master

# GénérerRCDocumentation
kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh

# Voir les services commencés
openstack service list
+----------------------------------+-------------+----------------+
| ID                               | Name        | Type           |
+----------------------------------+-------------+----------------+
| 052da6e26e3b40169d7a98c25c3a3524 | heat        | orchestration  |
| 1021eeae32df41998452e5f568f9b37c | neutron     | network        |
| 121644d1ca2b4dcea4bf7307b67266f8 | heat-cfn    | cloudformation |
| 349006301f34441dbcbd608e67f22595 | keystone    | identity       |
| 80f2041571584e7f9732bdf09439e7ec | placement   | placement      |
| 9350811e7bc0471ca193389095e8010a | nova        | compute        |
| a2a2040a434b4bd0bb596b8f261cb2af | nova_legacy | compute_legacy |
| adde91660a0f4a59b3cb0107008ffe48 | glance      | image          |
| f2246af5f4bc41e786c4f602d774e54d | cinderv3    | volumev3       |
+----------------------------------+-------------+----------------+

# Voirendpoint
openstack endpoint list
+----------------------------------+-----------+--------------+----------------+---------+-----------+-----------------------------------------+
| ID                               | Region    | Service Name | Service Type   | Enabled | Interface | URL                                     |
+----------------------------------+-----------+--------------+----------------+---------+-----------+-----------------------------------------+
| 05ad7101f81443cfa8662501ebc6ac0b | RegionOne | cinderv3     | volumev3       | True    | public    | http://10.0.0.250:8776/v3/%(tenant_id)s |
| 09032bbcbe624484921942216030a0e8 | RegionOne | cinderv3     | volumev3       | True    | internal  | http://10.0.0.250:8776/v3/%(tenant_id)s |
| 0a142961c46a461ab97d76af86dc1d98 | RegionOne | glance       | image          | True    | internal  | http://10.0.0.250:9292                  |
| 26d3381fe2e34cf09bd6f16cff1df777 | RegionOne | placement    | placement      | True    | internal  | http://10.0.0.250:8780                  |
| 27131aea054544a296adffd746f4b8ec | RegionOne | nova         | compute        | True    | internal  | http://10.0.0.250:8774/v2.1             |
| 2be216627f994de9af3cdb194e04b99d | RegionOne | heat         | orchestration  | True    | public    | http://10.0.0.250:8004/v1/%(tenant_id)s |
| 30f4be49399e40a7a27188e04e0cc7e7 | RegionOne | heat         | orchestration  | True    | internal  | http://10.0.0.250:8004/v1/%(tenant_id)s |
| 361582326057467297a0602f851d3efa | RegionOne | glance       | image          | True    | public    | http://10.0.0.250:9292                  |
| 363cef91256c492bb48bbc00035e17d6 | RegionOne | heat-cfn     | cloudformation | True    | public    | http://10.0.0.250:8000/v1               |
| 3969900770c24ad8b8a01686359bba42 | RegionOne | neutron      | network        | True    | internal  | http://10.0.0.250:9696                  |
| 62b1eb1b01ad4381b4ed27f45bf59fa3 | RegionOne | heat-cfn     | cloudformation | True    | internal  | http://10.0.0.250:8000/v1               |
| 653db0f9fb1c41cfbda84ba1d4b05e2a | RegionOne | nova_legacy  | compute_legacy | True    | public    | http://10.0.0.250:8774/v2/%(tenant_id)s |
| 73215e690046464ab291c52aade9fe52 | RegionOne | nova         | compute        | True    | public    | http://10.0.0.250:8774/v2.1             |
| 894360b84d18496ba6da655fc07d77e7 | RegionOne | placement    | placement      | True    | public    | http://10.0.0.250:8780                  |
| 9bb87213428c46e89842d1ba3a69cfc6 | RegionOne | keystone     | identity       | True    | admin     | http://10.0.0.250:35357                 |
| ae6ba80db41c4c41a523249cce2a08db | RegionOne | keystone     | identity       | True    | internal  | http://10.0.0.250:5000                  |
| b1aba9e7b93a42b18610e0c069573db5 | RegionOne | neutron      | network        | True    | public    | http://10.0.0.250:9696                  |
| c544455e03f045f9bcfc5a2cf3143e79 | RegionOne | keystone     | identity       | True    | public    | http://10.0.0.250:5000                  |
| cbf4436955134a7493545fa4391b25ce | RegionOne | nova_legacy  | compute_legacy | True    | internal  | http://10.0.0.250:8774/v2/%(tenant_id)s |
+----------------------------------+-----------+--------------+----------------+---------+-----------+-----------------------------------------+

DashboardConnexion

openstackDeDashboardLe composant a deux,horizon( Existe déjà dans plusieurs versions )Etskyline(Test en cours, Il n'y a pas de conteneur officiel )
kolla Le processus d'installation nous aidera automatiquement à installer un horizonComponents.
Site Web de connexion:http://vip/auth/login/?next=/
Dans ce cas, par exemple, http://10.0.0.250/auth/login/?next=/
Mais il nous manque encore adminMot de passe pour.

. /etc/kolla/admin-openrc.sh
env|grep OS_

OS_ENDPOINT_TYPE=internalURL
OS_REGION_NAME=RegionOne
OS_INTERFACE=internal
OS_AUTH_PLUGIN=password
OS_AUTH_URL=http://10.0.0.250:35357/v3
OS_PROJECT_DOMAIN_NAME=Default
OS_TENANT_NAME=admin
OS_USERNAME=admin
OS_USER_DOMAIN_NAME=Default
OS_PROJECT_NAME=admin
OS_PASSWORD=TdHUeHzlu1SVgZuMkKmBFDWZudyOMxcadJwmFNch  # C'est ça.adminMot de passe pour
OS_IDENTITY_API_VERSION=3

Connexion réussie
Insérer la description de l'image ici

Produire un cas (Je peux pas.)

~/venv3/share/kolla-ansible/init-runonce
原网站

版权声明
本文为[Un mu de terre à Shanghai]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/177/202206260539302423.html