安装环境CentOS Linux release 7.5.1804 (Core)
如果服务器没有连接网络,请按步骤自行百度其离线方式
话不多说,开整!!!
一、安装redis
#下载至/home/install(或windows系统下载后上传)
mkdir /usr/local/install
cd usr/local/install
wget http://124.205.69.171/files/6160000006F201F1/download.redis.io/releases/redis-4.0.11.tar.gz
#解压
tar -zxvf redis-4.0.11.tar.gz
#移动
mv redis-4.0.11 /usr/local/redis-4.0.11
#编译安装
cd /usr/local/redis-4.0.11
make && make install
如果报没有gcc的错:
下载gcc所有依赖:
rpm -ivh *.rpm --nodeps --force
zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
执行:make MALLOC=libc
二、配置六个redis服务(官方建议3主3从)
1.创建集群目录
mkdir /usr/local/redis-cluster/
cd /usr/local/redis-cluster/
mkdir 7001
mkdir 7002
mkdir 7003
mkdir 7004
mkdir 7005
mkdir 7006
2.修改配置文件
cd /usr/local/redis-cluster/
cp /usr/local/redis-4.0.11/redis.conf ./7001/redis.conf
vim ./7001/redis.conf
#找到如下KEY,放开注释,修改值内容
bind 0.0.0.0#不限制访问ip和远程连接
protected-mode no#保护模式
port 7001 #修改端口号
daemonize yes#后台运行线程
pidfile /var/run/redis_7001.pid #守护进程文件
dbfilename dump7001.rdb#缓存持久存储文件名称
dir /usr/local/redis-cluster/7001/#db文件存放路径
appendonly yes#开启日志实时持久
appendfilename "appendonly7001.aof"#日志名称
cluster-enabled yes#开启集群
cluster-config-file nodes_7001.conf#集群节点文件
cluster-node-timeout 15000#集群通信超过该时长视为挂掉,单位毫秒
3.拷贝配置文件
cd /usr/local/redis-cluster/
cp ./7001/redis.conf ./7002/redis.conf
cp ./7001/redis.conf ./7003/redis.conf
cp ./7001/redis.conf ./7004/redis.conf
cp ./7001/redis.conf ./7005/redis.conf
cp ./7001/redis.conf ./7006/redis.conf
4.手工修改配置文件
vim ./7002/redis.conf
:%s/7001/7002/g#所有7001的字符串替换为7002
.
.
.
vim ./7006/redis.conf
:%s/7001/7006/g#所有7001的字符串替换为7006
三、安装redis依赖(ruby)
1.安装依赖包
yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison sqlite-devel iconv-devel
2.安装 rvm
curl -L get.rvm.io | bash -s stable
3.拷贝中间红框中的执行
4.再次安装rvm(命令同上:curl -L get.rvm.io | bash -s stable )
安装成功,黄字提示请把用户添加到rvm用户组(执行)
usermod -G rvm root
5.添加生效指令
echo "source /etc/profile.d/rvm.sh" >> ~/.bashrc && source /etc/profile.d/rvm.sh
6.安装ruby(等得有点久,不要慌,出现下图就可以了)
rvm install ruby
7.安装ruby与redis接口
gem install redis
yum install rubygems
四、启动redis并创建集群
1.启动所有的redis
cd /usr/local/redis-cluster/
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7001/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7002/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7003/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7004/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7005/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7006/redis.conf
2.创建测试用集群(如redis需要设置密码或有项目需要连接集群-->见六、实战)
/usr/local/redis-4.0.11/src/redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
3.测试验证
随便链接一个节点,我连接的是7001,可以退出连接其他节点去取值(这里就不测试了)
五、报错处理:
重新编译redis,删除7001-7006文件夹下除redis.conf之外的文件,然后gem install redis,再次执行即可
如果使用阿里云,可能提示can not connect ... 请配置安全组,放开7001-7006端口
如果一直停留在join....或者使用代码连接上不,请关闭防火墙或配置安全规则,然后打开集线端口(redis端口+10000即[17001-17006])或者移步实战应用.
六、实战应用(设置密码并开启集群模式)
1.如果用127.0.0.1进行过测试,请killall redis-server重新编译redis,删除7001-7006文件夹下除redis.conf之外的文件,然后gem install redis(没有开启过集群模式请移步2.↓)
2.在7001-7006文件夹下的所有redis.conf文件中放开requirepass属性的注释,然后设置想要的密码
3.启动所有的redis
#!/bin/sh
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7001/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7002/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7003/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7004/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7005/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7006/redis.conf
4.修改gems工具client.rb参数
找到你们自己本地的client.rb文件(我的是/usr/local/ruby/lib/ruby/gems/2.2.0/gems/redis-4.0.1/lib/redis/client.rb)
进入该文件夹-->vim ./client.rb 修改创建集群时的连接密码如"admin",注意看图,然后报存!
4.开启集群模式(替换黑色字体为你的外网或项目能访问的ip每个地址之间有一个空格)
/usr/local/redis-4.0.11/src/redis-trib.rb create --replicas 1 yoursIP:7001 yoursIP:7002 yoursIP:7003 yoursIP:7004 yoursIP:7005 yoursIP:7006
中间需要输入一次yes,出现下图就成功了,附赠redis保存错误的截图(相信我只是附赠...)
保存失败(集群模式,连接请使用集群连接参数-c)
最后使用代码连接测试一波,完美!!!
七、开机启动
mkdir /usr/local/redis-cluster/script
cd /usr/local/redis-cluster/script/
1.编写 startAll.sh
vim startAll.sh
#!/bin/sh
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7001/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7002/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7003/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7004/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7005/redis.conf
/usr/local/redis-4.0.11/src/redis-server /usr/local/redis-cluster/7006/redis.conf
2.编写 stopAll.sh
vim stopAll.sh
#!/bin/sh
/usr/local/redis-4.0.11/src/redis-cli -c -a yourPassword -p 7001 shutdown
/usr/local/redis-4.0.11/src/redis-cli -c -a yourPassword -p 7002 shutdown
/usr/local/redis-4.0.11/src/redis-cli -c -a yourPassword -p 7003 shutdown
/usr/local/redis-4.0.11/src/redis-cli -c -a yourPassword -p 7004 shutdown
/usr/local/redis-4.0.11/src/redis-cli -c -a yourPassword -p 7005 shutdown
/usr/local/redis-4.0.11/src/redis-cli -c -a yourPassword -p 7006 shutdown
3.编写restart.sh
vim restart.sh
#!/bin/sh
systemctl stop redis-cluster
systemctl start redis-cluster
4.改变权限
cd /usr/local/redis-cluster/script/
chmod 777 ./*.sh
5.编写自启服务
cd /usr/lib/systemd/system/
vim redis-cluster.service
添加内容如下
[Unit]
Description=redis-cluster
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/redis-cluster/script/startAll.sh
ExecStop=/usr/local/redis-cluster/script/stopAll.sh
ExecReload=/usr/local/redis-cluster/script/restart.sh
[Install]
WantedBy=multi-user.target
改变权限
chmod 777 redis-cluster.service
进程服务重加载
systemctl daemon-reload
开机启动集群
systemctl enable redis-cluster.service
启动集群
systemctl start redis-cluster.service
关闭集群
systemctl stop redis-cluster.service
重启集群
systemctl restart redis-cluster.service