一、Redis及Redis集群简介
1.Redis
redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。
2.Redis集群
Redis Cluster 即 Redis 集群,是 Redis 官方在 3.0 版本推出的一套分布式存储方案。完全去中心化,由多个节点组成,所有节点彼此互联。Redis 客户端可以直接连接任何一节点获取集群中的键值对,不需要中间代理,如果该节点不存在用户所指定的键值,其内部会自动把客户端重定向到键值所在的节点。
Redis 集群是一个网状结构,每个节点都通过 TCP 连接跟其他每个节点连接。在一个有 N 个节点的集群中,每个节点都有 N-1 个流出的 TCP 连接,和 N-1 个流入的连接,这些 TCP 连接会永久保持。
Redis Cluster 同其他分布式存储系统一样,主要具备以下两个功能:
数据分区:Redis 集群会将用户数据分散保存至各个节点中,突破单机 Redis 内存最大存储容量。集群引入了 哈希槽slot的概念,其搭建完成后会生成 16384 个哈希槽slot,同时会根据节点的数量大致均等的将 16384 个哈希槽映射到不同的节点上。当用户存储key-value时,集群会先对key进行 CRC16 校验然后对 16384 取模来决定key-value放置哪个槽,从而实现自动分割数据到不同的节点上。
数据冗余:Redis 集群支持主从复制和故障恢复。集群使用了主从复制模型,每个主节点master应至少有一个从节点slave。假设某个主节点故障,其所有子节点会广播一个数据包给集群里的其他主节点来请求选票,一旦某个从节点收到了大多数主节点的回应,那么它就赢得了选举,被推选为主节点,负责处理之前旧的主节点负责的哈希槽。
二、Redis部署
1、部署规划
服务器:3台服务器,每一台搭建主从
ip地址:192.168.179.10 92.168.179.11 92.168.179.12
端口策略:1台服务器设置1组:6379 6380
2、基础环境配置(这是演示在线安装的方式)
(1)yum源更新(3台服务器同步执行)
yum install wget
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
(2)服务器时间同步(3台服务器同步执行)
yum install ntpdate -y
ntpdate time.windows.com
3、在线安装redis依赖(3台服务器同步执行)
yum -y install cpp
yum -y install binutils
yum -y install glibc
yum -y install glibc-kernheaders
yum -y install glibc-common
yum -y install glibc-devel
yum -y install gcc
yum -y install make
4、升级系统弄内核。升级gcc(如果安装6版本的redis,gcc版本 定要5.3以上)(3台服务器同步执行)
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
5、上传redis安装包,上传redis安装包至/root目录下并解压tar zxf redis-6.0.13.tar.gz(3台服务器同步执行)
6、创建安装路径目录(3台服务器同步执行)
mkdir -p /usr/local/redis-6379
mkdir -p /usr/local/redis-6380
7、解压安装(3台服务器同步执行)
tar zxvf redis-6.0.13.tar.gz
make && make PREFIX=/usr/local/redis-6379 install
cp /root/redis-6.0.13/redis.conf /usr/local/redis-6379/
cp /root/redis-6.0.13/redis.conf /usr/local/redis-6380//
8、修改配置文件redis.conf(3台服务器同步执行)
bind 0.0.0.0 //监听的网卡地址 port 6379 //服务监听端口 daemonize yes //以独立进程打开 eluster-enabled yes //开启集群模式 elusterconfigfile nodes-6379.conf //集群配置文件指定为nodes-6379.conf,启动后自动生成 cluster-node-timeout 15000 //集群超时时间设置 appendonly no //关闭AOF 持久化 pidfile /var/run/redis_6379.pid 注释掉以下配置 #save 900 1 #save 300 10 #save 60 10000 #dbfilename dump.rdb requirepass Seeyon123456 //配置redis 密码,根据需要修改 masterauth Seeyon123456 //主节点密码,各个实例密码要求全部一致 |
9、启动各个节点(服务端服务)
nohup ./redis-server redis.conf >>/dev/null &
10、创建集群
cd /usr/local/redis-6379
./redis-cli --cluster create 192.168.179.10:6379 192.168.179.10:6380
192.168.179.11:6379 192.168.179.11:6380 192.168.179.12:6379 192.168.179.12 :6380 --cluster-replicas 1 -a Seeyon123456
--cluster-replicas1表示为集群中的每个主节点随机指定一个从节点
11、查看集群状态
./redis-cli --cluster check 192.168.100.137:6379 -a Seeyon123456