czichy | 99006e0 | 2022-05-05 11:29:24 +0300 | [diff] [blame] | 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========================================================= |
Alok Bhatt | 1b13115 | 2020-10-21 14:37:35 +0000 | [diff] [blame] | 18 | |
| 19 | Important |
czichy | 99006e0 | 2022-05-05 11:29:24 +0300 | [diff] [blame] | 20 | ^^^^^^^^^ |
Alok Bhatt | 1b13115 | 2020-10-21 14:37:35 +0000 | [diff] [blame] | 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 |
czichy | 99006e0 | 2022-05-05 11:29:24 +0300 | [diff] [blame] | 28 | ^^^^^^^^ |
Alok Bhatt | 1b13115 | 2020-10-21 14:37:35 +0000 | [diff] [blame] | 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 |
czichy | 99006e0 | 2022-05-05 11:29:24 +0300 | [diff] [blame] | 34 | ^^^^^^^^^^^^^^^^^^ |
Alok Bhatt | 1b13115 | 2020-10-21 14:37:35 +0000 | [diff] [blame] | 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. |
Alok Bhatt | 1b13115 | 2020-10-21 14:37:35 +0000 | [diff] [blame] | 39 | #. Three worker nodes in the kubernet cluster |
| 40 | |
| 41 | Execution |
czichy | 99006e0 | 2022-05-05 11:29:24 +0300 | [diff] [blame] | 42 | ^^^^^^^^^ |
Alok Bhatt | 1b13115 | 2020-10-21 14:37:35 +0000 | [diff] [blame] | 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 | |