linux环境redis集群搭建

需要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

官网:https://redis.io/download

本地上传也行, 安装个  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人工指定主从关系

https://blog.csdn.net/tianshi_rain/article/details/86612193

 

 

安装参考:
https://blog.csdn.net/qq_39135287/article/details/84189397
https://www.cnblogs.com/xuliangxing/p/7146868.html

 

个人笔记,请无视

安装路径: 本地笔记本虚拟机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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值