需要gcc环境,check 是否有安装
[root@localhost ~]# gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
没有安装的话:
$ yum install gcc-c++
需要先安装ruby
yum install ruby
yum install rubygems
官网 wget **** redis
本地上传也行, 安装个 yum install lrzsz
解压后,最好放到一个指定的目录 ,比如:user/local/redis 后面操作完后,redis 就安装到这里了。
cd redis5.0.1
make
make install
之后就ok了 ,
cd redis/src
redis-server ../redis.conf
ok 直接无密码启动了 ,redis-cli test ,单机 ok。
接下来 安装集群:
cd /usr/local
mkdir redis
cd redis
mkdir redis-cluster
如果是单机模拟,直接创建6个目录
mkdir redis700{1,2,3,4,5,6}
下面重点来了,需要6个节点,所有我们需要配置各自的redis.conf配置文件。到我们Redis的安装目录usr/local/bin,将redis-cli、redis-server、redis.conf(没有conf文件,可以从压缩包里拷个出来,或者自己直接新建一个空的conf文件,后面再配置相关信息),分别复制到刚刚创建的6个文件夹当中。
cp redis-cli /home/cjf/Downloads/redis-cluster/redis7001/
cp redis-server /home/cjf/Downloads/redis-cluster/redis7001/
cd /home/cjf/Downloads/redis-cluster/redis7001/
创建 redis.conf 文件,增加内容
#不同节点需要修改
port 7001
#yes 设置后台运行
daemonize yes
#设置pidfile存放在 run目录下的文件名 ,名称注意修改
pidfile /var/run/redis_7001.pid
#设置开启AOF模式
appendonly yes
#启动集群
cluster-enabled yes
#关联集群配置文件
cluster-config-file "nodes.conf"
#设置超时
cluster-node-timeout 5000
#日志信息,可有可无
logfile "redis.log"
#指定ip访问的地址,设置0.0.0.0 默认是全部地址,不设置,后面会连接不上的
bind 0.0.0.0
#requirepass 123456
#masterauth 123456
redis7002同样操作
创建启动脚本
start-cluster.sh
cd redis7001
./redis-server redis.conf
cd ..
cd redis7002
./redis-server redis.conf
创建停止脚本
shutdown-cluster.sh
cd redis7001
#./redis-cli -p 7001 -a 123456 shutdown save
./redis-cli -p 7001 shutdown save
cd ..
cd redis7002
./redis-cli -p 7002 shutdown save
启动+查看
chmod +x start-cluster.sh
chmod +x shutdown-cluster.sh
启动 ./start-cluster.sh
查看 netstat -tnulp | grep redis ps aux | grep redis
继续,实际上,Redis集群的操作在后文你可以看到是通过Ruby脚本来完成的,因此我们需要安装Ruby相关的RPM包,以及Redis和Ruby的接口包。我们要用到之前安装的Ruby。我们到之前解压的文件redis****/src目录下找到文件为:redis-trib.rb, 拷贝到 redis7001 redis7002目录下。这里提前说下,后面执行因为ruby版本过低,导致redis-trib.rb不能用,升级ruby后, 直接使用redis-cli 创建集群了。redis-trib.rb没用了,所以这一步其实没啥意义。
第二台,第三台 同样操作后,启动redis,check ok后,继续!
创建集群
执行 ./redis-trib.rb create --replicas 1 192.168.1.159:7001 192.168.1.159:7002 192.168.1.188:7001 192.168.1.188:7002 192.168.1.195:7001 192.168.1.195:7002
报错了,ruby版本过低
[root@localhost redis7002]# ./redis-trib.rb create --replicas 1 192.168.1.159:7001 192.168.1.159:7002 192.168.1.188:7001 192.168.1.188:7002 192.168.1.195:7001 192.168.1.195:7002
./redis-trib.rb:6: odd number list for Hash
white: 29,
^
./redis-trib.rb:6: syntax error, unexpected ':', expecting '}'
white: 29,
^
./redis-trib.rb:7: syntax error, unexpected ',', expecting kEND
[root@localhost redis7002]#
升级ruby
删除低版本:
yum remove -y ruby
yum remove -y rubygemsc
官网下载最新:http://www.ruby-lang.org/en/downloads/
wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.gz
解压后得到:ruby-2.6.3
cd ruby-2.6.3
1 $ ./configure --prefix=/usr/local/ruby -prefix是将ruby安装到指定目录,也可以自定义
2 $ make && make install
这个安装需要等一会
vi /etc/profile
增加:export PATH=$PATH:/usr/local/ruby/bin # 不加会报找不到命令
刷新:soruce /etc/profile
[root@localhost Downloads]# ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
ok了
继续执行 ./redis-trib.rb create --replicas 1 192.168.1.159:7001 192.168.1.159:7002 192.168.1.188:7001 192.168.1.188:7002 192.168.1.195:7001 192.168.1.195:7002
又出错了
[root@localhost redis7001]# ./redis-trib.rb create --replicas 1 192.168.1.159:7001 192.168.1.159:7002 192.168.1.188:7001 192.168.1.188:7002 192.168.1.195:7001 192.168.1.195:7002
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 192.168.1.159:7001 192.168.1.159:7002 192.168.1.188:7001 192.168.1.188:7002 192.168.1.195:7001 192.168.1.195:7002 --cluster-replicas 1
To get help about all subcommands, type:
redis-cli --cluster help
[root@localhost redis7001]#
提示的很清楚了 ,也查了下资料:
Redis5.0集群管理工具redis-trib.rb已经被废弃(之前各个目录里拷贝的redis-trib.rb 应该没用了,可以删除),所以不用安装ruby啥的了,现在已经集成到了redis-cli中,并且可以在有认证的情况执行了,可以通过redis-cli --cluster help查看使用方式。
创建集群 注意:如果之前设置了redis集群的密码,就需要带上 -a 123456 (密码)
./redis-cli --cluster create 192.168.30.1:7001 192.168.30.1:7002 192.168.30.1:7003 192.168.30.1:7004 192.168.30.1:7005 192.168.30.1:7006 --cluster-replicas 1 -a 123456
没设置密码的执行这个:
./redis-cli --cluster create 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 --cluster-replicas 1
本次安装的时候,把密码给注释了,所以执行:
执行:redis-cli --cluster create 192.168.1.159:7001 192.168.1.159:7002 192.168.1.188:7001 192.168.1.188:7002 192.168.1.195:7001 192.168.1.195:7002 --cluster-replicas 1
执行ok 可以看到 三主三从 ,
测试:
./redis-cli -c -p 7001 登录任意一台7001
换另一台:
数据成功获取到。
设置redis集群开机启动
[root@localhost redis-cluster]# vim /etc/rc.d/rc.local
添加如下代码到 /etc/rc.d/rc.local 中:
/usr/local/software/redis-cluster/redis_cluster_start_all.sh
redis集群状态检查:
任意一个节点机器,cd到 /home/cjf/Downloads/redis-5.0.5/src
./redis-cli -c -p 端口号 -h IP地址
cluster info
设置密码
安装的时候没有设置密码,这里设置下密码
1、密码设置(推荐)
方式一:修改所有Redis集群中的redis.conf文件加入:
masterauth passwd123
requirepass passwd123
说明:这种方式需要重新启动各节点
方式二:进入各个实例进行设置:
./redis-cli -c -p 7000
config set masterauth passwd123
config set requirepass passwd123
config rewrite
之后分别使用./redis-cli -c -p 7001,./redis-cli -c -p 7002…..命令给各节点设置上密码。
注意:各个节点密码都必须一致,否则Redirected就会失败, 推荐这种方式,这种方式会把密码写入到redis.conf里面去,且不用重启。
用方式二修改密码,./redis-trib.rb check 10.104.111.174:6379执行时可能会报[ERR] Sorry, can't connect to node 10.104.111.174:6379,因为6379的redis.conf没找到密码配置。
实际操作如下:
[root@localhost redis7002]# redis-cli -c -p 7001 -h 192.168.1.195
192.168.1.195:7001> config set masterauth yzht123
OK
192.168.1.195:7001> config set requirepass yzht123
OK
192.168.1.195:7001> config rewrite
(error) NOAUTH Authentication required.
192.168.1.195:7001>
报错了:(error) NOAUTH Authentication required.
刚刚设置的密码已经生效了,需要先 授权
192.168.1.195:7001> auth yzht123
OK
192.168.1.195:7001> config rewrite
OK
192.168.1.195:7001>
测试:
[root@localhost redis7002]# redis-cli -c -p 7002 -h 192.168.1.159
192.168.1.159:7002> get hello
(error) NOAUTH Authentication required.
192.168.1.159:7002> auth yzht123
OK
192.168.1.159:7002> get hello
-> Redirected to slot [866] located at 192.168.1.159:7001
(error) NOAUTH Authentication required.
192.168.1.159:7001> auth yzht123
OK
192.168.1.159:7001> get hello
"world"
192.168.1.159:7001>
这种auth 方式授权密码,每次都需要输入密码,很麻烦
直接密码登录:
[root@localhost redis7001]# redis-cli -c -p 7001 -h 192.168.1.159 -a yzht123
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
登录实际上成功率 ,但报了个warning 错,很不爽,改成这样登录就ok
redis-cli -c -p 7001 -h 192.168.1.159 -a yzht123 2>/dev/null
查看redis.conf 可以看到设置的密码
设置密码后,之前的shutdown-cluster.sh 脚本需要修改,否则没法没法关闭了
cd redis7001
#./redis-cli -p 7001 -a 123456 shutdown save
./redis-cli -p 7001 -a yzht123 shutdown save 2>/dev/null
cd ..
cd redis7002
./redis-cli -p 7002 -a yzht123 shutdown save 2>/dev/null
这里需要增加个: 2>/dev/null
不加这个,会有个warnning提示,redis-cluster 实际已经停止了。
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Redis stopped
具体为啥,参考这里,百度查的: 增加 2>/dev/null 就ok了
这串提醒,会影响我们脚本的数据取值。
这串告警,并不是普通的输出,通过head、tail、awk、sed等命令并不能过滤掉这行输出。
问题原因:这串输出并不是普通输出,shell的标准输出包含两种,1(标准输出)2(标准错误) 我们的命令,即包含1也包含2,2即是我们想要去除的提示。
解决办法将标准错误去除即可,如图,加了2>/dev/null,将标准错误丢弃即可
回头看了下,发现这么安装,主从会有问题,主和从都在一台机器上,好尴尬,这要一台主机挂了,就over了。
先这么用着吧。搜了下主从交叉安装可以参靠这篇文章,下次有机会再试试;
Redis5 cluster人工指定主从关系
个人笔记,请无视
安装路径: 本地笔记本虚拟机128 : /home/cjf/redis-cluster/
测试服务器:192.168.1.195 , 192.168.1.188 ,192.168.159
redis: /home/cjf/Downloads/redis-5.0.5
集群:/home/cjf/Downloads/redis-cluster/redis7002