-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathcompose.multinode.yaml
More file actions
132 lines (120 loc) · 5.04 KB
/
Copy pathcompose.multinode.yaml
File metadata and controls
132 lines (120 loc) · 5.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
name: means-multinode
# Current Means multi-node support is a topology/development scaffold.
# Do not put a load balancer in front of these services until distributed metadata/RPC is implemented,
# because each node owns an independent XlFs namespace.
x-means-common: &means-common
image: means:local
build:
context: .
dockerfile: src/Means/Dockerfile
restart: unless-stopped
user: "0:0"
environment: &means-common-env
ASPNETCORE_ENVIRONMENT: "${ASPNETCORE_ENVIRONMENT:-Production}"
ASPNETCORE_URLS: "http://+:8080"
AllowedHosts: "*"
Means__S3__ServiceHost: "${MEANS_S3_SERVICE_HOST:-localhost}"
Means__S3__DomainSuffix: "${MEANS_S3_DOMAIN_SUFFIX:-means.local}"
Means__S3__AliasPrefix: "/s3"
Means__Storage__ObjectsPath: "/data/objects"
Means__Storage__Disks__0: "/data/xlfs/disk1"
Means__Storage__Disks__1: "/data/xlfs/disk2"
Means__Storage__Disks__2: "/data/xlfs/disk3"
Means__Storage__Disks__3: "/data/xlfs/disk4"
Means__Storage__DeploymentId: "${MEANS_DEPLOYMENT_ID:-means-local-multinode}"
Means__Storage__ErasureDataShards: "2"
Means__Storage__ErasureParityShards: "2"
Means__Storage__WriteQuorum: "3"
Means__Storage__ReadQuorum: "1"
Means__Storage__MetaSyncMode: "${MEANS_META_SYNC_MODE:-Always}"
Means__Storage__VerifyChecksumOnRead: "${MEANS_VERIFY_CHECKSUM_ON_READ:-false}"
# Bootstrap S3 credentials. Prefer host env MEANS_ACCESS_KEY / MEANS_SECRET_KEY.
# Compose only interpolates ${...} from the host/.env — not from sibling keys in this block.
# On every startup Means re-applies these values to the bootstrap access key metadata,
# so changing them and recreating containers takes effect without wiping volumes.
Means__Storage__DefaultAccessKey: "${MEANS_ACCESS_KEY:-meansadmin}"
Means__Storage__DefaultSecretKey: "${MEANS_SECRET_KEY:-meansadmin-local-secret}"
Means__Storage__MultipartUploadCleanupAgeHours: "24"
Means__Storage__MultipartUploadCleanupIntervalMinutes: "60"
Means__Cluster__ClusterId: "means-compose"
Means__Cluster__ClusterName: "Means Compose Cluster"
Means__Cluster__PoolId: "pool-1"
Means__Cluster__PoolName: "Pool 1"
Means__Cluster__InternalAuthToken: "${MEANS_CLUSTER_INTERNAL_TOKEN:-means-cluster-local-secret}"
Means__Cluster__MaxShardTransferBytes: "${MEANS_MAX_SHARD_TRANSFER_BYTES:-5368709120}"
Means__RequestLimits__MaxUploadSizeBytes: "${MEANS_MAX_UPLOAD_SIZE_BYTES:-1073741824}"
Means__RequestLimits__MaxConcurrentUploadRequests: "${MEANS_MAX_CONCURRENT_UPLOADS:-64}"
Means__RateLimits__Enabled: "${MEANS_RATE_LIMITS_ENABLED:-true}"
Means__Telemetry__Enabled: "${MEANS_TELEMETRY_ENABLED:-false}"
Means__Telemetry__OtlpEndpoint: "${MEANS_OTLP_ENDPOINT:-}"
Means__Console__AdminUser: "${MEANS_CONSOLE_ADMIN_USER:-meansadmin}"
Means__Console__AdminPassword: "${MEANS_CONSOLE_ADMIN_PASSWORD:-meansadmin-local}"
Means__Console__SessionHours: "${MEANS_CONSOLE_SESSION_HOURS:-8}"
services:
means-node1:
<<: *means-common
container_name: means-node1
ports:
- "${MEANS_NODE1_HTTP_PORT:-5181}:8080"
environment:
<<: *means-common-env
Means__Storage__SetId: "set-node1"
Means__Cluster__NodeId: "means-node1"
Means__Cluster__NodeEndpoint: "http://means-node1:8080"
Means__Cluster__ObjectDiskId: "means-node1-objects"
volumes:
- means-node1-objects:/data/objects
- means-node1-disk1:/data/xlfs/disk1
- means-node1-disk2:/data/xlfs/disk2
- means-node1-disk3:/data/xlfs/disk3
- means-node1-disk4:/data/xlfs/disk4
means-node2:
<<: *means-common
container_name: means-node2
ports:
- "${MEANS_NODE2_HTTP_PORT:-5182}:8080"
environment:
<<: *means-common-env
Means__Storage__SetId: "set-node2"
Means__Cluster__NodeId: "means-node2"
Means__Cluster__NodeEndpoint: "http://means-node2:8080"
Means__Cluster__ObjectDiskId: "means-node2-objects"
volumes:
- means-node2-objects:/data/objects
- means-node2-disk1:/data/xlfs/disk1
- means-node2-disk2:/data/xlfs/disk2
- means-node2-disk3:/data/xlfs/disk3
- means-node2-disk4:/data/xlfs/disk4
means-node3:
<<: *means-common
container_name: means-node3
ports:
- "${MEANS_NODE3_HTTP_PORT:-5183}:8080"
environment:
<<: *means-common-env
Means__Storage__SetId: "set-node3"
Means__Cluster__NodeId: "means-node3"
Means__Cluster__NodeEndpoint: "http://means-node3:8080"
Means__Cluster__ObjectDiskId: "means-node3-objects"
volumes:
- means-node3-objects:/data/objects
- means-node3-disk1:/data/xlfs/disk1
- means-node3-disk2:/data/xlfs/disk2
- means-node3-disk3:/data/xlfs/disk3
- means-node3-disk4:/data/xlfs/disk4
volumes:
means-node1-objects:
means-node1-disk1:
means-node1-disk2:
means-node1-disk3:
means-node1-disk4:
means-node2-objects:
means-node2-disk1:
means-node2-disk2:
means-node2-disk3:
means-node2-disk4:
means-node3-objects:
means-node3-disk1:
means-node3-disk2:
means-node3-disk3:
means-node3-disk4: