单机版redis安装
1.进入/usr/local/ 目录下,创建 redis-cluster文件夹
cd /usr/local
mkdir redis-cluster
2.在/usr/local/redis-cluster目录下,创建6个文件夹
cd /usr/local/redis-cluster
mkdir 7001
mkdir 7002
...
mkdir 7006
3.拷贝单机版redis安装目录下的redis.conf文件到 /usr/local/redis-cluster/7001文件夹下
cp /usr/local/redis/redis.conf /usr/local/redis-cluster/7001
4.修改/usr/local/redis-cluster/7001/目录下的配置文件redis.conf
vim /usr/local/redis-cluster/7001/redis.conf
- 1) daemonize yes
- 2) port 7001(分别对每个机器的端口号进行设置)
- 3) bind 192.168.1.62(必须要绑定当前机器的ip,这里方便redis集群定位机器,不绑
定可能会出现循环查找集群节点机器的情况) - 4) dir /usr/local/redis-cluster/7001/data(指定数据文件存放位置,必须要指定不同的目
录位置,不然会丢失数据) - 5) cluster-enabled yes(启动集群模式)
- 6) cluster-config-file nodes-7001.conf(这里800x最好和port对应上)
- 7) cluster-node-timeout 3000
- 8) appendonly yes
- 9) pidfile /var/run/redis_7001.pid
- 10) protected-mode no (关闭保护模式 redis5)
- 11) requirepass roger (设置redis访问密码)
- 12) masterauth roger (设置集群节点间访问密码,跟上面一致)
5.把/usr/local/redis-cluster/7001/目录下的配置文件redis.conf拷贝到/usr/local/redis-cluster/7002/
- cd /usr/local/redis-cluster/7002/
- vim redis.conf
- 按键盘 Insert 键,进入编辑模式
- :%s/7001/7002/g
- 按键盘 ESC 键,退出编辑模式
- :wq (保存退出)
6.其他四个文件夹,仿照步骤5操作
7.由于集群需要使用ruby命令,所以需要安装ruby
- yum install ruby
- yum install rubygems
- gem install redis --version [对应的redis版本号] --安装ruby和redis的接口
8.分别启动6个实例,并检验是否启动成功
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7001/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7002/redis.conf
...
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7006/redis.conf
使用下面的命令检验是否启动成功
ps -ef | grep redis
9.进入单机redis安装目录下的src文件夹下,使用redis-trib.rb命令创建整个redis集群
- cd /usr/local/redis/src
- ./redis-trib.rb create --replicas 1 192.168.1.62:7001 192.168.1.62:7002 192.168.1.62:7003 192.168.1.62:7004 192.168.1.62:7005 192.168.1.62:7006
redis5以后采用redis-cli 直接创建集群,不再使用ruby去创建集群
./redis-cli -a roger --cluster create --cluster-replicas 1 192.168.1.61:8001 192.168.1.62:8002 192.168.1.63:8003 192.168.1.61:8004192.168.1.62:8005 192.168.1.63:8006
--cluster-replicas 1 代表的含义是 主:从 = 1:1 = 1
第一:要关闭保护模式
第二:要bind ip地址或者设置redis密码
10.查看集群
- 连接任意一个客户端即可:./redis-cli -c -h -p (-c表示集群模式,指定ip地址和端口
号)如:/usr/local/redis/bin/redis-cli -c -h 192.168.1.62 -p 700* - 进行验证: cluster info(查看集群信息)、cluster nodes(查看节点列表)
- 进行数据操作验证
- 关闭集群则需要逐个进行关闭,使用命令:/usr/local/redis/bin/redis-cli -c -h 192.168.1.62 -p 700* shutdown
遇到的问题:
1) /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)
解决办法:安装ruby和redis接口,使用命令 gem install redis
2) redis requires Ruby version >= 2.2.2.
解决办法1:使用yum安装高版本的ruby
~]# yum -y install centos-release-scl-rh //会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源
~]# yum install rh-ruby23 -y //直接yum安装即可
~]# scl enable rh-ruby23 bash //必要一步
~]# ruby -v //查看安装版本
解决办法2:Redis之集群redis-trib.rb环境的搭建-yellowcong
3) 使用vim命令修改文件,不正常退出,会出现swap文件已存在
解决办法:1-进入修改文件所在的目录下
2-使用命令显示所有的文件,包含隐藏文件 ls -a
3-执行命令 vim -r [文件名] 然后正常退出
4-使用命令删除 swap文件 rm -rf [swap文件名]
出现 ...swap文件需要删除的时候, 进入修改文件所在的目录,使用命令 ls -a 查看所有的文件包括隐含文件,然后使用命令 rm -rf [swap文件名]
4) 如果集群中redis.conf配置文件中的ip地址发生修改,再次启动集群的时候就会报错
[ERR] Node 192.168.1.62:8002 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
解决办法:1-首先关闭集群中每个节点
2-删除每个节点下的 appendonly.aof dump.rdb nodes-7001.conf
cd /usr/local/redis-cluster/8001/data
rm -f ./*
3-重新启动每个redis节点
4-启动集群