Commit graph

22 commits

Author SHA1 Message Date
2c2e65ad8b
Merge commit 'ec12d6c' into next 2022-12-11 18:41:15 +01:00
280d1be7b1
Refactor health check and add ability to return it in json 2022-12-05 15:28:57 +01:00
28d7a49f63
Merge branch 'main' into optimal-layout 2022-11-07 12:20:59 +01:00
002b9fc50c
Add TLS support for Consul discovery + refactoring 2022-10-18 18:38:20 +02:00
4abab246f1 cargo fmt 2022-10-10 17:21:13 +02:00
7f3249a237 New version of the algorithm that calculate the layout.
It takes as paramters the replication factor and the zone redundancy, computes the
largest partition size reachable with these constraints, and among the possible
assignation with this partition size, it computes the one that moves the least number
of partitions compared to the previous assignation.
This computation uses graph algorithms defined in graph_algo.rs
2022-09-21 14:39:59 +02:00
9d0ed78887 Add feature flag for Kubernetes discovery 2022-03-24 16:57:43 +01:00
8c2fb0c066
Add tracing integration with opentelemetry 2022-03-14 10:52:13 +01:00
2cab84b1fe
Add many metrics in table/ and rpc/ 2022-03-14 10:51:50 +01:00
9d44127245
add support for kubernetes service discovery
This commit adds support to discover garage instances running in
kubernetes.

Once enabled by setting `kubernetes_namespace` and
`kubernetes_service_name` garage will create a Custom Resources
`garagenodes.deuxfleurs.fr` with nodes public key as the resource name.
and IP and Port information as spec in the namespace configured by
`kubernetes_namespace`.

For discovering nodes the resources are filtered with the optionally set
`kubernetes_service_name` which sets a label
`garage.deuxfleurs.fr/service` on the resources.

This allows to separate multiple garage deployments in a single
namespace.

the `kubernetes_skip_crd` variable allows to disable the creation of the
CRD by garage itself. The user must deploy this manually.
2022-03-12 13:05:52 +01:00
c94406f428
Improve how node roles are assigned in Garage
- change the terminology: the network configuration becomes the role
  table, the configuration of a nodes becomes a node's role
- the modification of the role table takes place in two steps: first,
  changes are staged in a CRDT data structure. Then, once the user is
  happy with the changes, they can commit them all at once (or revert
  them).
- update documentation
- fix tests
- implement smarter partition assignation algorithm

This patch breaks the format of the network configuration: when
migrating, the cluster will be in a state where no roles are assigned.
All roles must be re-assigned and commited at once. This migration
should not pose an issue.
2021-11-16 16:05:53 +01:00
4067797d01
First port of Garage to Netapp 2021-10-22 15:55:18 +02:00
e4b9e4e24d
rename types to CamelCase 2021-05-03 22:15:09 +02:00
f05bb111c2
fix clippy warnings on util and rpc 2021-05-03 22:11:41 +02:00
74373aebcf
make most requested changes 2021-04-27 16:47:08 +02:00
f871689571
run cargo fmt on util and make missing doc warning 2021-04-27 16:37:10 +02:00
8e0524ae15
document rpc crate 2021-04-27 16:37:10 +02:00
40763fd749 Cargo fmt 2021-02-23 18:46:25 +01:00
80892df8cc Some refactoring 2021-02-21 13:11:10 +01:00
8956db2a81 Make less things public 2020-12-12 17:58:19 +01:00
fbe8fe81f2 Add automatic peer discovery from Consul 2020-06-30 18:33:14 +02:00
d8f5e643bc Split code for modular compilation 2020-04-24 10:10:01 +00:00
Renamed from src/rpc/mod.rs (Browse further)