Introduce a gossip-converged pooled datastore protocol layered on SWIM piggybacking, backed by a reusable gossip-channel abstraction, plus a Docker-free multi-process cluster test runner. - crates/distribution/src/gossip_channel.rs: add the GossipChannel trait (piggyback on SWIM messages) and a budget-limited DisseminationBuffer<T> that replaces the four duplicated Lambda*ceil(log2(n)) dissemination copies - crates/datastore/src/pool: add PoolDisseminator (CRDT state for membership/capacity/content-location/ACL with join/leave/announce) and PoolCoordinator (placement-aware CRUD actor delegating to the co-located DatastoreNode) - crates/shared-types/src/pool.rs: add shared pool protocol types (PoolId plus member/capacity/content-location/ACL entries and PoolConfig) consumed by both distribution and datastore - crates/dashboard/src/pool_html.rs: add a live pool dashboard page (membership, capacity, content locations) and add pool_tests integration coverage - xtask/src/sim_cluster.rs: add the sim-cluster runner that spawns N swactor nodes over iroh through a local relay server, reusing the docker cluster scenarios without Docker - crates/distribution/src/iroh_driver.rs: add relay-URL resolution (cache, then SWIM gossip, then home relay) with a 2s connect timeout to back the relay-based connections Signed-off-by: Zachery Aaron Shores-Chmielewski <zacheryasc@gmail.com>
77 lines
1.6 KiB
YAML
77 lines
1.6 KiB
YAML
services:
|
|
seed:
|
|
image: swactor-dev-cluster
|
|
command:
|
|
- "--identity-dir"
|
|
- "/identity"
|
|
- "--listen"
|
|
- "0.0.0.0:11204"
|
|
- "--no-relay"
|
|
- "--pool-name"
|
|
- "dev-pool"
|
|
- "--pool-capacity"
|
|
- "104857600"
|
|
- "--actors"
|
|
- "2"
|
|
volumes:
|
|
- /home/aaron/swactor-pooled-datastore/.dev-cluster/seed-identity:/identity:ro
|
|
networks:
|
|
dev-cluster:
|
|
ipv4_address: 10.0.2.10
|
|
ports:
|
|
- "9100:9090"
|
|
|
|
node-2:
|
|
image: swactor-dev-cluster
|
|
command:
|
|
- "--seed-node-id"
|
|
- "d5469553d4408073022fee3e41c99cf9778bf3621e430f75f8c8ae7d6de0153f"
|
|
- "--seed-addrs"
|
|
- "10.0.2.10:11204"
|
|
- "--listen"
|
|
- "0.0.0.0:11204"
|
|
- "--no-relay"
|
|
- "--pool-name"
|
|
- "dev-pool"
|
|
- "--pool-capacity"
|
|
- "104857600"
|
|
- "--actors"
|
|
- "2"
|
|
networks:
|
|
dev-cluster:
|
|
ipv4_address: 10.0.2.11
|
|
ports:
|
|
- "9101:9090"
|
|
depends_on:
|
|
- seed
|
|
|
|
node-3:
|
|
image: swactor-dev-cluster
|
|
command:
|
|
- "--seed-node-id"
|
|
- "d5469553d4408073022fee3e41c99cf9778bf3621e430f75f8c8ae7d6de0153f"
|
|
- "--seed-addrs"
|
|
- "10.0.2.10:11204"
|
|
- "--listen"
|
|
- "0.0.0.0:11204"
|
|
- "--no-relay"
|
|
- "--pool-name"
|
|
- "dev-pool"
|
|
- "--pool-capacity"
|
|
- "104857600"
|
|
- "--actors"
|
|
- "2"
|
|
networks:
|
|
dev-cluster:
|
|
ipv4_address: 10.0.2.12
|
|
ports:
|
|
- "9102:9090"
|
|
depends_on:
|
|
- seed
|
|
|
|
networks:
|
|
dev-cluster:
|
|
driver: bridge
|
|
ipam:
|
|
config:
|
|
- subnet: 10.0.2.0/24
|