Project

General

Profile

Cluster configuration » History » Version 6

Tom Clegg, 06/19/2018 03:44 PM

1 1 Tom Clegg
h1. Cluster configuration
2
3
We are (2018) consolidating configuration from per-microservice yaml/json/ini files into a single cluster configuration document that is used by all components.
4
* Long term: system nodes automatically keep their configs synchronized (using something like consul).
5
* Short term: sysadmin uses tools like puppet and terraform to ensure /etc/arvados/config.yml is identical on all system nodes.
6
* Hosts without config files (e.g., hosts outside the cluster) can retrieve the config document from the API server.
7
8
h2. Discovery document
9
10
Previously, we copied selected config values from the API server config into the API discovery document so clients could see them. When clients can get the configuration document itself, this won't be needed. The discovery document should advertise APIs provided by the server, not cluster configuration.
11
12
h2. Example config file
13
14
(Format not yet frozen!)
15
16
<pre><code class="yaml">
17
Clusters:
18
  xyzzy:
19
    BlobSigningKey: ungu355able
20
    BlobSignatureTTL: 172800
21 6 Tom Clegg
    SessionKey: 186005aa54cab1ca95a3738e6e954e0a35a96d3d13a8ea541f4156e8d067b4f3
22 4 Tom Clegg
    PostgreSQL:
23
      Host: localhost
24
      Port: 5432
25
      Username: arvados
26
      Password: s3cr3t
27
      Database: arvados_production
28
      Encoding: utf8
29
    HTTPRequestTimeout: 5m
30 6 Tom Clegg
    Defaults:
31
      CollectionReplication: 2
32
      TrashLifetime: 2w
33
    UserActivation:
34
      ActivateNewUsers: true
35
      AutoAdminUser: root@example.com
36
      UserProfileNotificationAddress: notify@example.com
37
      NewUserNotificationRecipients: []
38
      NewInactiveUserNotificationRecipients: []
39
    Limits:
40
      MaxRequestLogParamsSize: 2KB
41
      MaxRequestSize: 128MiB
42
      MaxIndexDatabaseRead: 128MiB
43
      MaxItemsPerResponse: 1000
44
    AuditLogs:
45
      MaxAge: 2w
46
      DeleteBatchSize: 100000
47
      UnloggedAttributes: []
48
    ContainerLogStream:
49
      BatchSize: 4KiB
50
      BatchTime: 1s
51
      ThrottlePeriod: 1m
52
      ThrottleThresholdSize: 64KiB
53
      ThrottleThresholdLines: 1024
54
      TruncateSize: 64MiB
55
      PartialLineThrottlePeriod: 5s
56
    Timers:
57
      TrashSweepInterval: 60s
58
    Scaling:
59
      MaxComputeNodes: 64
60
      EnablePreemptibleInstances: false
61
    DisableAPIMethods: []
62
    DockerImageFormats: ["v2"]
63
    Crunch1:
64
      Enable: true
65
      CrunchJobWrapper: none
66
      CrunchJobUser: crunch
67
      CrunchRefreshTrigge: /tmp/crunch_refresh_trigger
68
      DefaultDockerImage: false
69 4 Tom Clegg
    NodeProfiles:
70
      # Key is a profile name; can be specified on service prog command line, defaults to $(hostname)
71
      keep:
72
        # Don’t run other services automatically -- only specified ones
73
        Default: {Disable: true}
74
        Keepstore: {Listen: ":25107"}
75
      apiserver:
76
        Default: {Disable: true}
77
        RailsAPI: {Listen: ":9000", TLS: true}
78
        Controller: {Listen: ":9100"}
79
        Websocket: {Listen: ":9101"}
80
        Health: {Listen: ":9199"}
81
      keep:
82
        Default: {Disable: true}
83
        KeepProxy: {Listen: ":9102"}
84
        KeepWeb: {Listen: ":9103"}
85
      *:
86
        # This section used for a node whose profile name is not listed above
87
        Default: {Disable: false} # (this is the default behavior)
88 1 Tom Clegg
    Volumes:
89
      xyzzy-keep-0:
90
        Type: s3
91
        Region: us-east
92
        Bucket: xyzzy-keep-0
93
        # [rest of keepstore volume config goes here]
94
    Providers:
95
      AWS:
96
        # [credentials and stuff go here]
97 4 Tom Clegg
    WebRoutes:
98 5 Tom Clegg
      # “default” means route according to method/host/path (e.g., if host is a login shell, route there)
99 4 Tom Clegg
      xyzzy.arvadosapi.com: default
100
      # “collections” means always route to keep-web
101
      collections.xyzzy.arvadosapi.com: collections
102
      # leading * is a wildcard (longest match wins)
103
      "*--collections.xyzzy.arvadosapi.com": collections
104
      cloud.curoverse.com: workbench
105
      workbench.xyzzy.arvadosapi.com: workbench
106
      "*.xyzzy.arvadosapi.com": default
107 3 Tom Clegg
    InstanceTypes:
108 2 Tom Clegg
    - Name: m4.large
109 1 Tom Clegg
      VCPUs: 2
110
      RAM: 8000000000
111 2 Tom Clegg
      Scratch: 31000000000
112 1 Tom Clegg
      Price: 0.1
113
    - Name: m4.large-1t
114 2 Tom Clegg
      # same instance type as m4.large but our scripts attach more scratch
115
      ProviderType: m4.large
116
      VCPUs: 2
117
      RAM: 8000000000
118 1 Tom Clegg
      Scratch: 999000000000
119
      Price: 0.12
120 2 Tom Clegg
    - Name: m4.xlarge
121
      VCPUs: 4
122 1 Tom Clegg
      RAM: 16000000000
123 3 Tom Clegg
      Scratch: 78000000000
124 1 Tom Clegg
      Price: 0.2
125
    - Name: m4.8xlarge
126
      VCPUs: 40
127
      RAM: 160000000000
128
      Scratch: 156000000000
129
      Price: 2
130
    - Name: m4.16xlarge
131
      VCPUs: 64
132 3 Tom Clegg
      RAM: 256000000000
133 1 Tom Clegg
      Scratch: 310000000000
134
      Price: 3.2
135
    - Name: c4.large
136
      VCPUs: 2
137
      RAM: 3750000000
138
      Price: 0.1
139
    - Name: c4.8xlarge
140
      VCPUs: 36
141
      RAM: 60000000000
142 2 Tom Clegg
      Price: 1.591
143 1 Tom Clegg
</code></pre>