MODOP – Déploiement d’un peers au Cluster via le leader – Partie 3

1. Inventaire du nouveau peer

Hostname

  • Node-ipfsp3 : IP = 192.168.1.73 (peer)

HDD

  • Disque SCSI0 : Système
  • Disque SCSI1 & SCSI2 : RAID1

2. Installation des prérequis

Ajout des clefs SSH sur le client

[root@node-ipfsl ~]# ssh-keygen
[root@node-ipfsl ~]# ssh-copy-id root@192.168.1.73

Modifier le hostname client

[root@node-ipfsl ~]# ssh root@192.168.1.73 'hostnamectl hostname node-ipfsp3'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'hostnamectl'

Update machine cliente

[root@node-ipfsl ~]# ssh root@192.168.1.73 'dnf update -y'

Desactiver SELinux

[root@node-ipfsl ~]# ssh root@192.168.1.73 'sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'cat /etc/selinux/config |grep SELINUX'

Paramétrage ntp

[root@node-ipfsl ~]# ssh root@192.168.1.73 'timedatectl set-timezone Europe/Paris'

Installation paquets utils

[root@node-ipfsl ~]# ssh root@192.168.1.73 'dnf install epel-release net-tools nmap wget tar git -y'

3. Installation du RAID1

Prédisposition du RAID Logiciel

[root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "modprobe linear" >> /etc/rc.local'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "modprobe raid1" >> /etc/rc.local'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'chmod +x /etc/rc.local'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'source /etc/rc.local'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'cat /proc/mdstat'

Partitionnement des disques en mode RAID

[root@node-ipfsl ~]# ssh root@192.168.1.73 'parted -s /dev/sdb mklabel msdos'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'parted -s /dev/sdc mklabel msdos'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'parted -s /dev/sdb mkpart primary 1MiB 100%'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'parted -s /dev/sdc mkpart primary 1MiB 100%'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'parted -s /dev/sdb set 1 raid on'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'parted -s /dev/sdc set 1 raid on'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'fdisk -l /dev/sd[b-c] |grep RAID'
/dev/sdb1 2048 104857599 104855552 50G fd RAID Linux autodétecté
/dev/sdc1 2048 104857599 104855552 50G fd RAID Linux autodétecté

Création du RAID 1

[root@node-ipfsl ~]# ssh root@192.168.1.73 'mdadm -E /dev/sd[b-c]'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'cat /proc/mdstat'

Attendre la fin de la création du raid1

4. Préparation du volume RAID1

[root@node-ipfsl ~]# ssh root@192.168.1.73 'mkfs.ext4 /dev/md0'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'mkdir -p /mnt/ipfs-data'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "/dev/md0 /mnt/ipfs-data ext4 defaults 0 2" >> /etc/fstab'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'systemctl daemon-reload'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'mount -a'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'df -Th |grep ipfs'
/dev/md0 ext4 49G 24K 47G 1% /mnt/ipfs-data

5. Règle Firewall

[root@node-ipfsl ~]# ssh root@192.168.1.73 'firewall-cmd --add-port={4001,5001,9094,9095,9096,8080}/tcp --permanent'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'firewall-cmd --add-port=4001/udp --permanent'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'firewall-cmd --remove-service={cockpit,dhcpv6-client} --permanent'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'firewall-cmd --reload'

6. Installation langage GO

[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && wget https://go.dev/dl/go1.24.4.linux-amd64.tar.gz'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && tar -xvf go1.24.4.linux-amd64.tar.gz && mv go /usr/local'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'mkdir $HOME/gopath'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "export GOROOT=/usr/local/go" >> $HOME/.bashrc'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "export GOPATH=$HOME/gopath" >> $HOME/.bashrc'
[root@node-ipfsl ~]# ssh root@192.168.1.73 "sed -i 's/export PATH/#export PATH/g' $HOME/.bashrc"
[root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "export PATH=$PATH:$GOROOT/bin:$GOPATH/bin" >> $HOME/.bashrc'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'source ~/.bashrc'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'go version'
go version go1.24.4 linux/amd64

7. Installation des paquets nécessaires

Installation du paquet IPFS KUBO

[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && wget https://dist.ipfs.tech/kubo/v0.35.0/kubo_v0.35.0_linux-amd64.tar.gz'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && tar -xzvf kubo_v0.35.0_linux-amd64.tar.gz kubo/'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home/kubo && bash install.sh'
Moved ./ipfs to /usr/local/bin

[root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs --version'
ipfs version 0.35.0

Installation du paquet cluster ipfs service

[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && wget https://dist.ipfs.tech/ipfs-cluster-service/v1.1.4/ipfs-cluster-service_v1.1.4_linux-amd64.tar.gz'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && tar -xzvf ipfs-cluster-service_v1.1.4_linux-amd64.tar.gz ipfs-cluster-service/'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && mv ipfs-cluster-service/ipfs-cluster-service /usr/local/bin/'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs-cluster-service --version'
ipfs-cluster-service version 1.1.4

Installation du paquet cluster ipfs ctl

[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && wget https://dist.ipfs.tech/ipfs-cluster-ctl/v1.1.4/ipfs-cluster-ctl_v1.1.4_linux-amd64.tar.gz'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && tar -xzvf ipfs-cluster-ctl_v1.1.4_linux-amd64.tar.gz ipfs-cluster-ctl/'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && mv ipfs-cluster-ctl/ipfs-cluster-ctl /usr/local/bin/'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs-cluster-ctl --version'
ipfs-cluster-ctl version 1.1.4

Variables d’environnements

[root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "export IPFS_PATH=/mnt/ipfs-data/ipfs" >> $HOME/.bashrc'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "export IPFS_CLUSTER_PATH=/mnt/ipfs-data/ipfs-cluster" >> $HOME/.bashrc'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "export LIBP2P_FORCE_PNET=1" >> $HOME/.bashrc'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'source $HOME/.bashrc'

8. Initialisation et service IPFS Peer node-ipfsp3

Initialisation nœud IPFS

[root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs init'

[root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs config Datastore.StorageMax \"40GB\"'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs config Addresses.API /ip4/0.0.0.0/tcp/5001'
[root@node-ipfsl ~]# ssh root@192.168.1.73 "ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '[\"*\"]'"
[root@node-ipfsl ~]# ssh root@192.168.1.73 "ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '[\"PUT\", \"POST\"]'"
[root@node-ipfsl ~]# ssh root@192.168.1.73 "ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '[\"http://192.168.1.73:5001\", \"http://localhost:3000\", \"http://127.0.0.1:5001\", \"https://node-ipfsp3.house.cp\"]'"

Mode privé du noeud

[root@node-ipfsl ~]# scp /mnt/ipfs-data/ipfs/swarm.key root@192.168.1.73:/mnt/ipfs-data/ipfs/swarm.key

[root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs bootstrap rm --all'
removed /dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN
removed /dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa
removed /dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb
removed /dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt
removed /dnsaddr/va1.bootstrap.libp2p.io/p2p/12D3KooWKnDdG3iXw9eTFijk3EWSunZcFi54Zka4wmtqtt6rPxc8
removed /ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ
removed /ip4/104.131.131.82/udp/4001/quic-v1/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ

[root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs config Routing.Type dht'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs config --json AutoTLS.Enabled false'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs config --json Swarm.Transports.Network.WebTransport false'
[root@node-ipfsl ~]# ssh root@192.168.1.73 "ipfs config --json Swarm.Transports.Network '{\"TCP\": true, \"QUIC\": false, \"Websocket\": false, \"Relay\": false, \"WebTransport\": false, \"WebRTCDirect\": false}'"

Service daemon ipfs

[root@node-ipfsl ~]# scp /etc/systemd/system/ipfs-peer.service root@192.168.1.73:/etc/systemd/system/ipfs-peer.service

[root@node-ipfsl ~]# ssh root@192.168.1.73 'systemctl daemon-reexec && systemctl daemon-reload'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'systemctl enable ipfs-peer && systemctl start ipfs-peer'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'systemctl status ipfs-peer'

[root@node-ipfsl ~]# ipfs swarm peers
/ip4/192.168.1.71/tcp/4001/p2p/12D3KooWJb4HwVbXFuxZSeFAUjocurt7gPw14G6CsZRwTpVgMNdP
/ip4/192.168.1.72/tcp/4001/p2p/12D3KooWQ4VuBLMjVvmW4F4fhKxbArFG4Y9SQ3coVBo1PL29qrJx

9. Initialisation et service Cluster IPFS Peer node-ipfsp3

Initialisation nœud cluster IPFS

[root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs-cluster-service init'

Récupération la clef secrète du leader

[root@node-ipfsl home]# cat /mnt/ipfs-data/ipfs-cluster/service.json |grep -i secret
 "secret": "9dc28eb1c943ec508cc9f5a8b4c4726a5398be979c62521dd93252d62cb72196",

[root@node-ipfsl ~]# ssh root@192.168.1.73 "sed -i 's/\"secret\": \".*\"/\"secret\": \"9dc28eb1c943ec508cc9f5a8b4c4726a5398be979c62521dd93252d62cb72196\"/' /mnt/ipfs-data/ipfs-cluster/service.json"

Copie du service Peers Cluster avec bootstrap leader

[root@node-ipfsl ~]# scp root@192.168.1.71:/etc/systemd/system/ipfs-cluster-peer.service root@192.168.1.73:/etc/systemd/system/ipfs-cluster-peer.service

Autoriser les accès Cluster API et Web URL

[root@node-ipfsl ~]# ssh root@192.168.1.73 "sed -i 's|"/ip4/127.0.0.1/tcp/9094"|"/ip4/0.0.0.0/tcp/9094"|' /mnt/ipfs-data/ipfs-cluster/service.json"
[root@node-ipfsl ~]# ssh root@192.168.1.73 "sed -i 's|"/ip4/127.0.0.1/tcp/8080"|"/ip4/0.0.0.0/tcp/8080"|' /mnt/ipfs-data/ipfs/config"

10. Démarrer tous les services node-ipfsp3

Redémarrage peer IPFS

[root@node-ipfsl ~]# ssh root@192.168.1.73 "systemctl stop ipfs-peer && systemctl start ipfs-peer"
[root@node-ipfsl ~]# ssh root@192.168.1.73 "systemctl status ipfs-peer"

Démarrage Cluster service IPFS

[root@node-ipfsl ~]# ssh root@192.168.1.73 'systemctl daemon-reexec && systemctl daemon-reload'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'systemctl enable ipfs-cluster-peer.service && systemctl start ipfs-cluster-peer.service'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'systemctl status ipfs-cluster-peer.service'

11. Check du nouveau nœud

Liste les nœuds peers du cluster

[root@node-ipfsl ~]# ipfs-cluster-ctl peers ls |grep "192.168.1.7"

[root@node-ipfsl ~]# ipfs-cluster-ctl peers ls

Accès du fichier «Bob_l_eponge.jpg » répliqué précédemment

  • http://192.168.1.73:8080/ipfs/QmP5rxgZxYjit96NnKqLB7KduPA79nmBwEJAAuxpcqefnm

Views: 0

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *