本文主要记录 Redis 从完全纯净的系统,单机安装,到集群部署的过程
说句题外话,当我自己参考网络上的帖子,进行安装部署 Redis,是比较蛋疼的,因为很多帖子都写的不全,或者只解决某个报错,没有整个流程走完的

环境说明(点击即可下载)

安装完成 CentOS 7 后,直接来一套组合拳:

#  更新 yum
yum clean all
yum makecache

#  更新系统
yum update -y

# 查看一下 centos7 的版本
cat /etc/redhat-release
# 我这里是 CentOS Linux release 7.8.2003 (Core)

#  永久关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service 

#  关闭系统保护
vi /etc/selinux/config
SELINUX=disabled


#  依次安装 wget(下载文件用)、lrzsz(上传文件用)、gcc(重要的组件)
yum install wget -y
yum install lrzsz -y
yum install gcc -y

再安装依赖 和 修改系统配置

# 下载 Tcl 8.6.10
wget https://jaist.dl.sourceforge.net/project/tcl/Tcl/8.6.10/tcl8.6.10-src.tar.gz

tar zxvf tcl8.6.10-src.tar.gz -C /usr/local/
cd /usr/local/tcl8.6.10/unix/
./configure && make && make install

# 这里是解决 Redis 启动的三个警告
# 修改系统配置, 追加两行设置	
vi /etc/sysctl.conf 
net.core.somaxconn = 1024
vm.overcommit_memory = 1
#  生效
sysctl -p 


# 修改配置,追加一行设置	并生效
vi /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
#  生效
source /etc/rc.local

安装单机 Redis

wget https://download.redis.io/releases/redis-5.0.9.tar.gz
tar -zxvf redis-5.0.9.tar.gz
cd redis-5.0.9
make
# 指定安装目录,这里我们指定为 /usr/local/redis-cluster, 也方便后续的集群搭建
make install PREFIX=/usr/local/redis-cluster

# 安装检测
make test

# 如果检测失败 执行清理,然后重新上述安装吧
make distclean

启动单机 Redis

/usr/local/redis-cluster/bin/redis-server redis.conf 

单机安装成功.png

Bingo 符合预期!

安装集群 Redis Cluster

我们使用 三主三从策略,使用三台服务器,每台设有一主一从,主用6379端口,从用6380端口
集群和单机部署,差别并不大,主要是配置集群策略,对 redis.conf 的设置,需要执行 redis-cli --cluster create xxx 命令,完成集群搭建。

为了便于维护,我们提前进行文件名称,和存放位置的约定:

  • redis 集群位置: /usr/local/redis-cluster
  • redis make install 后启动文件路径:/usr/local/redis-cluster/bin
  • redis 主从配置文件路径:/usr/local/redis-cluster/redis0X/redis0X_6379.conf

比如在第一台服务器里面,主master节点配置文件位置:
/usr/local/redis-cluster/redis01/redis01_6379.conf
slaver 节点配置文件位置:
/usr/local/redis-cluster/redis02/redis02_6380.conf

第二台的,主master节点配置文件位置:
/usr/local/redis-cluster/redis03/redis03_6379.conf
slaver 节点配置文件位置:
/usr/local/redis-cluster/redis04/redis04_6380.conf

第三台的,主master节点配置文件位置:
/usr/local/redis-cluster/redis05/redis05_6379.conf
slaver 节点配置文件位置:
/usr/local/redis-cluster/redis06/redis06_6380.conf

ps: 我们需要将 redis tar 解压后生成的 redis.conf 拷贝 相关目录哦

redis.conf 常用配置说明

  • bind:允许访问该redis的主机

  • protected-mode:保护模式,默认开启。若设置外部网络连接redis服务,设置方式如下:

关闭protected-mode模式,此时外部网络可以直接访问
开启protected-mode保护模式,需配置bind ip或者设置访问密码,或者bind ip和密码都设置

  • requirepass:设置密码

  • databases:Redis默认有16个数据库,寻址角标从0开始。默认连接db0。客户端使用select命令,切换数据库

  • port :指定redis的服务端口,默认6379.

  • daemonize:Redis默认关闭后台进程模式,改成yes,redis服务在后台启动。

  • loglevel :日志等级

  • logfile:Redis日志输出目录,默认不输出日志到文件。

  • dbfilename:指定数据持久化的文件名

  • dir :指定数据持久化的文件存放目录,也是集群node.con文件存放目录

  • cluster-enabled:是否启用集群

  • cluster-config-file:集群文件

我们进行修改的内容 以 第一台主机 master 6379端口为例

# 加#号表示注释,放开IP限制
# bind 

protected-mode no
port 6379
daemonize yes
# 节点超时时间
cluster-node-timeout 5000
# 开启集群
cluster-enabled yes
# Append only file,采用追加的方式保存,默认文件appendonly.aof
appendonly yes

# node.conf文件保存路径
dir /usr/local/redis-cluster/redis01

# 该文件中包含集群信息 重新指定
cluster-config-file /usr/local/redis-cluster/redis01/redis01_6379_nodes.conf

pidfile /usr/local/redis-cluster/redis01/redis01_6379_.pid
# 日志
logfile /usr/local/redis-cluster/redis01/redis01_6379_.log

其他5个redis 节点,也需要进行配置,主要修改指向的目录名称即可
三台服务器的 tree 形文件结构如下:

目录结构.png

启动 Redis,就我上述配置,直接执行如下:


# 第一台服务器内
/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/redis01/redis01_6379.conf 
 
/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/redis02/redis02_6380.conf 

# 第二台服务器内
/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/redis03/redis03_6379.conf 

/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/redis04/redis04_6380.conf 

# 第三台服务器内
/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/redis05/redis05_6379.conf 

/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/redis06/redis06_6380.conf 

使用 ps -ef | grep redis , 可以看到 3 台服务器内, redis 进程的情况:
3台服务器redis 启动成功.png

完美!

组成集群

/usr/local/redis-cluster/bin/redis-cli --cluster create 192.168.50.21:6379 192.168.50.21:6380 192.168.50.140:6379 192.168.50.140:6380 192.168.50.60:6379 192.168.50.60:6380 --cluster-replicas 1 

# --cluster-replicas 1  的意思就是,一主一从

# 按提示 输入 yes, 完成搭建

完成集群搭建.png

查看集群状态


#命令行工具redis-cli 查看是否启动成功

/usr/local/redis-cluster/bin/redis-cli -c -h 192.168.50.21 -p 6379 cluster nodes

/usr/local/redis-cluster/bin/redis-cli --cluster check 192.168.50.21:6379


验证集群:

/usr/local/redis-cluster/bin/redis-cli -c -h 192.168.50.21 -p 6379

cluster info(查看集群信息)、cluster nodes(查看节点列表)


redis-cli 参数说明:

  • -c:表示以集群方式连接惹redis
  • -h:指定IP地址
  • -p:指定端口
  • -a:访问服务端密码
  • cluster nodes:查询集群节点信息
  • cluster info:查询集群状态信息

关闭集群

需要逐个进行关闭,也可以写 批处理脚本

/usr/local/redis-cluster/bin/redis-cli -c -h 192.168.50.21 -p 6379 shutdown

重启集群的时候,是需要全部逐个启动,集群状态才是正常哦