From f316ef81d0cb524cb8072f2914922212aca1e31f Mon Sep 17 00:00:00 2001 From: Mickael Asseline Date: Tue, 11 May 2021 07:45:27 +0000 Subject: [PATCH] docs: update Openstack/Ocicli --- Openstack/Ocicli.html | 132 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 130 insertions(+), 2 deletions(-) diff --git a/Openstack/Ocicli.html b/Openstack/Ocicli.html index 22cfe05..90c63ac 100644 --- a/Openstack/Ocicli.html +++ b/Openstack/Ocicli.html @@ -2,7 +2,7 @@ title: Ocicli description: Installer un cluster Openstack avec ocicli sous Debian published: true -date: 2021-05-11T07:36:04.090Z +date: 2021-05-11T07:45:25.467Z tags: editor: ckeditor dateCreated: 2021-05-10T11:53:45.764Z @@ -763,6 +763,7 @@ auto_install_machines_num_of_discovery=15

Il est également possible d'appliquer manuellement un profil RAID avec :

ocicli machine-megacli-reset-raid SERIAL
 ocicli machine-megacli-apply SERIAL
+

 

Attention à ne pas faire ce qui précède sur un serveur en production.

@@ -895,7 +896,7 @@ openstack image create \ debian-9-openstack-amd64

 

Mise en réseau

-

Il existe de nombreuses façons de gérer la mise en réseau dans OpenStack. Cette documentation ne couvre que rapidement un seul moyen, vous pouvez retrouver une documentation plus complète ici : . Cependant, le lecteur doit savoir que OCI installe des nœuds de calcul à l'aide de DVR (Distributed Virtual Routers), ce qui signifie qu'un routeur Neutron est installé sur tous les nœuds de calcul. En outre, OpenVSwitch est utilisé, en utilisant VXLan entre les nœuds de calcul. Quoi qu'il en soit, voici une façon de configurer le réseau. Quelque chose comme ça peut le faire:

+

Il existe de nombreuses façons de gérer la mise en réseau dans OpenStack. Cette documentation ne couvre que rapidement un seul moyen, vous pouvez retrouver une documentation plus complète ici : /Openstack/Réseaux. Cependant, le lecteur doit savoir que OCI installe des nœuds de calcul à l'aide de DVR (Distributed Virtual Routers), ce qui signifie qu'un routeur Neutron est installé sur tous les nœuds de calcul. En outre, OpenVSwitch est utilisé, en utilisant VXLan entre les nœuds de calcul. Quoi qu'il en soit, voici une façon de configurer le réseau. Quelque chose comme ça peut le faire :

# Create external network
 openstack network create --external --provider-physical-network external --provider-network-type flat ext-net
 openstack subnet create --network ext-net --allocation-pool start=192.168.105.100,end=192.168.105.199 --dns-nameserver 84.16.67.69 --gateway 192.168.105.1 --subnet-range 192.168.105.0/24 --no-dhcp ext-subnet
@@ -920,5 +921,132 @@ openstack floating ip create ext-net
 SECURITY_GROUP=$(openstack security group list --project admin --format=csv | q -d , -H 'SELECT ID FROM -')
 openstack security group rule create --ingress --protocol tcp --dst-port 22 ${SECURITY_GROUP}
 openstack security group rule create --protocol icmp --ingress ${SECURITY_GROUP}
+

 

+

Ajouter une clé ssh

+
openstack keypair create --public-key ~/.ssh/id_rsa.pub demo-keypair
+

 

+

Créer un modèle

+
openstack flavor create --ram 2048 --disk 5 --vcpus 1 demo-flavor
+openstack flavor create --ram 6144 --disk 20 --vcpus 2 cpu2-ram6-disk20
+openstack flavor create --ram 12288 --disk 40 --vcpus 4 cpu4-ram12-disk40
+

 

+

Démarrez une VM

+
#!/bin/sh
+
+set -e
+set -x
+
+NETWORK_ID=$(openstack network list --name demo-net -c ID -f value)
+IMAGE_ID=$(openstack image list -f csv 2>/dev/null | q -H -d , "SELECT ID FROM - WHERE Name LIKE 'debian-10%.qcow2'")
+FLAVOR_ID=$(openstack flavor show demo-flavor -c id -f value)
+
+openstack server create --image ${IMAGE_ID} --flavor ${FLAVOR_ID} \
+	--key-name demo-keypair --nic net-id=${NETWORK_ID} --availability-zone nova:z-compute-1.example.com demo-server
+

 

+

Ajouter la facturation

+

Le script ci-dessous attribuera une note de 0,01 à "demo-flavour":

+
cloudkitty module enable hashmap
+cloudkitty module set priority hashmap 100
+cloudkitty hashmap group create instance_uptime_flavor_id
+GROUP_ID=$(cloudkitty hashmap group list -f value -c "Group ID")
+
+cloudkitty hashmap service create instance
+SERVICE_ID=$(cloudkitty hashmap service list -f value -c "Service ID")
+
+cloudkitty hashmap field create ${SERVICE_ID} flavor_id
+FIELD_ID=$(cloudkitty hashmap field list ${SERVICE_ID} -f value -c "Field ID")
+
+FLAVOR_ID=$(openstack flavor show demo-flavor -f value -c id)
+
+cloudkitty hashmap mapping create 0.01 --field-id ${FIELD_ID} --value ${FLAVOR_ID} -g ${GROUP_ID} -t flat
+

Le reste peut être trouvé ici: https://docs.openstack.org/cloudkitty/latest/user/rating/hashmap.html

+

Ajoutez également le rôle rating à l'administrateur:

+
openstack role add --user admin --project admin rating
+
+

Actuellement, après l'installation du cluster, tous les agents ceilometer doivent être redémarrés afin d'obtenir des métriques, même s'ils semblent bien configurés.

+
+

 

+

Ajouter le service Octavia

+

Configuration scriptée

+

Tout ce qui est fait ci-dessous peut être fait avec 2 scripts d'aide :

+
oci-octavia-amphora-secgroups-sshkey-lbrole-and-network 
+oci-octavia-certs
+

Tout d'abord, modifiez l'en-tête /usr/bin/oci-octavia-amphora-secgroups-sshkey-lbrole-and-network. Vous y trouverez ces valeurs :

+
# Set to either flat or vlan
+OCTAVIA_NETWORK_TYPE=flat
+# Set to the ID of the Octavia VLAN if the above is set to vlan
+OCTAVIA_NETWORK_VLAN=876
+# Set this to a value that matches something listed in /etc/neutron/plugins/ml2/ml2_conf.ini
+# either in [ml2_type_flat]/flat_networks or in [ml2_type_vlan]/network_vlan_ranges
+OCTAVIA_PHYSNET_NAME=external1
+
+OCTAVIA_SUBNET_RANGE=192.168.104.0/24
+OCTAVIA_SUBNET_START=192.168.104.4
+OCTAVIA_SUBNET_END=192.168.104.250
+OCTAVIA_SUBNET_GW=192.168.104.1
+OCTAVIA_SUBNET_DNS1=84.16.67.69
+OCTAVIA_SUBNET_DNS2=84.16.67.70
+

Modifiez-les à votre goût. Si vous utilisez vlan, la valeur de OCTAVIA_NETWORK_TYPE doit être vlan et la valeur de OCTAVIA_PHYSNET_NAME doit être "external". Les adresses IP décrites ci-dessus doivent être routables à partir des nœuds de contrôleur.

+

Une fois la modification terminée, exécutez le premier script, puis indiquez à OCI le groupe de sécurité et le démarrage réseau à utiliser comme ceci :

+
ocicli cluster-set CLUSTER_NAME --amp-secgroup-list SECGROUP_ID_1,SECGROUP_ID_2d5681bb2-044c-4de2-9f81-c3ca7d91abb6
+ocicli cluster-set ver1 --amp-boot-network-list LOAD_BALANCER_NETWORK_ID
+

Ces identifiants peuvent être trouvés dans les journaux lors de l'exécution de oci-octavia-amphora-secgroups-sshkey-lbrole-and-network, ou dans /etc/octavia/octavia.conf sous amp_secgroup_list et amp_boot_network_list.

+

Maintenant, exécutez oci-octavia-certs sur l'un des contrôleurs, puis copiez /etc/octavia/.ssh et / etc / octavia / certs sur les autres contrôleurs.

+
rsync -e 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' -avz --delete /etc/octavia/certs/ root@z-controller-2:/etc/octavia/certs/
+rsync -e 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' -avz --delete /etc/octavia/certs/ root@z-controller-3:/etc/octavia/certs/
+rsync -e 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' -avz --delete /etc/octavia/.ssh/ root@z-controller-2:/etc/octavia/.ssh/
+rsync -e 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' -avz --delete /etc/octavia/.ssh/ root@z-controller-3:/etc/octavia/.ssh/
+

Maintenant, redémarrez octavia-worker, octavia-health-manager et octavia-housekeeping. La copie peut être effectuée de cette façon:

+

Ca y est, ça devrait marcher maintenant!

+

Installation manuelle

+

Si vous souhaitez faire les choses manuellement, voici comment cela fonctionne.

+

Créez l'image Amphora. Cela peut être fait avec DIB (Disk Image Builder) comme ceci:

+
sudo apt-get install openstack-debianimages
+/usr/share/doc/openstack-debian-images/examples/octavia/amphora-build
+openstack image create --container-format bare --disk-format qcow2 --file debian-buster-octavia-amphora-2019.09.11-11.52-amd64.qcow2 --tag amphora debian-buster-octavia-amphora-2019.09.11-11.52-amd64.qcow2
+

Créez le réseau Octavia. Si, comme dans le package PoC, vous exécutez avec un pont br-lb spécifique lié à un réseau externe appelé external1, quelque chose comme ceci fera l'affaire:

+
openstack network create --external --provider-physical-network external1 --provider-network-type flat lb-mgmt-net
+openstack subnet create --network lb-mgmt-net --allocation-pool start=192.168.104.4,end=192.168.104.250 --dns-nameserver 84.16.67.69 --dns-nameserver 84.16.67.70 --gateway 192.168.104.1 --subnet-range 192.168.104.0/24 lb-mgmt-subnet
+

L'exemple ci-dessus est lorsque vous n'utilisez pas vlan, mais que vous avez une carte réseau spécifique pour le réseau Octavia.

+

Ensuite, nous avons besoin de groupes de sécurité spécifiques pour Octavia (assurez-vous d'utiliser / root / octavia-openrc, pas celui de l'administrateur):

+
openstack security group create lb-mgmt-sec-grp
+openstack security group rule create --protocol icmp lb-mgmt-sec-grp
+openstack security group rule create --protocol tcp --dst-port 22 lb-mgmt-sec-grp
+openstack security group rule create --protocol tcp --dst-port 9443 lb-mgmt-sec-grp
+openstack security group rule create --protocol icmpv6 --ethertype IPv6 --remote-ip ::/0 lb-mgmt-sec-grp
+openstack security group rule create --protocol tcp --dst-port 22 --ethertype IPv6 --remote-ip ::/0 lb-mgmt-sec-grp
+openstack security group rule create --protocol tcp --dst-port 9443 --ethertype IPv6 --remote-ip ::/0 lb-mgmt-sec-grp
+
+openstack security group create lb-health-mgr-sec-grp
+openstack security group rule create --protocol udp --dst-port 5555 lb-health-mgr-sec-grp
+openstack security group rule create --protocol udp --dst-port 5555 --ethertype IPv6 --remote-ip ::/0 lb-health-mgr-sec-grp
+

Ensuite, nous créons une paire de clés ssh:

+
mkdir /etc/octavia/.ssh
+ssh-keygen -t rsa -f /etc/octavia/.ssh/octavia_ssh_key
+chown -R octavia:octavia /etc/octavia/.ssh
+rsync -e 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' -avz --delete /etc/octavia/.ssh/ root@z-controller-2:/etc/octavia/.ssh/
+rsync -e 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' -avz --delete /etc/octavia/.ssh/ root@z-controller-3:/etc/octavia/.ssh/
+. /root/octavia-openrc
+openstack keypair create --public-key /etc/octavia/.ssh/octavia_ssh_key.pub octavia-ssh-key
+

Faites les certificats selon le tutoriel en amont à https://docs.openstack.org/octavia/latest/admin/guides/certificates.html

+

Rsynchronisez les certificats sur les 2 autres contrôleurs:

+
rsync -e 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' -avz --delete /etc/octavia/certs/ root@z-controller-2:/etc/octavia/certs/
+rsync -e 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' -avz --delete /etc/octavia/certs/ root@z-controller-3:/etc/octavia/certs/
+

Modifiez octavia.conf et définissez les ID amp_boot_network_list et amp_secgroup_list.

+

Redémarrez ensuite tous les services Octavia sur tous les contrôleurs.

+

Créez le rôle load-balancer_admin et attribuez-le:

+
openstack role create load-balancer_admin
+openstack role add --project admin --user admin load-balancer_admin
+

Maintenant, il faut définir, avec ocicli, le réseau de démarrage et la liste des groupes de sécurité pour l'amphore:

+
ocicli cluster-set swift01 \
+	--amp-boot-network-list 0c50875f-368a-4f43-802a-8350b330c127 \
+	--amp-secgroup-list b94afddb-4fe1-4450-a1b8-25f36a354b7d,012584cd-ffde-483b-a55a-a1afba52bc20
+

Ensuite, nous pouvons commencer à utiliser Octavia:

+
openstack loadbalancer create --name lb-test-1 --vip-subnet-id ext-subnet
+

Comment utiliser l'équilibreur de charge est décrit ici:

+

https://docs.openstack.org/octavia/latest/user/guides/basic-cookbook.html

+

N'oubliez pas de créer la saveur:

+
openstack flavor create --ram 2048 --disk 4 --vcpus 2 --id 65 --private --project services octavia_65
+