1、redis安装
(1)下载redis
命令如下:
1、wget http://download.redis.io/releases/redis-4.0.10.tar.gz
2、如果提示 未发现wget命令,请输入 yum install wget
(2)安装redis
命令如下:
解压:tar -zxvf redis-4.0.10.tar.gz
cd redis-4.0.10
make MALLOC=libc 如果提示 gcc:未找到命令,则需要安装gcc:yum install gcc
make install
(3)配置redis
redis安装成功之后需要几个地方:
修改 redis.conf 之后的结果:
daemonize yes -- 运行redis从后台运行
#bind 127.0.0.1 --外网可以访问
requirepass 123@456 -- redis密码
protected-mode no --关闭保护模式
(4)配置centos
关闭防火墙
systemctl stop firewalld.service --关闭防火墙
systemctl disable firewalld.service --禁止防火墙开机启动
(5)启动redis和关闭
关闭只要 ctrl+c就可以
进入redis:redis-cli -a 123@456 (-a 后面的是redis密码)
退出命令:exit
2、搭建集群
(1)集群原理
Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施installation。
Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行这些命令需要在多个 Redis 节点之间移动数据, 并且在高负载的情况下, 这些命令将降低Redis集群的性能, 并导致不可预测的行为。
Redis 集群通过分区partition来提供一定程度的可用性availability: 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。
Redis集群提供了以下两个好处:
将数据自动切分split到多个节点的能力。
当集群中的一部分节点失效或者无法进行通讯时, 仍然可以继续处理命令请求的能力
(2)集群规划
主节点:192.168.137.128:8001,192.168.137.128:8002,192.168.137.128:8003
从节点:192.168.137.128:8004,192.168.137.128:8005,192.168.137.128:8006
(3)集群配置
Redis集群管理工具redis-trib.rb依赖Ruby环境,首先需要安装ruby环境,由于Centos 库中的ruby版本太低,所有建议用以下方式重装:
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
curl -L get.rvm.io | bash -s stable
source /usr/local/rvm/script/rvm
(4)创建集群所需要的一些软件
rvm list known ---查看所有ruby
-- 选择最稳定的版本安装
rvm install 2.5.1
--安装redis依赖
gem install redis
--在redis 同级目录创建文件夹(redisCluster)
mkdir redisCluster
cp -f redis-4.0.10.tar.gz redisCluster/
cd redisCluster
tar -zxvf redis-4.0.10.tar.gz
cd redis-4.0.10
make MALLOC=libc
make install
cp -f ../redis-4.0.10/src/redis-trib.rb ../
--然后再redisCluster目录下创建子节点的文件夹(8001 .。。8006),将redis.conf复制其中,修改redis.conf中几个部分
port 8001 --节点端口号
#bind 127.0.0.1 --让本地可以访问
cluster-enable yes
cluster-config-file nodes-8001.conf --对应每个接口的文件
protected no
daemonize yes
requirepass 123456 --这个根据需要来,我这里就没加入,看安装的redis是否加入密码
masterauth 123456 --这个也是根据需要来
然后运行节点
cd redisCluster
redis-server 8001/redis.conf
redis-server 8002/redis.conf
redis-server 8003/redis.conf
redis-server 8004/redis.conf
redis-server 8005/redis.conf
redis-server 8006/redis.conf
(5)创建集群
redis-cli --cluster create ip:8001 ip:8002 ip:8003 ip:8004 ip:8005 ip:8006 --cluster-replicas 1
接下来以节点的方式进入: -a 表示密码 -c表示集群的方式
redis-cli -p 8001 -c (无密码的方式登录)
redis-cli -p 8001 -a 123456 -c (有密码的方式登录)
搭建集群所遇见的问题:
(1)使用redis搭建集群时遇到的问题:You should use redis-cli instead.
解决方案:
WARNING: redis-trib.rb is not longer available!
You should use redis-cli instead.
All commands and features belonging to redis-trib.rb have been moved to redis-cli.
In order to use them you should call redis-cli with the --cluster
option followed by the subcommand name, arguments and options.
Use the following syntax:
redis-cli --cluster SUBCOMMAND [ARGUMENTS] [OPTIONS]
Example:
redis-cli --cluster create 172.16.0.71:9001 172.16.0.71:9002 --cluster-replicas 1
解决方法:原本的命令./redis-trib.rb create --replicas 1 172.16.0.71:9001 172.16.0.71:9002 废弃了,提示改用redis-cli
换成./redis-cli --cluster create 127.0.0.1:6379..........便可以解决问题
(2)/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
解决方法
安装所有32位程序需要组件:
yum install xulrunner.i686
(3)Centos使用yum安装提示“没有可用软件包”
解决方法:
yum install -y epel-release
(4)CentOS 报错:yum-config-manager: 未找到命令
解决方法
这个命令在 yum-utils
包里,可以通过命令 yum -y install yum-utils
安装就可以了。
(5)Redis (error) NOAUTH Authentication required.解决方法
加入集群命令: redis-cli --cluster create 114.116.35.252:7000 114.116.35.252:7001 114.116.35.252:7002 114.116.35.252:7003 114.116.35.252:7004 114.116.35.252:7005 --cluster-replicas 1
需要加入密码
解决方法(命令的最后面加入 -a redis密码):
redis-cli --cluster create 114.116.35.252:7000 114.116.35.252:7001 114.116.35.252:7002 114.116.35.252:7003 114.116.35.252:7004 114.116.35.252:7005 --cluster-replicas 1 -a wzy123
(6)彻底解决【“curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused”】错误
解决方法:
-
打开 https://www.ipaddress.com/ 输入访问不了的域名()raw.githubusercontent.com,获得对应的IP。
-
使用
vim /etc/hosts
命令打开不能访问的机器的hosts文件,添加如下内容:199.232.68.133 raw.githubusercontent.com
注:上面内容中199.232.68.133是raw.githubusercontent.com所在的服务器IP(通过 https://www.ipaddress.com/ 获知)。
-
保存该文件,再使用即可正常访问。
(7)本地无法连接Linux上redis解决步骤:(参考;https://www.cnblogs.com/xk920/p/12119376.html)
1、本地和Linux IP互ping
2、关闭Linux防火墙
3、将redis.conf 中的protected-mode 修改no,注释 bind 127.0.0.1
4、添加Linux允许访问端口(参考:https://www.cnblogs.com/Adoni/p/12887983.html)
firewall-cmd --zone=public --add-port=6379/tcp --permanent 返回success 成功
firewall-cmd --reload 返回success表示成功
firewall-cmd --query-port=6379/tcp
(1)查看进程 ps -ef|grep redis
、
(2)杀死进程
kill -9 进程id
(3)删除节点中的 dump.rdb持久化文件和nodes.conf节点信息文件 (命令:rm -rf)
PS:(如果你的Redis.conf文件里开启并生成了appendonly.aof,你也必须删除它,因为不删除aof文件会和不删除rdb文件一样导致在接下来重新创建节点过程中出现原节点存在数据(Not Empty)异常)
接着:
在重建集群之前需要你依次将每个节点重新启动起来,否则会直接报错 [ERR] Sorry, can't connect to node
(4)创建集群
redis-cli --cluster create 192.168.137.129:8001 192.168.137.129:8002 192.168.137.129:8003 192.168.137.129:8004 192.168.137.129:8005 192.168.137.129:8006 --cluster-replicas 1
创建成功