中间件容器化系列——Redis实践
作者:孙超|编辑:徐广欣
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。很多的应用都会使用 Redis 作为缓存服务。
-
数据存储目录,默认在 /data; -
配置目录,默认在 /etc/redis; -
启动端口,默认是6379; -
数据持久化方式,默认是RDB(指定的时间间隔内保存数据快照)。如果要使用AOF(先把命令追加到操作日志的尾部,保存所有的历史操作)的方式,需要指定启动参数 redis-server --appendonly yes理解了这些信息后,开始我们的部署,这里介绍两个场景(单实例Redis 和 Redis Cluster)的部署过程。
1
单实例 Redis
-
创建Redis服务,服务类型选择 statefulSet,填写服务名称,选择镜像和版本;
-
设置Redis的容器数量、运行时的CPU、内存和对外提供服务的映射端口;
-
(可选)持久化数据,只将Redis 作为一个缓存服务,不存储数据的话,该步骤不用操作,上一步做完后直接确认就可以了; -
持久化数据:将Redis的数据目录 /data 使用持久化卷进行存储,这样容器重启缓存数据也不会丢失; -
AOF的持久化方式:设置启动命令为 redis-server --appendonly yes;
点击确认,一个完整的单节点Redis服务就创建好了,验证,通过容器实例控制台,进入终端。
2
Redis 集群模式
## 配置信息
appendonly yes # 开启Redis的AOF持久化
cluster-enabled yes # 开启集群模式
cluster-config-file /var/lib/redis/nodes.conf # 保存节点配置文件的路径
cluster-node-timeout 20000 # 集群节点的超时时限
dir /var/lib/redis # AOF持久化文件存在的目录
port 6379 # 开启的端口安装过程
-
创建redis配置文件,配置文件必须叫 redis.conf;
-
创建服务,6个redis实例;
这里注意,容器数是6,容器启动策略可以是顺序启动,也可以是并行启动;
顺序启动:6个Redis实例依次启动,redis-0启动运行后,redis-1开始启动,直到redis-6启动完成;
并行启动:6个Redis实例没有顺序关系,同时开始启动。
-
持久化数据、配置信息、启动命令
-
持久化数据:添加本地存储,存储路径是 /var/lib/redis; -
配置信息:关联之前创建的 redis.conf 配置文件,挂载路径是 /etc/redis; -
启动命令:redis-server /etc/redis/redis.conf --protected-mode no。
-
每个容器实例在容器集群中都有一个DNS域名,格式; -
$(podname).$(service-name).$(namespace).svc.cluster.local; -
redis-trib不支持域名来创建集群,所以需要将容器实例的域名转换为 IP,可以通过 dig 命令来进行转化; -
了解 redis-trib 命令。
-
启动一个 redis-trib 的服务;
-
进入redis-trib服务的容器控制台,在控制台中输入下面的命令; -
redis-app-0 ... 5,格式:redis服务的名称-序号,即podname; -
redis-app-headless,格式:redis服务的名称-headless,即service-name; -
group1-dev-az1 是你的项目空间的名称,即namespace; -
--replicas 1 创建的集群中每个主节点分配一个从节点,达到3主3从;
redis-trib create --replicas 1 \
`dig +short redis-app-0.redis-app-headless.group1-dev-az1.svc.cluster.local`:6379 \
`dig +short redis-app-1.redis-app-headless.group1-dev-az1.svc.cluster.local`:6379 \
`dig +short redis-app-2.redis-app-headless.group1-dev-az1.svc.cluster.local`:6379 \
`dig +short redis-app-3.redis-app-headless.group1-dev-az1.svc.cluster.local`:6379 \
`dig +short redis-app-4.redis-app-headless.group1-dev-az1.svc.cluster.local`:6379 \
`dig +short redis-app-5.redis-app-headless.group1-dev-az1.svc.cluster.local`:6379
-
验证集群,先进入redis-app-0,设置一个key,set name redis,再到redis-app-4中,获取这个key,get name,如果在redis-app-4中能够得到 name的值 redis,就说明redis 集群搭建成功。
redis-app-0 中设置key name;
redis-app-4 中获取key name。
扫描二维码
获取更多精彩
金科优源汇