测试使用的为centos7的虚拟机环境,真实环境可能会有些许不同,自行参考
安装redis,我是安装在根目录
cd /
wget http://download.redis.io/releases/redis-3.2.1.tar.gz
tar -zxvf /redis-3.2.1.tar.gz
进入redis目录,执行make编译
cd redis-3.2.1/
make
报错,没有安装gcc
yum -y install gcc gcc-c++ autoconf make
分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redis。
而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。
但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数,运行如下命令:
make MALLOC=libc
运行make进行编译
编译成功之后,进入src目录,进行安装
安装完成之后,创建redis的节点
我的两个测试服务器的IP为:192.168.1.158 192.168.1.229
cd /usr/local/
mkdir redis_cluster
cd redis_cluster/
mkdir 7000 7001 7002
//将redis的配置文件复制到3个节点文件夹下
cp /redis-3.2.1/redis.conf /usr/local/redis_cluster/7000/
cp /redis-3.2.1/redis.conf /usr/local/redis_cluster/7001/
cp /redis-3.2.1/redis.conf /usr/local/redis_cluster/7002/
分别对配置文件进行修改
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002
port 7000 //端口7000,7001,7002
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 5000 //请求超时 设置5秒够了
appendonly yes
在192.168.1.229创建3个节点:对应的端口改为7003,7004,7005.配置对应的改一下就可以了。
接下来需要把节点串联起来变成一个集群,需要使用到ruby,所以先安装ruby
yum install curl
yum -y update nss
curl -L get.rvm.io | bash -s stable
RVM:RVM是一个命令行工具,可以提供一个便捷的多版本Ruby环境的管理和切换。
CURL:Linux下的文件传输工具,利用URL的规则在命令行下工作
先下载CURL
yum install curl
有可能遇到版本过低的问题,这里可以先升级一下
yum -y update nss
导入密钥(不进行这个操作会导致无法下载)
gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
使用curl安装rvm (可能会花点时间)
curl -L get.rvm.io | bash -s stable
安装ruby
source /usr/local/rvm/scripts/rvm
rvm install 2.3.4
使用安装的ruby
rvm use 2.3.4 --default
可以查看当前使用的ruby版本
ruby --version
安装redis接口
gem install redis
关闭服务器的防火墙
参考链接https://blog.csdn.net/qq_35971258/article/details/79318842
修改redis配置文件,允许外部连接,注释掉 bind127.0.0.1
vim /usr/local/redis_cluster/7000/redis.conf
vim /usr/local/redis_cluster/7001/redis.conf
vim /usr/local/redis_cluster/7002/redis.conf
vim /usr/local/redis_cluster/7003/redis.conf
vim /usr/local/redis_cluster/7004/redis.conf
vim /usr/local/redis_cluster/7005/redis.conf
在redis3.2之后,redis增加了protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,再访问redisd时候还是报错,修改其为no
两台机启动各节点(两台服务器方式一样)
/redis-3.2.1/src/redis-server /usr/local/redis_cluster/7000/redis.conf
/redis-3.2.1/src/redis-server /usr/local/redis_cluster/7001/redis.conf
/redis-3.2.1/src/redis-server /usr/local/redis_cluster/7002/redis.conf
/redis-3.2.1/src/redis-server /usr/local/redis_cluster/7003/redis.conf
/redis-3.2.1/src/redis-server /usr/local/redis_cluster/7004/redis.conf
/redis-3.2.1/src/redis-server /usr/local/redis_cluster/7005/redis.conf
所有节点全部启动之后,通过create参数来创建集群
/redis-3.2.1/src/redis-trib.rb create --replicas 1 192.168.1.158:7000 192.168.1.158:7001 192.168.1.158:7002 192.168.1.229:7003 192.168.1.229:7004 192.168.1.229:7005
--replicas 1 表示 自动为每一个master节点分配一个slave节点 上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)
运行中,提示Can I set the above configuration? (type 'yes' to accept): yes //输入yes
创建完成之后,可以通过check命令来查看一下
/redis-3.2.1/src/redis-trib.rb check 192.168.1.158:7000