Ajout Cluster Ceph » Historique » Version 7
Version 6 (Aymeric APLU, 17/06/2021 22:44) → Version 7/8 (Aymeric APLU, 17/06/2021 22:47)
{{toc}}
h1. Ajout Cluster Ceph
Copié depuis https://pad.tetaneutral.net/p/cluster-new-host
h2. sur la machine g22:
faire une config réseau depus l'impi (uniquement ipv4 avec gw par defaut, plus simple à taper)
Une fois le link up sur le vlan 3132, faire un ssh et faire la config réseau via rc.local (cf section suivante "h2. Sur la machine g1.t": )
Ne pas oublier :
dans /etc/default/grub
<pre>GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0"</pre>
Copier /etc/systemd/system/rc-local.service depuis g21.
Faire un fichier /etc/udev/rules.d/70-persistent-net.rules avec le contenu pour renomer les interfaces réseaux (voir example sur g21)
Penser a disable le service : systemd-resolved.service pour avoir un resolv.conf utilisable...
rm /etc/resolv.conf
copier le resolv.conf d'une autre machine
h2. Sur la machine g20:
ajouter dans /etc/sources.list.d/puppet.list:
installer ce paquet : http://apt.puppetlabs.com/puppet-release-bionic.deb à la main (ça dépose les fichiers pour avoir le répo puppet, on pourra le dégager une fois que le puppet ttnn sera passé)
<pre>
deb http://apt.puppetlabs.com bionic puppet5
</pre>
Puis faire:
<pre>
apt update -y
apt install puppet-agent bridge-utils
</pre>
h2. Sur la machine puppet.t:
dans /etc/puppetlabs/code/environments/production/manifests/nodes/openstack.pp ajouter la machine dans le variable suivante:
<pre>
$os_ring_bgp = {
...
"g20" => [ 65014, "89.234.156.69", "2a03:7220:8083:4500::1" ],
}
</pre>
Et ajouter une nouvelle node:
<pre>
node "g20.tetaneutral.net" {
class { 'ttnn_os_ceph_server': }
class { 'ttnn_os_compute': }
include ceph::profile::client
}
</pre>
h2. Sur la machine g1.t:
Ajouter la machine et toutes ces IPs dans le /etc/rc.local:
<pre>
vlan3132_ipv4["g20"]="89.234.156.69"
vlan3132_ipv6["g20"]="2a03:7220:8083:4500::1"
vlan3132_ipv6_local["g20"]="fe80::83:45"
vlan3175_ipv4["g20"]="192.168.3.120"
vlan3199_ipv4["g20"]="192.168.99.235"
netconsole_cfg["g20"]="192.168.128.220"
</pre>
Ajouter la machine g20 dans /root/tools/tools-common et /root/tools/libvirt/func.inc
<pre>
HOSTS="stri g1 g2 g3 g4 g5 g6 n7 g8 g9 g10 g11 g12 g20"
</pre>
Copier le /etc/rc.local sur g20
h2. Sur la machine g20
/!\ ATTENTION ICI CA COUPE LE RESEAU /!\
Exécuter le /etc/rc.local ou reboot la machine
Bien vérifier les trois bridges et leur ici:
vlan3132
vlan3175
vlan3199
Une fois le réseau setup correctement:
<pre>
$ puppet agent -vt --certname g20.tetaneutral.net --server puppet.tetaneutral.net
Info: Creating a new SSL key for g20.tetaneutral.net
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for g20.tetaneutral.net
Info: Certificate Request fingerprint (SHA256): BF:C8:2A:B1:48:63:3A:C9:F2:A0:84:A2:89:0E:74:0E:91:C6:51:4C:B6:DA:1D:50:07:A3:E8:6A:C7:62:D4:4C
Info: Caching certificate for ca
Exiting; no certificate found and waitforcert is disabled
</pre>
h2. Puis sur la machine puppet:
<pre>
$ puppetserver ca sign --certname g20.tetaneutral.net
Successfully signed certificate request for g20.tetaneutral.net
</pre>
h2. Puis sur la machine g20:
<pre>
$ puppet agent -vt --certname g20.tetaneutral.net --server puppet.tetaneutral.net
</pre>
... prendre un café ... ne pas avoir peur des 200 erreurs qui vont s'afficher (y'a quelque dépendances entre certain étape manquante, mais c'est pas bien grave)
Relancer plusieurs fois (Je l'ai fait 4x pour g20) , jusqu’à ce qu'il n'y est plus d'erreur
<pre>
$ puppet agent -vt --certname g20.tetaneutral.net --server puppet.tetaneutral.net
</pre>
Le dernier sort:
<pre>
$ puppet agent -vt --certname g20.tetaneutral.net --server puppet.tetaneutral.net
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Info: Caching catalog for g20.tetaneutral.net
Info: /Stage[main]/Ttnn::Puppet/Tidy[/var/lib/puppet/clientbucket]: File does not exist
Info: /Stage[main]/Ttnn::Puppet/Tidy[/opt/puppetlabs/server/data/puppetserver/reports/]: File does not exist
Info: Applying configuration version '1611852800'
Notice: /Stage[main]/Ttnn::Prometheus::Exporters/Ttnn::Prometheus::Exporter[libvirt]/Prometheus::Daemon[libvirt_exporter]/Service[libvirt_exporter]/ensure: ensure changed 'stopped' to 'running' (corrective)
Info: /Stage[main]/Ttnn::Prometheus::Exporters/Ttnn::Prometheus::Exporter[libvirt]/Prometheus::Daemon[libvirt_exporter]/Service[libvirt_exporter]: Unscheduling refresh on Service[libvirt_exporter]
Notice: Applied catalog in 2.34 seconds
</pre>
h2. Enfin sur toutes les autres machines du cluster lancer:
puppet agent -vt
Cela va reconfigurer les bird pour ajouter g20
h2. Et pour finir sur h7.t:
Ajouter dans /etc/bird/bird/openstack.conf
<pre>
protocol bgp OPENSTACK_G20 from mesh_openstack {
neighbor 89.234.156.69 as 65014;
}
</pre>
Ajouter dans /etc/bird/bird6.conf
<pre>
protocol bgp OPENSTACK_G20 from mesh_openstack {
neighbor 2a03:7220:8083:4500::1 as 65014;
}
</pre>
Et faire:
birdc conf
birdc6 conf
h2. ne pas oublier sur puppet et nucnagios
Il faut ajouter la machine dans quelques fichiers pour al supervision et autres.
puppet: dans puppetmaster => environments/production/manifests/files/libvirt/dump-and-sync-xml (liste des hosts)
nucnagios dans les fichiers : /omd/sites/ttnn/etc/check_mk :
* main.mk
* update_vm_parents.sh
Penser à lancer le script ./client-plugins/install_plugins.sh
h2. secret et paquet
installer le paquet python-libvirt puis relancer le service
systemctl restart libvirt_exporter.service
copier les secrets ceph dans /etc/libvirt/secrets/ depuis g1
restart les services libvirt
h1. Ajout Cluster Ceph
Copié depuis https://pad.tetaneutral.net/p/cluster-new-host
h2. sur la machine g22:
faire une config réseau depus l'impi (uniquement ipv4 avec gw par defaut, plus simple à taper)
Une fois le link up sur le vlan 3132, faire un ssh et faire la config réseau via rc.local (cf section suivante "h2. Sur la machine g1.t": )
Ne pas oublier :
dans /etc/default/grub
<pre>GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0"</pre>
Copier /etc/systemd/system/rc-local.service depuis g21.
Faire un fichier /etc/udev/rules.d/70-persistent-net.rules avec le contenu pour renomer les interfaces réseaux (voir example sur g21)
Penser a disable le service : systemd-resolved.service pour avoir un resolv.conf utilisable...
rm /etc/resolv.conf
copier le resolv.conf d'une autre machine
h2. Sur la machine g20:
ajouter dans /etc/sources.list.d/puppet.list:
installer ce paquet : http://apt.puppetlabs.com/puppet-release-bionic.deb à la main (ça dépose les fichiers pour avoir le répo puppet, on pourra le dégager une fois que le puppet ttnn sera passé)
<pre>
deb http://apt.puppetlabs.com bionic puppet5
</pre>
Puis faire:
<pre>
apt update -y
apt install puppet-agent bridge-utils
</pre>
h2. Sur la machine puppet.t:
dans /etc/puppetlabs/code/environments/production/manifests/nodes/openstack.pp ajouter la machine dans le variable suivante:
<pre>
$os_ring_bgp = {
...
"g20" => [ 65014, "89.234.156.69", "2a03:7220:8083:4500::1" ],
}
</pre>
Et ajouter une nouvelle node:
<pre>
node "g20.tetaneutral.net" {
class { 'ttnn_os_ceph_server': }
class { 'ttnn_os_compute': }
include ceph::profile::client
}
</pre>
h2. Sur la machine g1.t:
Ajouter la machine et toutes ces IPs dans le /etc/rc.local:
<pre>
vlan3132_ipv4["g20"]="89.234.156.69"
vlan3132_ipv6["g20"]="2a03:7220:8083:4500::1"
vlan3132_ipv6_local["g20"]="fe80::83:45"
vlan3175_ipv4["g20"]="192.168.3.120"
vlan3199_ipv4["g20"]="192.168.99.235"
netconsole_cfg["g20"]="192.168.128.220"
</pre>
Ajouter la machine g20 dans /root/tools/tools-common et /root/tools/libvirt/func.inc
<pre>
HOSTS="stri g1 g2 g3 g4 g5 g6 n7 g8 g9 g10 g11 g12 g20"
</pre>
Copier le /etc/rc.local sur g20
h2. Sur la machine g20
/!\ ATTENTION ICI CA COUPE LE RESEAU /!\
Exécuter le /etc/rc.local ou reboot la machine
Bien vérifier les trois bridges et leur ici:
vlan3132
vlan3175
vlan3199
Une fois le réseau setup correctement:
<pre>
$ puppet agent -vt --certname g20.tetaneutral.net --server puppet.tetaneutral.net
Info: Creating a new SSL key for g20.tetaneutral.net
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for g20.tetaneutral.net
Info: Certificate Request fingerprint (SHA256): BF:C8:2A:B1:48:63:3A:C9:F2:A0:84:A2:89:0E:74:0E:91:C6:51:4C:B6:DA:1D:50:07:A3:E8:6A:C7:62:D4:4C
Info: Caching certificate for ca
Exiting; no certificate found and waitforcert is disabled
</pre>
h2. Puis sur la machine puppet:
<pre>
$ puppetserver ca sign --certname g20.tetaneutral.net
Successfully signed certificate request for g20.tetaneutral.net
</pre>
h2. Puis sur la machine g20:
<pre>
$ puppet agent -vt --certname g20.tetaneutral.net --server puppet.tetaneutral.net
</pre>
... prendre un café ... ne pas avoir peur des 200 erreurs qui vont s'afficher (y'a quelque dépendances entre certain étape manquante, mais c'est pas bien grave)
Relancer plusieurs fois (Je l'ai fait 4x pour g20) , jusqu’à ce qu'il n'y est plus d'erreur
<pre>
$ puppet agent -vt --certname g20.tetaneutral.net --server puppet.tetaneutral.net
</pre>
Le dernier sort:
<pre>
$ puppet agent -vt --certname g20.tetaneutral.net --server puppet.tetaneutral.net
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Info: Caching catalog for g20.tetaneutral.net
Info: /Stage[main]/Ttnn::Puppet/Tidy[/var/lib/puppet/clientbucket]: File does not exist
Info: /Stage[main]/Ttnn::Puppet/Tidy[/opt/puppetlabs/server/data/puppetserver/reports/]: File does not exist
Info: Applying configuration version '1611852800'
Notice: /Stage[main]/Ttnn::Prometheus::Exporters/Ttnn::Prometheus::Exporter[libvirt]/Prometheus::Daemon[libvirt_exporter]/Service[libvirt_exporter]/ensure: ensure changed 'stopped' to 'running' (corrective)
Info: /Stage[main]/Ttnn::Prometheus::Exporters/Ttnn::Prometheus::Exporter[libvirt]/Prometheus::Daemon[libvirt_exporter]/Service[libvirt_exporter]: Unscheduling refresh on Service[libvirt_exporter]
Notice: Applied catalog in 2.34 seconds
</pre>
h2. Enfin sur toutes les autres machines du cluster lancer:
puppet agent -vt
Cela va reconfigurer les bird pour ajouter g20
h2. Et pour finir sur h7.t:
Ajouter dans /etc/bird/bird/openstack.conf
<pre>
protocol bgp OPENSTACK_G20 from mesh_openstack {
neighbor 89.234.156.69 as 65014;
}
</pre>
Ajouter dans /etc/bird/bird6.conf
<pre>
protocol bgp OPENSTACK_G20 from mesh_openstack {
neighbor 2a03:7220:8083:4500::1 as 65014;
}
</pre>
Et faire:
birdc conf
birdc6 conf
h2. ne pas oublier sur puppet et nucnagios
Il faut ajouter la machine dans quelques fichiers pour al supervision et autres.
puppet: dans puppetmaster => environments/production/manifests/files/libvirt/dump-and-sync-xml (liste des hosts)
nucnagios dans les fichiers : /omd/sites/ttnn/etc/check_mk :
* main.mk
* update_vm_parents.sh
Penser à lancer le script ./client-plugins/install_plugins.sh
h2. secret et paquet
installer le paquet python-libvirt puis relancer le service
systemctl restart libvirt_exporter.service
copier les secrets ceph dans /etc/libvirt/secrets/ depuis g1
restart les services libvirt