1. 系统环境准备
1.1 推荐配置
系统 | CPU | 内存 | 硬盘 | redis版本 |
---|---|---|---|---|
CentOs 7.0+ | 4C+ | 8G+ | 200GB+ | 5.0+ |
1.2 防火墙配置
为了便于安装,建议在安装前关闭防火墙。使用过程中,为了系统安全可以选择启用防火墙,但必须启用Redis使用到的相关端口。
1.2.1 关闭防火墙
临时关闭防火墙(立即生效)
systemctl stop firewalld
禁止防火墙开机启动(重启后生效)
systemctl disable firewalld
查看防火墙状态:
systemctl status firewalld
1.2.2 开启防火墙
1、Redis三主三从(端口可自定义):
修改主节点监听端口7000,从节点监听端口7001
如果开放防火墙,则需要开放redis监听端口:
firewall-cmd --permanent --add-port=7000/tcp firewall-cmd --permanent --add-port=7001/tcp
集群实例相互通信的内部总线端口(默认比redis监听端口大于10000):
firewall-cmd --permanent --add-port=17000/tcp firewall-cmd --permanent --add-port=17001/tcp
2、配置完成,重新加载firewalld使配置生效:
firewall-cmd --reload
查看防火墙开放的端口:
firewall-cmd --list-all
1.2.3 关闭Selinux防火墙
临时关闭selinux防火墙:
setenforce 0
永久关闭selinux防火墙:
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
2. Redis三主三从--Redis-Cluster
Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。
一组Redis Cluster是由多个Redis实例组成,官方推荐使用6实例,其中3个为主节点,3个为从节点。一旦有主节点发生故障的时候,Redis Cluster可以选举出对应的从节点成为新的主节点,继续对外服务,从而保证服务的高可用性。
当集群中的某个主节点和其对应的从节点同时宕机,集群无法提供服务
当存活的主节点数小于集群总节点数(即:创建集群时的节点总数的一半时,集群无法提供服务。
系统 | IP | 对外端口 | 集群内部端口 | Redis版本 | 角色 |
---|---|---|---|---|---|
Centos 7.6 | 10.10.41.111 | 7000 | 17000 | 5.0.8 | redis-master |
Centos 7.6 | 10.10.41.111 | 7001 | 17001 | 5.0.8 | redis-slave |
Centos 7.6 | 10.10.41.112 | 7000 | 17000 | 5.0.8 | redis-master |
Centos 7.6 | 10.10.41.112 | 7001 | 17001 | 5.0.8 | redis-slave |
Centos 7.6 | 10.10.41.113 | 7000 | 17000 | 5.0.8 | redis-master |
Centos 7.6 | 10.10.41.113 | 7001 | 17001 | 5.0.8 | redis-slave |
2.1 安装Redis
1、获取redis安装包,并上传到服务器
2、解压Redis安装包
tar -zxvf redis-5.0.8.tar.gz #本文档Redis安装在/data目录
3、创建Redis相关工作目录(目录可自定义)
mkdir /data/redis-cluster/{data/{redis_7000,redis_7001},conf,log} -p mkdir /var/run/redis-cluster
4、复制redis配置文件
cd redis-5.0.8 cp redis.conf /data/redis-cluster/conf/redis_7000.conf cp redis.conf /data/redis-cluster/conf/redis_7001.conf
2.1.1 修改Redis配置文件
修改redis-master配置文件
vi /data/redis-cluster/conf/redis_7000.conf
port 7000 #修改redis监听端口(可以自定义)
bind 0.0.0.0 #表示redis允许所有地址连接。默认127.0.0.1,仅允许本地连接。
daemonize yes #允许redis后台运行
pidfile /var/run/redis_7000.pid #pid存放目录
logfile "/data/redis-cluster/log/redis_7000.log" #设置日志存放路径
dir /data/redis-cluster/data/redis_7000 #工作目录
cluster-enabled yes #是否开启集群
cluster-config-file /data/redis-cluster/conf/nodes_7000.conf
#集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息
#这个文件并不需要手动配置,这个配置文件有Redis生成并更新,
cluster-node-timeout 15000
#节点互连超时的阀值。集群节点超时毫秒数,默认15秒
appendonly yes
#开启redis持久化AOF
requirepass manager #设置redis密码
masterauth manager #主从同步master的密码(如果没有设置redis密码,则无需配置)
maxmemory 4gb #设置Redis实例的最大内存配置,根据服务器实际内存设置
maxmemory-policy allkeys-lfu
#Redis达到最大内存时的清理key策略
#allkeys-lfu 表示最近最不经常使用算法,从所有的键中选择某段时间之内使用频次最少的key清除
修改redis-slave配置文件
vi /data/redis-cluster/conf/redis_7001.conf
具体如下:
port 7001 bind 0.0.0.0 daemonize yes pidfile /var/run/redis_7001.pid logfile "/data/redis-cluster/log/redis_7001.log" dir /data/redis-cluster/data/redis_7001 cluster-enabled yes cluster-config-file /data/redis-cluster/conf/nodes_7001.conf cluster-node-timeout 15000 appendonly yes requirepass manager masterauth manager
2.1.2 分发到集群内其他服务器
scp -r redis-5.0.8 redis-cluster root@10.10.41.112:/data scp -r redis-5.0.8 redis-cluster root@10.10.41.113:/data
设置软链接,方便启动redis服务
ln -s /data/redis-5.0.8/src/redis-server /usr/bin/redis-server ln -s /data/redis-5.0.8/src/redis-cli /usr/bin/redis-cli
2.1.3 启动Redis
1、启动redis
集群内每台服务器分别启动两个redis
redis-server /data/redis-cluster/conf/redis_7000.conf redis-server /data/redis-cluster/conf/redis_7001.conf
验证是否启动成功
ps -ef | grep redis
查看版本
redis-cli --version redis-server --version
2、设置开机启动redis
Redis安装包中包含了redis启动脚本(默认路径$redis/utils/redis_init_script,$redis是redis的安装路径)。
需要根据自身安装部署实际情况进行修改(如:端口、安装路径、密码等等)
cp /data/redis-5.0.8/utils/redis_init_script /etc/init.d/redis_7000 cp /data/redis-5.0.8/utils/redis_init_script /etc/init.d/redis_7001 vi /etc/init.d/redis_7000 vi /etc/init.d/redis_7001
具体请参考附件:
复制启动脚本至其他集群服务器
scp /etc/init.d/redis_700* root@10.10.41.112:/etc/init.d scp /etc/init.d/redis_700* root@10.10.41.113:/etc/init.d
加入开机启动(集群内所有服务器均需操作)
chmod +x /etc/init.d/redis* chkconfig --add redis_7000 chkconfig --add redis_7001 chkconfig redis_7000 on chkconfig redis_7001 on chkconfig --list
/etc/init.d/redis_7000 start #启动redis 7000 /etc/init.d/redis_7000 stop #停止redis 7000 /etc/init.d/redis_7000 restart #重启redis 7000
2.2 创建集群Redis-Cluster
创建集群:--cluster-replicas 1指定从库数量1,创建顺序三主-三从。即主-主-主-从-从-从。
如果redis设置了密码,则创建集群时需要添加密码信息 -a 密码:
redis-cli -a manager --cluster create 10.10.41.111:7000 10.10.41.112:7000 10.10.41.113:7000 10.10.41.111:7001 10.10.41.112:7001 10.10.41.113:7001 --cluster-replicas 1
确认集群配置信息,确认无误则输入 yes 并按回车
出现以上信息,则表示集群配置成功。
2.3 验证集群Redis-Cluster
1、登录redis集群
redis-cli -a manager -h 10.10.41.111 -p 7000 -c
PS:-a Redis密码,-c表示集群模式 ,指定IP和端口
2、验证集群信息
10.10.41.111:7000> cluster info #查看集群信息
10.10.41.111:7000> cluster nodes #查看集群节点列表
查看集群内主从关系:
redis-cli -a manager -h 10.10.41.111 -p 7000 -c cluster slots | xargs -n8 | awk '{print $3":"$4"->"$6":"$7}' | sort -nk2 -t ':' | uniq
3、进行数据验证操作
插入数据:
10.10.41.111:7000> set mykey "Hello Redis"
10.10.41.113:7000> get mykey
登录其他节点查看数据:
#redis-cli -a manager -h 10.10.41.112 -p 7000 -c
10.10.41.112:7000> get mykey
2.4 Smartbi配置连接redis集群
1、登录访问smartbi config页面
找到“会话缓存”,输入redis地址和端口,状态服务器地址格式有如下:
情形 | 格式 | 示例 |
---|---|---|
未设置redis密码,默认存储在redis db0中 | Redis Maser1 IP地址:端口, Redis Maser2 IP地址:端口,Redis Maser3 IP地址:端口 | 10.10.41.111:7000,10.10.41.112:7000,10.10.41.113:7000 |
设置了redis密码,默认存储在redis db0中 | Redis密码@Redis Maser1 IP地址:端口, Redis Maser2 IP地址:端口,Redis Maser3 IP地址:端口 (多个服务器地址请使用“,”隔开) | manager@10.10.41.111:7000,10.10.41.112:7000,10.10.41.113:7000 |
点击测试连接,提示连接成功即可,保存并重启Smartbi
2.5 Smartbi验证Redis
1、登录访问Smartbi,编辑业务主题(或者编辑其他场景),先不要点击保存。
编辑过程中,重启Smartbi服务器,注意重启过程中浏览器不要刷新页面,Smartbi重启完成后,可以直接保存修改个业务主题,编辑的数据不会丢失。