Linux上安装Redis与Redis集群(手把手教程)

目录

单机版Redis

集群版Redis


首先下载好redis配置
Redis配置下载

单机版Redis

拉取镜像(拉取的版本是6.2.6)

docker pull redis:6.2.6

基础准备

# 打开目录
cd /usr/local/
# 在其目录下创建 docker/redis
mkdir -p docker/redis
# 进入 docker/redis目录
cd docker/redis/
# 创建 redis的config和redis的data
mkdir config
mkdir data
# 上传配置文件到 config目录下面
cd config/
# 使用rz上传文件
rz
ll查看后
会有以下内容
total 92
-rw-r--r-- 1 root root 93724 Oct  4  2021 redis.conf
# 修改配置文件
vim redis.conf
向下寻找修改
dir ./                ->   dir /data
bind 127.0.0.1 -::1   ->   bind 0.0.0.0

脚本编写

# 退出目录
cd ..
vim startRedis.sh
# 脚本内容
  docker run  --privileged=true -p 6379:6379 --name redis --restart=always \
 -v /usr/local/docker/redis/config/redis.conf:/etc/redis/redis.conf \
 -v /usr/local/docker/redis/data:/data \
 -d redis:6.2.6 redis-server /etc/redis/redis.conf
# 脚本设置可执行权限
chmod -R 777 startRedis.sh

启动redis

# 运行脚本
./startRedis.sh 
# 查看docker当中运行的redis
docker ps

恭喜你!大功告成!

集群版Redis

首先让我们了解一下集群的特性

高性能

一些国家重要的计算密集型应用(如天气预报,核试验模拟等),需要计算机有很强的运算处理能力

高性价比

通常一套系统集群架构,只需要几台或数十台服务器主机即可,与动则上百万的专用超级计算机相比具有更高的性价比

可扩展性

集群的性能不限于单一的服务实体,新的服务实体可以动态的加入到集群,从而增强集群的性能

高可用性

当一台节点服务器发生故障的时候,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。整个系统的服务可以是7*24小时可用的,消除单点故障对于增强数据可用性、可达性和可靠性是非常重要的

负载均衡

负载均衡能把任务比较均匀的分布到集群环境下的计算和网络资源,以便提高数据吞吐量

错误恢复

如果集群中的某一台服务器由于故障或者维护需要而无法使用,资源和应用程序将转移到可用的集群节点上

透明性

多个独立计算机组成的松耦合集群系统构成一个虚拟服务器。用户或客户端程序访问集群系统时,就像访问一台高性能,高可用的服务器一样,集群中一部分服务器的上线,下线不会中断整个系统服务,这对用户也是透明的

可管理性

整个系统可能在物理上很大,但是集群系统易管理,就像管理一个单一映像系统一样。在理想状况下,软硬件模块的插入能做到即插即用

可编程性

在集群系统上,容易开发及修改各类应用程序

接下来让我们在Linux中安装Redis集群主从模式
本集群基于redis6.2.6进行安装

集群规划

节点准备

# 进入安装目录
cd /usr/local/docker
# 创建集群文件夹
mkdir redis-cluster
# 再次进入
cd /usr/local/docker/redis-cluster/
# 创建第一个redis文件夹
mkdir redis-6380
# 查看是否创建成功
ll

效果

total 24drwxr-xr-x 2 root root 4096 May  2 13:16 redis-6380

继续操作

# 打开 redis-6380 节点
cd redis-6380/
# 创建文件夹 data config
mkdir data config 
# 打开config文件夹
cd config/
# 上传文件redis.conf
rz
# 查看
ll

效果

-rw-r--r-- 1 root root 93724 Oct  4  2021 redis.conf

修改配置文件

# 进入修改文件
vim redis.conf
# 需要修改的源码
# 1、
port 6379              -> port 6380
# 2、
./                 -> dir /data
# 3、
bind 127.0.0.1 -::1    -> bind 0.0.0.0
# 4、注意 # cluster-enabled 这个配置项在redis当中是默认注释掉的,需要把这个配置打开
# cluster-enabled yes    -> cluster-enabled yes

进入到 redis-cluster 目录

cd /usr/local/docker/redis-cluster/
# 复制 redis-6380 到 其他节点 81,82,90,91,92
# 1、
cp -a redis-6380/ redis-6381
# 2、
cp -a redis-6380/ redis-6382
# 3、
cp -a redis-6380/ redis-6390
# 4、
cp -a redis-6380/ redis-6391
# 5、
cp -a redis-6380/ redis-6392
# 查看
ll

效果

total 24
drwxr-xr-x 4 root root 4096 May  2 13:39 redis-6380
drwxr-xr-x 4 root root 4096 May  2 13:39 redis-6381
drwxr-xr-x 4 root root 4096 May  2 13:39 redis-6382
drwxr-xr-x 4 root root 4096 May  2 13:39 redis-6390
drwxr-xr-x 4 root root 4096 May  2 13:39 redis-6391
drwxr-xr-x 4 root root 4096 May  2 13:39 redis-6392

进入修改 每个配置文件

# 1、
vim redis-6381/config/redis.conf
# 修改配置文件
port 6380              -> port 6381
# 2、
vim redis-6382/config/redis.conf
# 修改配置文件
port 6380              -> port 6382
# 3、
vim redis-6390/config/redis.conf
# 修改配置文件
port 6380              -> port 6390
# 4、
vim redis-6391/config/redis.conf
# 修改配置文件
port 6380              -> port 6391
# 5、
vim redis-6392/config/redis.conf
# 修改配置文件
port 6380              -> port 6392

编写启动脚本 (在 /usr/local/docker/redis-cluster/ 目录下创建)

vim startRedisCluster.sh

脚本内容 (一个个粘贴进去 注释1到6 在脚本内替换成空行)

# 1、
docker run \
 --privileged=true -p 6380:6380 -p 16380:16380 --name redis-6380 --restart=always \
-v /usr/local/docker/redis-cluster/redis-6380/config/redis.conf:/etc/redis/redis.conf \
-v /usr/local/docker/redis-cluster/redis-6380/data:/data \
-d redis:6.2.6 redis-server /etc/redis/redis.conf
# 2、
docker run \
 --privileged=true -p 6381:6381 -p 16381:16381 --name redis-6381 --restart=always \
-v /usr/local/docker/redis-cluster/redis-6381/config/redis.conf:/etc/redis/redis.conf \
-v /usr/local/docker/redis-cluster/redis-6381/data:/data \
-d redis:6.2.6 redis-server /etc/redis/redis.conf
# 3、
docker run \
 --privileged=true -p 6382:6382 -p 16382:16382 --name redis-6382 --restart=always \
-v /usr/local/docker/redis-cluster/redis-6382/config/redis.conf:/etc/redis/redis.conf \
-v /usr/local/docker/redis-cluster/redis-6382/data:/data \
-d redis:6.2.6 redis-server /etc/redis/redis.conf
# 4、
docker run \
 --privileged=true -p 6390:6390 -p 16390:16390 --name redis-6390 --restart=always \
-v /usr/local/docker/redis-cluster/redis-6390/config/redis.conf:/etc/redis/redis.conf \
-v /usr/local/docker/redis-cluster/redis-6390/data:/data \
-d redis:6.2.6 redis-server /etc/redis/redis.conf
# 5、
docker run \
 --privileged=true -p 6391:6391 -p 16391:16391 --name redis-6391 --restart=always \
-v /usr/local/docker/redis-cluster/redis-6391/config/redis.conf:/etc/redis/redis.conf \
-v /usr/local/docker/redis-cluster/redis-6391/data:/data \
-d redis:6.2.6 redis-server /etc/redis/redis.conf
# 6、
docker run \
 --privileged=true -p 6392:6392 -p 16392:16392 --name redis-6392 --restart=always \
-v /usr/local/docker/redis-cluster/redis-6392/config/redis.conf:/etc/redis/redis.conf \
-v /usr/local/docker/redis-cluster/redis-6392/data:/data \
-d redis:6.2.6 redis-server /etc/redis/redis.conf

编写卸载脚本 (在 /usr/local/docker/redis-cluster/ 目录下创建)

vim removeRedisCluster.sh

脚本内容

echo "删除docker当中redis集群的容器"
docker rm -f $(docker ps -f name=redis-63* -aq)
echo "删除之前的节点数据"
rm -rf /usr/local/docker/redis-cluster/redis-6380/data/
rm -rf /usr/local/docker/redis-cluster/redis-6381/data/
rm -rf /usr/local/docker/redis-cluster/redis-6382/data/
rm -rf /usr/local/docker/redis-cluster/redis-6390/data/
rm -rf /usr/local/docker/redis-cluster/redis-6391/data/
rm -rf /usr/local/docker/redis-cluster/redis-6392/data/

权限赋予

chmod -R 777 startRedisCluster.sh
chmod -R 777 removeRedisCluster.sh

脚本执行

./startRedisCluster.sh

集群配置

进入容器redis-6380并为6台机器构建集群关系构建集群前先获取本机IP地址

安装环境

yum -y install zlib ruby rubygems

进入容器

docker exec -it redis-6380 /bin/bash

构建集群(把ip换成自己本机的ip地址,执行命令时中间需要自己手动输入一下yes)

redis-cli --cluster create ip:6380 ip:6381 ip:6382 ip:6390 ip:6391 ip:6392 --cluster-replicas 1

 

验证集群

查看集群状态

redis-cli -c -p 6380
cluster info

主从关系

cluster nodes


版权声明:本文为qq_60676718原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。