« Clustering proxmox avec tinc » : différence entre les versions
(→node 2) |
(→node 2) |
||
(38 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
cluster de 2 nodes : node1 ayant comme ip principale 88.88.88.88 et node2 ayant comme ip principale 99.99.99.99 | [[Category:serveur]] | ||
[[Category:debian]] | |||
[[Category:virtualisation]] | |||
cluster de 2 nodes : node1 ayant comme ip principale 88.88.88.88 et node2 ayant comme ip principale 99.99.99.99<br> | |||
Valable pour proxmox 2.x à proxmox 5.x | |||
=node 1= | =node 1= | ||
Ligne 15 : | Ligne 20 : | ||
Name = node1 | Name = node1 | ||
AddressFamily = ipv4 | AddressFamily = ipv4 | ||
#BindToAddress = x.x.x.x | |||
Device = /dev/net/tun | Device = /dev/net/tun | ||
Mode = switch | Mode = switch | ||
ConnectTo = node2 | ConnectTo = node2 | ||
TcpOnly=no | |||
IndirectData=no | |||
</pre> | </pre> | ||
Ligne 34 : | Ligne 42 : | ||
#!/bin/bash | #!/bin/bash | ||
/sbin/ | /sbin/ip link set vpn up | ||
/sbin/ip addr add 10.10.10.1 dev vpn | /sbin/ip addr add 10.10.10.1/24 dev vpn | ||
/sbin/ip route add 10.10.10.0/24 dev vpn | /sbin/ip route add 10.10.10.0/24 dev vpn | ||
/sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev vpn | /sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev vpn | ||
Ligne 43 : | Ligne 51 : | ||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
/sbin/route del -net 224.0.0.0 netmask 240.0.0.0 dev | /sbin/route del -net 224.0.0.0 netmask 240.0.0.0 dev vpn | ||
/sbin/ | /sbin/ip link set vpn down | ||
</pre> | </pre> | ||
Rendez ces deux fichiers executables : | Rendez ces deux fichiers executables : | ||
<pre>chmod +x /etc/tinc/vpn/tinc-*</pre> | <pre>chmod +x /etc/tinc/vpn/tinc-*</pre> | ||
Ajoutez le lancement du vpn : | |||
<pre>echo vpn >> /etc/tinc/nets.boot</pre> | |||
=node 2= | =node 2= | ||
Ligne 64 : | Ligne 75 : | ||
Name = node2 | Name = node2 | ||
AddressFamily = ipv4 | AddressFamily = ipv4 | ||
#BindToAddress = x.x.x.x | |||
Device = /dev/net/tun | Device = /dev/net/tun | ||
Mode = switch | Mode = switch | ||
ConnectTo = node1 | ConnectTo = node1 | ||
TcpOnly=no | |||
IndirectData=no | |||
</pre> | </pre> | ||
Ligne 76 : | Ligne 90 : | ||
</pre> | </pre> | ||
Nous allons maintenant générer la paire de clé de | Nous allons maintenant générer la paire de clé de node2. Tapez simplement la commande suivante et validez a chaque question : | ||
<pre>tincd -n vpn -K4096</pre> | <pre>tincd -n vpn -K4096</pre> | ||
Ligne 83 : | Ligne 97 : | ||
#!/bin/bash | #!/bin/bash | ||
/sbin/ | /sbin/ip link set vpn up | ||
/sbin/ip addr add 10.10.10.2 dev vpn | /sbin/ip addr add 10.10.10.2/24 dev vpn | ||
/sbin/ip route add 10.10.10.0/24 dev vpn | /sbin/ip route add 10.10.10.0/24 dev vpn | ||
/sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev vpn | /sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev vpn | ||
Ligne 92 : | Ligne 106 : | ||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
/sbin/route del -net 224.0.0.0 netmask 240.0.0.0 dev | /sbin/route del -net 224.0.0.0 netmask 240.0.0.0 dev vpn | ||
/sbin/ | /sbin/ip link set vpn down | ||
</pre> | </pre> | ||
Rendez ces deux fichiers executables : | Rendez ces deux fichiers executables : | ||
<pre>chmod +x /etc/tinc/vpn/tinc-*</pre> | <pre>chmod +x /etc/tinc/vpn/tinc-*</pre> | ||
Ajoutez le lancement du vpn : | |||
<pre>echo vpn >> /etc/tinc/nets.boot</pre> | |||
=Synchronisez la configuration des deux nodes= | |||
Copiez le fichier <code>/etc/tinc/vpn/hosts/node1</code> de <code>node1</code> vers <code>/etc/tinc/vpn/hosts/</code> sur <code>node2</code> | |||
Copiez le fichier <code>/etc/tinc/vpn/hosts/node2</code> de <code>node2</code> vers <code>/etc/tinc/vpn/hosts/</code> sur <code>node1</code> | |||
=Test de la configuration= | |||
Ajoutez ceci dans <code>/etc/hosts</code> sur les deux nodes : | |||
<pre> | |||
10.10.10.1 node1 | |||
10.10.10.2 node2 | |||
</pre> | |||
Sur les deux nodes : | |||
<pre>systemctl start tinc@vpn</pre> | |||
Installez omping pour tester le multicast (sur les deux nodes) : | |||
<pre>aptitude install omping</pre> | |||
Lancez cette commande sur les deux nodes | |||
<pre>omping node1 node2</pre> | |||
=Lancement automatique= | |||
Si tout fonctionne, nous allons configurer tinc pour se lancer automatiquement au démarrage, et ce avant corosync. | |||
<pre>systemctl edit --full tinc@vpn.service</pre> | |||
et ajoutez la ligne suivante dans la section <code>[Unit]</code> : | |||
<pre>Before=corosync.service</pre> | |||
Puis activez le lancement automatique de notre lien tinc "vpn" : | |||
<pre>systemctl enable tinc@vpn</pre> | |||
Puis recharger la configuration de systemd : | |||
<pre>systemctl daemon-reload</pre> | |||
=Création du cluster= | |||
Attention : si vous avez désactivé le login ssh root par password il faut le réactiver obligatoirement car proxmox force le login par password lors de la création du cluster ; vous pourrez à nouveau le désactiver une fois le cluster créé. | |||
==Sur node1== | |||
<pre>pvecm create <nom-du-cluster></pre> | |||
<pre>pvecm status</pre> | |||
Vérifiez notamment que vous avez bien la ligne : | |||
<pre>Node addresses: 10.10.10.1</pre> | |||
==Sur node2== | |||
Pour connecter node2 au cluster vous devez pouvoir vous connecter à l'interface proxmox avec l'utilisateur root@pam avec le mot-de-passe. Si vous l'aviez désactivé, réactivez le temporairement. | |||
Pour lancer l'ajout : | |||
<pre>pvecm add node1</pre> | |||
<pre>pvecm nodes | |||
Node Sts Inc Joined Name | |||
1 M 16 2013-08-23 22:46:09 node1 | |||
2 M 12 2013-08-23 22:46:09 node2 | |||
</pre> | |||
=Suppression d'un node= | |||
Avant de lancer la commande de suppression, vous devez impérativement couper la machine que vous souhaitez supprimer du cluster et vous assurer qu'elle ne redémarre à aucun moment sur proxmox (ou du moins pas sur cette installation de proxmox) car elle rejoindrait à nouveau le cluster. Si la machine rejoint le cluster après avoir été supprimé du cluster, vous risqueriez de flinguer totalement le cluster.<br> | |||
Dans l'idéal, passez la machine en mode rescue puis supprimez la configuration de tinc, ou arrêter la complètement. | |||
Pour supprimer la machine node5 du cluster, lancez sur n'importe quel autre node : | |||
<pre>pvecm delnode node5</pre> | |||
La commande ne retourne aucune confirmation. Si vous lancez <code>pvecm status</code>, vous devriez voir la ligne <code>Nodes:</code> décrémentée de 1. | |||
Pour supprimer définitivement les fichiers de configurations du node, et qu'il ne soit plus affiché dans la gui : | |||
<pre>rm -rf /etc/pve/nodes/node5</pre> | |||
=Afficher les informations du lien tinc= | |||
Le démon tinc permet egalement d'obtenir des informations plus détaillées sur le statut du lien : | |||
<pre>tincd -n <nom> -kUSR2</pre> | |||
Les informations seront dans le syslog | |||
=Note sur la gestion du démon tinc par systemd sous debian= | |||
Sous debian avec systemd, une unit par défaut est créée (<code>tinc.service</code>) mais ne reflete pas réellement le statut de votre démon tinc. Elle est utilisée pour propager les commandes stop, restart et reload à tous les démons tinc que vous pourriez lancer. | |||
Si vous créez deux VPN différents dans <code>/etc/tinc/vpnA/</code> et <code>/etc/tinc/vpnB/</code>, il vous faudra les activer avec : | |||
<pre> | |||
systemctl enable tinc@vpnA.service | |||
systemctl enable tinc@vpnB.service | |||
</pre> | |||
Puis vous pourrez gérer indépendamment vpnA ou vpnB en utilisant les noms complets, par exemple : | |||
<pre> | |||
systemctl status tinc@vpnA.service | |||
systemctl status tinc@vpnB.service | |||
</pre> | |||
L'unit <code>tinc.service</code> permet de propager les commandes stop, restart et reload à l'ensemble des démons tinc. Ainsi, <code>systemctl stop tinc.service</code> provoquera l'arrêt de <code>tinc@vpnA.service</code> et <code>tinc@vpnB.service</code> | |||
=Documentations tinc= | |||
* Pour /etc/tinc/tinc.conf : http://www.tinc-vpn.org/documentation/Main-configuration-variables.html#Main-configuration-variables | |||
* Pour /etc/tinc/vpn/hosts/yourhost : http://www.tinc-vpn.org/documentation/Host-configuration-variables.html#Host-configuration-variables |
Dernière version du 6 février 2021 à 15:36
cluster de 2 nodes : node1 ayant comme ip principale 88.88.88.88 et node2 ayant comme ip principale 99.99.99.99
Valable pour proxmox 2.x à proxmox 5.x
node 1
aptitude install tinc
mkdir -p /etc/tinc/vpn/hosts
Créez le fichier /etc/tinc/vpn/tinc.conf
contenant :
Name = node1 AddressFamily = ipv4 #BindToAddress = x.x.x.x Device = /dev/net/tun Mode = switch ConnectTo = node2 TcpOnly=no IndirectData=no
Créez le fichier /etc/tinc/vpn/hosts/node1
Address = 88.88.88.88 Port = 655 Compression = 0
Nous allons maintenant générer la paire de clé de node1. Tapez simplement la commande suivante et validez a chaque question :
tincd -n vpn -K4096
créez le fichier /etc/tinc/vpn/tinc-up
contenant :
#!/bin/bash /sbin/ip link set vpn up /sbin/ip addr add 10.10.10.1/24 dev vpn /sbin/ip route add 10.10.10.0/24 dev vpn /sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev vpn
Créez le fichier /etc/tinc/vpn/tinc-down
contenant :
#!/bin/bash /sbin/route del -net 224.0.0.0 netmask 240.0.0.0 dev vpn /sbin/ip link set vpn down
Rendez ces deux fichiers executables :
chmod +x /etc/tinc/vpn/tinc-*
Ajoutez le lancement du vpn :
echo vpn >> /etc/tinc/nets.boot
node 2
aptitude install tinc
mkdir -p /etc/tinc/vpn/hosts
Créez le fichier /etc/tinc/vpn/tinc.conf
contenant :
Name = node2 AddressFamily = ipv4 #BindToAddress = x.x.x.x Device = /dev/net/tun Mode = switch ConnectTo = node1 TcpOnly=no IndirectData=no
Créez le fichier /etc/tinc/vpn/hosts/node2
Address = 99.99.99.99 Port = 655 Compression = 0
Nous allons maintenant générer la paire de clé de node2. Tapez simplement la commande suivante et validez a chaque question :
tincd -n vpn -K4096
créez le fichier /etc/tinc/vpn/tinc-up
contenant :
#!/bin/bash /sbin/ip link set vpn up /sbin/ip addr add 10.10.10.2/24 dev vpn /sbin/ip route add 10.10.10.0/24 dev vpn /sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev vpn
Créez le fichier /etc/tinc/vpn/tinc-down
contenant :
#!/bin/bash /sbin/route del -net 224.0.0.0 netmask 240.0.0.0 dev vpn /sbin/ip link set vpn down
Rendez ces deux fichiers executables :
chmod +x /etc/tinc/vpn/tinc-*
Ajoutez le lancement du vpn :
echo vpn >> /etc/tinc/nets.boot
Synchronisez la configuration des deux nodes
Copiez le fichier /etc/tinc/vpn/hosts/node1
de node1
vers /etc/tinc/vpn/hosts/
sur node2
Copiez le fichier /etc/tinc/vpn/hosts/node2
de node2
vers /etc/tinc/vpn/hosts/
sur node1
Test de la configuration
Ajoutez ceci dans /etc/hosts
sur les deux nodes :
10.10.10.1 node1 10.10.10.2 node2
Sur les deux nodes :
systemctl start tinc@vpn
Installez omping pour tester le multicast (sur les deux nodes) :
aptitude install omping
Lancez cette commande sur les deux nodes
omping node1 node2
Lancement automatique
Si tout fonctionne, nous allons configurer tinc pour se lancer automatiquement au démarrage, et ce avant corosync.
systemctl edit --full tinc@vpn.service
et ajoutez la ligne suivante dans la section [Unit]
:
Before=corosync.service
Puis activez le lancement automatique de notre lien tinc "vpn" :
systemctl enable tinc@vpn
Puis recharger la configuration de systemd :
systemctl daemon-reload
Création du cluster
Attention : si vous avez désactivé le login ssh root par password il faut le réactiver obligatoirement car proxmox force le login par password lors de la création du cluster ; vous pourrez à nouveau le désactiver une fois le cluster créé.
Sur node1
pvecm create <nom-du-cluster>
pvecm status
Vérifiez notamment que vous avez bien la ligne :
Node addresses: 10.10.10.1
Sur node2
Pour connecter node2 au cluster vous devez pouvoir vous connecter à l'interface proxmox avec l'utilisateur root@pam avec le mot-de-passe. Si vous l'aviez désactivé, réactivez le temporairement.
Pour lancer l'ajout :
pvecm add node1
pvecm nodes Node Sts Inc Joined Name 1 M 16 2013-08-23 22:46:09 node1 2 M 12 2013-08-23 22:46:09 node2
Suppression d'un node
Avant de lancer la commande de suppression, vous devez impérativement couper la machine que vous souhaitez supprimer du cluster et vous assurer qu'elle ne redémarre à aucun moment sur proxmox (ou du moins pas sur cette installation de proxmox) car elle rejoindrait à nouveau le cluster. Si la machine rejoint le cluster après avoir été supprimé du cluster, vous risqueriez de flinguer totalement le cluster.
Dans l'idéal, passez la machine en mode rescue puis supprimez la configuration de tinc, ou arrêter la complètement.
Pour supprimer la machine node5 du cluster, lancez sur n'importe quel autre node :
pvecm delnode node5
La commande ne retourne aucune confirmation. Si vous lancez pvecm status
, vous devriez voir la ligne Nodes:
décrémentée de 1.
Pour supprimer définitivement les fichiers de configurations du node, et qu'il ne soit plus affiché dans la gui :
rm -rf /etc/pve/nodes/node5
Afficher les informations du lien tinc
Le démon tinc permet egalement d'obtenir des informations plus détaillées sur le statut du lien :
tincd -n <nom> -kUSR2
Les informations seront dans le syslog
Note sur la gestion du démon tinc par systemd sous debian
Sous debian avec systemd, une unit par défaut est créée (tinc.service
) mais ne reflete pas réellement le statut de votre démon tinc. Elle est utilisée pour propager les commandes stop, restart et reload à tous les démons tinc que vous pourriez lancer.
Si vous créez deux VPN différents dans /etc/tinc/vpnA/
et /etc/tinc/vpnB/
, il vous faudra les activer avec :
systemctl enable tinc@vpnA.service systemctl enable tinc@vpnB.service
Puis vous pourrez gérer indépendamment vpnA ou vpnB en utilisant les noms complets, par exemple :
systemctl status tinc@vpnA.service systemctl status tinc@vpnB.service
L'unit tinc.service
permet de propager les commandes stop, restart et reload à l'ensemble des démons tinc. Ainsi, systemctl stop tinc.service
provoquera l'arrêt de tinc@vpnA.service
et tinc@vpnB.service
Documentations tinc
- Pour /etc/tinc/tinc.conf : http://www.tinc-vpn.org/documentation/Main-configuration-variables.html#Main-configuration-variables
- Pour /etc/tinc/vpn/hosts/yourhost : http://www.tinc-vpn.org/documentation/Host-configuration-variables.html#Host-configuration-variables