Redis源码集群搭建
官方亲测可用的适配openIM的redis集群版本为6.2.5,高于7.0版本(go语言使用的官方库还未适配7.0以上版本),其他版本暂未测试),默认创建三主三从,搭建环境为三台服务器,处于同一个网段,如果不处于同一个网段,可将reids配置文件中的bind地址修改为默认IP地址或者外网IP地址(需要保证端口对外)。
1.下载redis安装包
wget http://download.redis.io/releases/redis-6.2.5.tar.gz
2.解压redis安装包
tar xzvf redis-6.2.5.tar.gz
3.使用make编译redis
cd redis-6.2.5
make
4.创建redis实例文件夹
默认示例一台机器的一主一从,分别监听在5000和5001端口下,此处使用的示例是/data/目录下,如果没有 请mkdir /data,cd /data,执行以下步骤:
cd ..(和redis-6.2.5在同一级目录)
mkdir redis-5000 redis-5001
5.设置redis开机自启动
如果没有rc.local文件,请参考解决方法
vim/etc/rc.local
#添加如下
/usr/local/bin/redis-server /data/redis-5000/redis.conf
/usr/local/bin/redis-server /data/redis-5001/redis.conf
6.将redis安装到两个实例中以及全局环境中
实际上就是将编译好的redis二进制文件放置到不同实例文件夹中,放置usr/local/bin目录下可全局访问。
cd redis-6.2.5
make PREFIX=/data/redis-5000 install
make PREFIX=/data/redis-5001 install
make PREFIX=/usr/local/bin install
7.拷贝redis的配置文件到实例中
cp redis.conf ../redis-5000/
8.修改配置文件内容
进入redis-5000文件夹中修改redis.conf,修改的参数如下:
#此处如果三台机器处于局域网同一个网段,可配置局域网地址,否则使用默认地址即可
bind 0.0.0.0
#redis保护模式,开启必须设置redis密码
protected-mode yes
#开启redis以守护进程后台运行
daemonize yes
#redis密码
requirepass "123456"
#redis监听端口
port 5000
#redis数据文件存储目录,也可配置绝对路径
dir ../
#redis进程pid文件,路径是相对于dir,也可配置绝对路径
pidfile ./redis_5000.pid
#redis日志文件,路径是相对于dir,也可配置绝对路径
logfile "./redis_5000.log"
#开启redis集群模式
cluster-enabled yes
#指定redis集群节点信息文件
cluster-config-file nodes-5000.conf
#redis节点之间超时时间
cluster-node-timeout 15000
#开启redis的aof存储
appendonly yes
#设置redis的最大cache内存,根据自己机器资源情况确定
maxmemory 10GB
#设置redis淘汰策略,当内存超过限制的maxmemory,在设置了过期时间的key中,淘汰过期时间剩余最短的
maxmemory-policy volatile-ttl
#从节点同步主节点需要的redis密码,保持和requirepass一致
masterauth 123456
9.拷贝redis.conf到其他实例中
cp /redis-5000/redis.conf /redis-5001/
#vim redis-5001/redis.conf,进入输入模式下输入:
:%s/5000/5001/g
#替换配置文件的信息为5001实例信息
10.启动redis实例
#分别进入各个实例的bin文件下,本示例中为/data/redis-5000/bin,/data/redis-5000/bin
./redis-server ../redis.conf
#ps查看结果
ps -axu|grep redis
root 21885 0.0 0.0 165064 10204 ? Ssl 14:08 0:00 ./redis-server 172.21.39.64:5000 [cluster]
root 21894 0.0 0.0 165064 10404 ? Ssl 14:08 0:00 ./redis-server 172.21.39.64:5001 [cluster]
11.重复前面操作到另外两台机器上
注:可以将上面的redis实例文件夹目录打包传递到另外两台服务器中,然后仿照以上方式启动
12.创建redis集群
#分别进入各个实例的bin文件下
#三台机器都启动了redis实例后(即启动了三主三从),使用以下命令创建redis集群指定主从,默认前三台为主,后三台为从,--cluster-replicas 1表示每个主节点拥有一个从节点,-a 为redis密码
./redis-cli --cluster create 172.31.10.251:5000 172.31.9.49:5000 172.31.11.71:5000 172.31.10.251:5001 172.31.9.49:5001 172.31.11.71:5001 --cluster-replicas 1 -a 123456
此命令结束后,正常情况下出现:输入yes确认节点分配,成功如下:
如果遇到问题,请查看集群搭建常见问题
13.集群信息查看
#使用该命令查看集群信息,ip和端口以及密码替换成自己设置的
./redis-cli --cluster info 172.31.9.49:5000 -a 123456
至此redis集群搭建完毕.
14.集群搭建常见问题
#出现wating。。。。。。或者
could not connect to Redis at 172.21.39.54:5000:
No route to host
#即防火墙端口未打开,需要开启内网安全组端口访问,
#防火墙开放端口命令,如下5000+10000=15000为集群总线端口也需要开启
firewall-cmd --add-port=5000/tcp --permanent
firewall-cmd --add-port=5001/tcp --permanent
firewall-cmd --add-port=15000/tcp --permanent
firewall-cmd --reload