1 .. ============LICENSE_START=======================================================
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
10 .. http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
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.
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
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 Reference: https://github.com/rook/rook.github.io/blob/master/docs/rook/v1.4/ceph-filesystem.md
40 #. Three worker nodes in the kubernet cluster
44 Once environment is set-up, a redis-cluster can be set up using the helm-chart (also provided with
45 this commit). Once cluster is running, any master/slave of the redis instance pods can be deleted which
46 will be compensated automatically by new instances
48 At this stage the perl utility program (included with helm-chart) can be run. The helm chart installation
49 output generates the requirement commands to invoke.
51 This utility program identifies the missing anti-affinity(as per above ticket) of redis instances required
52 in a redis-cluster. When executed it communicates to redis nodes to switch roles (e.g. master/slave)
53 such that the end-state meets the desired anti-affinity.