redis集群部署实战

redis集群实战

redis集群master节点必须在3个以上,所以官方建议启动6个节点,3个作为master,3个最为slave

本示例会安装端口为7000到7005这6个redis节点

一、安装

官网https://redis.io/download中有如下脚本,跟着执行就行了。需要注意的是版本号,每次安装最好去这个网页看看最新的版本号

$ wget http://download.redis.io/releases/redis-4.0.1.tar.gz

$ tar xzf redis-4.0.1.tar.gz

$ cd redis-4.0.1

$ make

安装好后测试一下是否成功

执行src/redis-server &命令会启动redis服务端

src/redis-cli

redis> set foo bar

OK

redis> get foo

"bar"

按照上方代码执行,如果结果一致则安装成功。

在继续集群部署前,先把刚刚启动的这个服务端停止,方法就是用kill命令

二、集群

官网地址https://redis.io/topics/cluster-tutorial,这里对集群的配置做了详细的说明。

注意:在网页的最后部分,提供一种用于测试的快速集群脚本,但生产环境尽量不要这样做。

实现步骤:

1.为6个节点分别创建对应的目录

mkdir cluster-node

cd cluster-node

mkdir 7000 7001 7002 7003 7004 7005

2.在每个目录中创建redis.cnf配置文件,内容如下。注意,根据对应端口设置port(7000到7005)

port 7000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

protected-mode no

3.将6个redis节点都启动起来

进入每个目录下,执行下面的命令

../redis-server ./redis.conf &

注意redis-server前面的相对路径要指定到redis安装目录下的src路径中

6个都启动后,使用ps -ef | grep redis命令应该可以看到有6条不同端口的redis记录

4.安装gem工具

redis集群有个脚本,但是要执行那个脚本就必须安装gem工具

安装gem工具就要安装ruby

1.先卸载本机的ruby因为可能版本太老

yum remove ruby

2.安装ruby

yum install ruby

3.安装RubyRem

yum install rubygems

4.安装redis的rem文件

redis的官网提供gem install redis这样一条命令自动安装,但是实际使用的时候发现基本两部上下载服务器,可能被墙了,使用下面的方法。

在网站https://rubygems.org上搜索redis,点击第一条记录进入,这是可以看到版本列表,我第一次用的最新版4.0.0,后来发现4.0.0需要ruby2.2以上,

但是我上面用yum命令装的ruby貌似是1.8几的,所以使用了前一个稳定版本3.3.3

wget https://rubygems.org/downloads/redis-3.3.3.gem

gem install redis-3.3.3.gem

5.创建集群

进入src目录,执行下方命令

./redis-trib.rb create --replicas 1 172.26.46.115:7000 172.26.46.115:7001 172.26.46.115:7002 172.26.46.115:7003 172.26.46.115:7004 172.26.46.115:7005 &

注意:官方文档中ip都写的是127.0.0.1,千万不要这样设置,否则java客户端连接的时候会报Could not get a resource from the pool错误

6.验证集群是否生效

官方给出几行命令用户验证

./redis-cli -c -p 7000

redis 127.0.0.1:7000> set foo bar

-> Redirected to slot [12182] located at 127.0.0.1:7002

OK

redis 127.0.0.1:7002> set hello world

-> Redirected to slot [866] located at 127.0.0.1:7000

OK

redis 127.0.0.1:7000> get foo

-> Redirected to slot [12182] located at 127.0.0.1:7002

"bar"

redis 127.0.0.1:7000> get hello

-> Redirected to slot [866] located at 127.0.0.1:7000

"world"

注意:端口要跟上面一样才能验证出效果,如果发现端口不一样,用第一条命令打开指定的端口

如果跟上方输出一直,说明集群已经生效

除此之外,还可以通过./redis-trib.rb check 127.0.0.1:7000来验证

三、注意事项

1.配置文件中的bind

bind的作用是服务端绑定的域名,默认配置中和官方的演示中配的都是127.0.0.1,但是如果这样配的话,那么以后就只能本机才能访问,所以不写这个或者注释掉

2.配置文件中的protected-mode

protected-mode默认是yes,启用的话就只有bind绑定的域名或者设置了密码的客户端能访问,所以我们这里设置成no

3.如何重启单个节点

ps查出pid后直接kill就行了,kill的时候集群会检测服务器状态所以会输出一些日志。

4.如何重启或者重新配置集群

没有简单的命令来完成这个操作,只能把6个节点的服务都kill掉,然后进入7000到7005目录,把里面除了redis.cnf外的其他文件都删掉,然后配置好每个节点后,

把所有节点都启动起来,然后再执行一次

./redis-trib.rb create --replicas 1 172.26.46.115:7000 172.26.46.115:7001 172.26.46.115:7002 172.26.46.115:7003 172.26.46.115:7004 172.26.46.115:7005 &

5.遇到问题怎么办

尽量去到官方查文档,这里是最权威并且和当前安装的版本最匹配的,如果在网上搜索,一方面可能不全另一方面有可能根本就用不了

原文地址:https://www.cnblogs.com/xiaoQ0725/p/8481995.html