Spring Boot 学习笔记(十) Redis集群搭建
- Spring Boot 学习笔记 源码地址
- Spring Boot 学习笔记(一) hello world
- Spring Boot 学习笔记(二) 整合 log4j2
- Spring Boot 学习笔记(三) 整合 MyBatis + Druid
- Spring Boot 学习笔记(四) 整合 Druid 监控
- Spring Boot 学习笔记(五) 整合 静态资源
- Spring Boot 学习笔记(六) 整合 RESTful 参数传递
- Spring Boot 学习笔记(七) 整合 Swagger2
- Spring Boot 学习笔记(八) 整合 Filter
- Spring Boot 学习笔记(九) 整合 多环境配置
- Spring Boot 学习笔记(十) Redis集群搭建
0. 环境说明
- 服务器 centos 7 64bit
- redis 4.0.11
1.Redis 源码安装
创建一个redis源码目录,并转到该目录
1mkidr redis
2cd redis
3
下载源码并编译。
1wget http://download.redis.io/releases/redis-4.0.11.tar.gz
2tar xzf redis-4.0.11.tar.gz
3cd redis-4.0.11
4make
PS:如果出现下面的结果:
1make[2]: Entering directory `/root/redis/redis-4.0.11/deps/hiredis'
2gcc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.c
3make[2]: gcc: Command not found
4make[2]: *** [net.o] Error 127
5make[2]: Leaving directory `/root/redis/redis-4.0.11/deps/hiredis'
6make[1]: *** [hiredis] Error 2
7make[1]: Leaving directory `/root/redis/redis-4.0.11/deps'
8make: [persist-settings] Error 2 (ignored)
9
说明没有安装 gcc 编译器。需要安装一下。
1yum install gcc
安装gcc后需要重新解压一份新的Redis。再执行 make
编译成功的话会显示:
1Hint: It's a good idea to run 'make test' ;)
2
3make[1]: Leaving directory `/root/redis/redis-4.0.11/src'
4
至此,我们已经获取到了Redis的安装包。src目录下就是一个完整可用的Redis了。
2. Redis单机部署
现在开始搭建一个单机的redis集群。主备模式(三主三从)。
以端口号为名称创建6个文件夹:
1mkdir redis-cluster
2cd redis-cluster
3mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data
把我们之前编译好的redis拷贝一份到 9001 中,并修改 redis.config 文件中的配置信息
1cd 9001
2vim redis.config
主要修改下面几个配置:
1port 9001(每个节点的端口号)
2daemonize yes(开启守护线程)
3bind 192.168.119.131(绑定当前机器 IP,需要注释掉,否则外网无法访问)
4dir ./data(数据文件存放位置)
5pidfile /var/run/redis_9001.pid(pid 9001和port要对应)
6cluster-enabled yes(默认是注释掉的,需要开启启动集群模式)
7cluster-config-file nodes9001.conf(默认是注释掉的,9001和port要对应)
8cluster-node-timeout 15000(默认是注释掉的,超时时间)
9appendonly yes (redis数据持久化)
然后把 9001 下的 redis 依次拷贝到其他5个端口的文件夹下。
1cp -r ./* ./../9001/
2cp -r ./* ./../9002/
3cp -r ./* ./../9003/
4cp -r ./* ./../9004/
5cp -r ./* ./../9005/
6cp -r ./* ./../9006/
依次修改每个端口下的redis.config,把端口改成与文件夹一致。到这一步,我们相当于在本地主机上部署了6个Redis,依次启动每个端口的redis
1cd 9001
2./src/redis-server redis.conf
3
4... ...(启动其他端口的redis)
5
3. 安装Redis集群所需的工具
由于 Redis 集群需要使用 ruby 命令,所以我们需要安装 ruby 和相关接口。
1yum install ruby
2yum install rubygems
3gem install redis
在执行 gem install redis的时候出现了下面的错误
1ERROR: Error installing redis:
2 redis requires Ruby version >= 2.2.2.
3
意思是我们的 Ruby版本太低了,要升级一下Ruby。
执行一下:
1 curl -L get.rvm.io | bash -s stable
会获取到一个密钥:
1 gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
2
让这个密钥生效一下
1 gpg --keyserver hkp://keys.gnupg.net --recv-keys xxx(上一步得到的key)
2
3 curl -sSL https://get.rvm.io | bash -s stable
4
source环境,让rvm可用:
1source /etc/profile.d/rvm.sh
2source /usr/local/rvm/scripts/rvm
安装 Ruby 2.3.0
1rvm install 2.3.0
安装Redis接口
1 gem install redis
构建Redis集群
1cd 9001
2
3[root@localhost 9006]# ./src/redis-trib.rb create --replicas 1 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003 127.0.0.1:9004 127.0.0.1:9005 127.0.0.1:9006
4>>> Creating cluster
5>>> Performing hash slots allocation on 6 nodes...
6Using 3 masters:
7127.0.0.1:9001
8127.0.0.1:9002
9127.0.0.1:9003
10Adding replica 127.0.0.1:9005 to 127.0.0.1:9001
11Adding replica 127.0.0.1:9006 to 127.0.0.1:9002
12Adding replica 127.0.0.1:9004 to 127.0.0.1:9003
13
14... ...(省略部分显示结果)
15
16[OK] All nodes agree about slots configuration.
17>>> Check for open slots...
18>>> Check slots coverage...
19[OK] All 16384 slots covered.
20
这个时候我们的集群已经搭建好了。找一台redis连接上看一下
1./src/redis-cli -c -p 9001
2127.0.0.1:9001> cluster info
3127.0.0.1:9001> cluster nodes
4. 外网访问
现在集群是搭建好了,在服务器上测试一下是可以的,如果你要在别的机器上连接发现会发现一直连接失败。这是因为我们的redis集群没有设置密码,而且是保护模式。现在我们对这个集群设置一个密码。
集群的密码需要单独对每个机器设置,这里以 9001 为例
1cd 9001
2src/redis-cli -c -p 9001 shutdown
3vim redis.conf
修改 requirepass 选项
1requirepass ******
重启 redis
1src/redis-server redis.conf
依次修改完其他的端口,外网就能通过密码访问了。
PS:如果还是不能访问,请检查一下端口是否开放。
1linux 下的开放端口命令。下面的命令会开放 8080端口
2/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
5. redis-trib 无法连接
这个时候如果你在服务器上会发现 redis-trib.sh这个脚本好像没办法连接连接上redis了
1cd 9001
2./src/redis-trib.rb check 127.0.0.1:9001
3[ERR] Sorry, can't connect to node 127.0.0.1:9001
4
这个是因为我们的Redis集群配置信息没有更新密码配置,需要手动修改。
1cd /usr/local/rvm/gems/ruby-2.3.0/gems/redis-4.0.2/lib/redis
2vim client.rb
PS: 如果找不到 client.rb 可以用find / -name 'client.rb'命令查找一下
修改 passord 配置:
1 DEFAULTS = {
2 :url => lambda { ENV["REDIS_URL"] },
3 :scheme => "redis",
4 :host => "127.0.0.1",
5 :port => 6379,
6 :path => nil,
7 :timeout => 5.0,
8 :password => "******",
9 :db => 0,
10 :driver => nil,
11 :id => nil,
12 :tcp_keepalive => 0,
13 :reconnect_attempts => 1,
14 :inherit_socket => false
15 }
16
再试一下:
1./redis-trib.rb check 127.0.0.1:9001
应该能看到 redis集群的一些信息了
6. IDEA 的 Iedis 插件无法连接
最后,遇到了一个问题,我用IDEA 的 Iedis 连接别的redis集群能正常连接,但是连接刚刚搭建的集群就是连接不上。不知道为什么,一直没有解决。
不过 用 Redis Desktop Manager 是可以连接上的。
PS:为了安装一个redis 我已经重装了10多次系统了。。。
转载请注明出处
本文链接:zdran.com/20180904.ht…