前言
任务:搭建测试环境的redis服务。网上翻阅各类资料后,决定搭建一个3主3从的集群环境。后因代码使用redis集群需要更改,又重新部署单机redis。
redis介绍:数据完全保存在内存中,速度非常快,可使用磁盘进行持久化。
redis相关词汇:缓存穿透、缓存击穿和缓存雪崩。
部署步骤梳理
- 制作redis镜像(需要使用redis-trib.rb集群命令);
- redis配置文件和集群修复脚本准备
- StatefulSet配置文件准备(数据持久使用动态供给)
- 初始化redis集群
- 验证redis集群
- 部署单机redis
制作redis镜像
- redis官方下载二进制安装包Download | Redis;
- 编译安装后得到文件redis-trib.rb;
- docker启动一个redis服务:docker run --name redis --restart=always -d redis:4.0.11
- 将redis-trib.rb复制到镜像:docker cp redis-trib.rb redis:/usr/local/bin
- 进入容器后做以下操作(安装redis-trib.rb命令执行环境ruby):
- echo 'deb http://mirrors.aliyun.com/debian/ buster main contrib non-free' > /etc/apt/sources.list
- 执行:apt-get update(此处遇到报错(NO_PUBKEY 648ACFD622F3D138 NO_PUBKEY 0E98404D386FA1D9 NO_PUBKEY DCC9EFBF77E11517)
- apt-get install software-properties-common dirmngr -y --allow-unauthenticated
- apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 0E98404D386FA1D9 DCC9EFBF77E11517 (keys就是上面报错的NO_PUBKEY)
- 再次执行apt-get update
- 安装ruby并使用gem安装redis
- apt-get install -y ruby
- apt-get install -y rubygems
- apt-get clean all
- gem install redis
- apt-get install dnsutils -y
- 使用docker commit生成新镜像:docker commit -a "author" -m "redis-cluster-image" 365d2c234ab9 redis-cluster:1.0
redis配置文件和集群修复脚本准备
vim redis-configmap.yaml
kubectl apply -f redis-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-cluster
namespace: testing
data:
fix-ip.sh: |
#!/bin/sh
CLUSTER_CONFIG=
"/data/nodes.conf"
if
[ -f ${CLUSTER_CONFIG} ];
then
if
[ -z
"${POD_IP}"
];
then
echo
"Unable to determine Pod IP address!"
exit
1
fi
echo