Project

General

Profile

Cluster configuration » History » Version 5

Tom Clegg, 06/18/2018 06:18 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 4 Tom Clegg
    PostgreSQL:
22
      Host: localhost
23
      Port: 5432
24
      Username: arvados
25
      Password: s3cr3t
26
      Database: arvados_production
27
      Encoding: utf8
28
    HTTPRequestTimeout: 5m
29
    NodeProfiles:
30
      # Key is a profile name; can be specified on service prog command line, defaults to $(hostname)
31
      keep:
32
        # Don’t run other services automatically -- only specified ones
33
        Default: {Disable: true}
34
        Keepstore: {Listen: ":25107"}
35
      apiserver:
36
        Default: {Disable: true}
37
        RailsAPI: {Listen: ":9000", TLS: true}
38
        Controller: {Listen: ":9100"}
39
        Websocket: {Listen: ":9101"}
40
        Health: {Listen: ":9199"}
41
      keep:
42
        Default: {Disable: true}
43
        KeepProxy: {Listen: ":9102"}
44
        KeepWeb: {Listen: ":9103"}
45
      *:
46
        # This section used for a node whose profile name is not listed above
47
        Default: {Disable: false} # (this is the default behavior)
48 1 Tom Clegg
    Volumes:
49
      xyzzy-keep-0:
50
        Type: s3
51
        Region: us-east
52
        Bucket: xyzzy-keep-0
53
        # [rest of keepstore volume config goes here]
54
    Providers:
55
      AWS:
56
        # [credentials and stuff go here]
57 4 Tom Clegg
    WebRoutes:
58 5 Tom Clegg
      # “default” means route according to method/host/path (e.g., if host is a login shell, route there)
59 4 Tom Clegg
      xyzzy.arvadosapi.com: default
60
      # “collections” means always route to keep-web
61
      collections.xyzzy.arvadosapi.com: collections
62
      # leading * is a wildcard (longest match wins)
63
      "*--collections.xyzzy.arvadosapi.com": collections
64
      cloud.curoverse.com: workbench
65
      workbench.xyzzy.arvadosapi.com: workbench
66
      "*.xyzzy.arvadosapi.com": default
67 3 Tom Clegg
    InstanceTypes:
68 2 Tom Clegg
    - Name: m4.large
69 1 Tom Clegg
      VCPUs: 2
70
      RAM: 8000000000
71 2 Tom Clegg
      Scratch: 31000000000
72 1 Tom Clegg
      Price: 0.1
73
    - Name: m4.large-1t
74 2 Tom Clegg
      # same instance type as m4.large but our scripts attach more scratch
75
      ProviderType: m4.large
76
      VCPUs: 2
77
      RAM: 8000000000
78 1 Tom Clegg
      Scratch: 999000000000
79
      Price: 0.12
80 2 Tom Clegg
    - Name: m4.xlarge
81
      VCPUs: 4
82 1 Tom Clegg
      RAM: 16000000000
83 3 Tom Clegg
      Scratch: 78000000000
84 1 Tom Clegg
      Price: 0.2
85
    - Name: m4.8xlarge
86
      VCPUs: 40
87
      RAM: 160000000000
88
      Scratch: 156000000000
89
      Price: 2
90
    - Name: m4.16xlarge
91
      VCPUs: 64
92 3 Tom Clegg
      RAM: 256000000000
93 1 Tom Clegg
      Scratch: 310000000000
94
      Price: 3.2
95
    - Name: c4.large
96
      VCPUs: 2
97
      RAM: 3750000000
98
      Price: 0.1
99
    - Name: c4.8xlarge
100
      VCPUs: 36
101
      RAM: 60000000000
102 2 Tom Clegg
      Price: 1.591
103 1 Tom Clegg
</code></pre>