Я понял, как запустить многоузловой кластер IPFS в среде докера.Текущая версия ipfs/ipfs-cluster
версии 0.4.17 не запускает ipfs peer, т.е. ipfs/go-ipfs
.Нам нужно запустить его отдельно.
Итак, теперь для запуска многоузлового (в данном случае 2 узла) кластера IPSF в среде докера нам нужно запустить 2 одноранговых контейнера IPFS и 2 кластерных кластера IPFS 1, соответствующих каждому одноранговому узлу.
Таким образом, ваш файл docker-compose будет выглядеть следующим образом:
version: '3'
networks:
vpcbr:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
services:
ipfs0:
container_name: ipfs0
image: ipfs/go-ipfs
ports:
- "4001:4001"
- "5001:5001"
- "8081:8080"
volumes:
- ./var/ipfs0-docker-data:/data/ipfs/
- ./var/ipfs0-docker-staging:/export
networks:
vpcbr:
ipv4_address: 10.5.0.5
ipfs1:
container_name: ipfs1
image: ipfs/go-ipfs
ports:
- "4101:4001"
- "5101:5001"
- "8181:8080"
volumes:
- ./var/ipfs1-docker-data:/data/ipfs/
- ./var/ipfs1-docker-staging:/export
networks:
vpcbr:
ipv4_address: 10.5.0.7
ipfs-cluster0:
container_name: ipfs-cluster0
image: ipfs/ipfs-cluster
depends_on:
- ipfs0
environment:
CLUSTER_SECRET: 1aebe6d1ff52d96241e00d1abbd1be0743e3ccd0e3f8a05e3c8dd2bbbddb7b93
IPFS_API: /ip4/10.5.0.5/tcp/5001
ports:
- "9094:9094"
- "9095:9095"
- "9096:9096"
volumes:
- ./var/ipfs-cluster0:/data/ipfs-cluster/
networks:
vpcbr:
ipv4_address: 10.5.0.6
ipfs-cluster1:
container_name: ipfs-cluster1
image: ipfs/ipfs-cluster
depends_on:
- ipfs1
- ipfs-cluster0
environment:
CLUSTER_SECRET: 1aebe6d1ff52d96241e00d1abbd1be0743e3ccd0e3f8a05e3c8dd2bbbddb7b93
IPFS_API: /ip4/10.5.0.7/tcp/5001
ports:
- "9194:9094"
- "9195:9095"
- "9196:9096"
volumes:
- ./var/ipfs-cluster1:/data/ipfs-cluster/
networks:
vpcbr:
ipv4_address: 10.5.0.8
Это будет вращать 2-х одноранговый кластер IPFS, и мы можем сохранять и извлекать файл, используя любой одноранговый узел.
улов здесь - нам нужно предоставить IPFS_API для ipfs-cluster в качестве переменной среды, чтобы ipfs-cluster знал своего соответствующего партнера.И для обоих ipfs-кластеров у нас должен быть одинаковый CLUSTER_SECRET.