Merge "Adding CustomResourceDefinition Job and StatefulSet."
[ric-plt/ric-dep.git] / docs / installation-rediscluster.rst
1 ..  ============LICENSE_START=======================================================
2 ..
3 ..  ================================================================================
4 ..  Copyright (C) 2020 Hcl Technologies Limited.
5 ..  ================================================================================
6 ..  Licensed under the Apache License, Version 2.0 (the "License");
7 ..  you may not use this file except in compliance with the License.
8 ..  You may obtain a copy of the License at
9 ..
10 ..       http://www.apache.org/licenses/LICENSE-2.0
11 ..
12 ..  Unless required by applicable law or agreed to in writing, software
13 ..  distributed under the License is distributed on an "AS IS" BASIS,
14 ..  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 ..  See the License for the specific language governing permissions and
16 ..  limitations under the License.
17 ..  ============LICENSE_END=========================================================
18
19 Important
20 ^^^^^^^^^
21 The redis-cluster currently is NOT part of RIC platform & hence is completely optional.
22 This piece of document has been created as part of delivery item for below jira ticket 
23 https://jira.o-ran-sc.org/browse/RIC-109 
24 This ticket is about assessing the feasibility of redis-cluster (with data sharding) 
25 supporting desired pod anti-affinity for high availability as per the ticket.
26
27 Overview
28 ^^^^^^^^
29 This document describes the environment/conditions used to test the feasibility of Redis 
30 cluster set-up as detailed in the above ticket. Redis Cluster is a distributed implementation 
31 of Redis with high performance goals. More details at https://redis.io/topics/cluster-spec
32
33 Environment Set-Up
34 ^^^^^^^^^^^^^^^^^^
35 The set up was tested with kubernetes v1.19 cluster with 
36    #. Pod topology spread constraint enabled
37       Reference: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints
38    #. CEPH as the Cluster Storage Solution.
39    #. Three worker nodes in the kubernet cluster
40
41 Execution
42 ^^^^^^^^^
43 Once environment is set-up,  a redis-cluster can be set up using the helm-chart (also provided with 
44 this commit). Once cluster is running, any master/slave of the redis instance pods can be deleted which
45 will be compensated automatically by new instances
46
47 At this stage the perl utility program (included with helm-chart) can be run. The helm chart installation
48 output generates the requirement commands to invoke.
49
50 This utility program identifies the missing anti-affinity(as per above ticket) of redis instances required
51 in a redis-cluster. When executed it communicates to redis nodes to switch roles (e.g. master/slave)
52 such that the end-state meets the desired anti-affinity. 
53
54