CentOS7中搭建Redis集群
前言
实现 Redis 集群有多种方式,本篇博客搭建的是 Redis Cluster 集群。此次搭建至少需要六个 Redis 实例,为什
么是六个呢?是因为 Redis Cluster 中有一个投票容错机制,超过半数的节点检测认为某一节点已经失效了,那
么就会放弃此节点,所以至少有三个节点;并且 Redis Cluster 为了保证高可用,加入了主从模式,则一共就有
六个节点,也是六个 Redis 实例
工欲善其事必先利其器,操作 Linux 服务器得有一个用着舒服的客户端,这里推荐使用 MobaXterm
MobaXterm 下载地址:https://mobaxterm.mobatek.net/download.html
单机 Redis 搭建可以参考另一篇博客:CentOS7中安装Redis4.0.14
准备工作 - 可执行程序
如果是按照 CentOS7中安装Redis4.0.14 此博客搭建的单机版 Redis
输入命令 cd /usr/local/redis/init/redis-4.0.14/src -> 进入到 Redis 解压缩目录/src
如果不是按照 CentOS7中安装Redis4.0.14 此博客搭建的,那么就进入到你之前解压缩目录/src
输入命令 cp redis-cli /usr/local/bin/ -> 复制 Redis 客户端
输入命令 cp redis-server /usr/local/bin/ -> 复制 Redis 服务端
输入命令 cp redis-trib.rb /usr/local/bin/ -> 复制 Redis Cluster 管理工具
准备工作 - 集群所需目录及配置文件
先给每个实例创建一个文件夹
输入命令 cd /usr/local/ -> 进入目录
输入命令 mkdir redis-cluster -> 新建文件夹
输入命令 cd redis-cluster/ -> 进入目录
轮流输入命令 mkdir 7000、mkdir 7001、mkdir 7002、mkdir 7003、mkdir 7004、mkdir 7005
-> 新建文件夹
输入命令 cd /usr/local/redis/init/redis-4.0.14/ -> 再次回到 Redis 解压缩目录
输入命令 cp redis.conf /usr/local/redis-cluster/ -> 复制配置文件到刚刚新建的目录中
输入命令 cd /usr/local/redis-cluster/ -> 回到 redis-cluster
把 redis.conf 配置文件分别复制到 7000 ~ 7005 目录中,如 cp redis.conf 7000/,其他不再赘述
输入命令 cd 7000/ -> 进入目录
文件内容太长了,这里我直接双击打开 redis.conf 文件,这样的话修改方便
ctrl + F 查找 port,把端口更改为 7000,即 port 7000 -> 修改端口
ctrl + F 查找 bind 127.0.0.1,一共有两处,把第二处的 bind 127.0.0.1 注释,即 # bind 127.0.0.1
-> 外网可访问
ctrl + F 查找 daemonize no,把 no 更改为 yes,即 daemonize yes -> 后台启动
ctrl + F 查找 **pidfile,更改为 7000,即 pidfile /var/run/redis_7000.pid** -> 守护进程方式运行
ctrl + F 查找 **cluster-enabled,把注释去掉,即 cluster-enabled yes** -> 开启集群
ctrl + F 查找 **cluster-config-file,把注释去掉,并更改为 7000,即 cluster-config-file nodes-7000.conf**
-> 集群的配置
ctrl + F 查找 cluster-node-timeout,把注释去掉,即 cluster-node-timeout 15000 -> 请求超时时间
ctrl + F 查找 requirepass foobared,紧接着下面写一行 requirepass your password(your password
自行更改为你自己的密码),特别注意要顶格写,即 requirepass 666666 -> 设置密码
ctrl + F 查找 masterauth,紧接着下面写一行 masterauth your password(your password 自行更改为
你自己的密码),特别注意要顶格写,即 masterauth 666666 -> 设置主库密码
还有 7001 ~ 7005 配置与 7000 类似,仅下面三处不同,也就是把 7000 更改为对应的数字,其他配置一致
① port -> port 7000、port 7001…
② pidfile -> pidfile /var/run/redis_7000.pid、pidfile /var/run/redis_7001.pid…
③ cluster-config-file -> cluster-config-file nodes-7000.conf、cluster-config-file nodes-7001.conf…
启动每一个实例
输入命令 cd /usr/local/redis-cluster/7000/ -> 进入目录
输入命令 redis-server redis.conf -> 启动 Redis
还有 7001 ~ 7005 启动方式一样,进入到各自目录使用 redis-server redis.conf 命令启动
全部执行后,输入命令 ps -aux | grep redis -> 查看 Redis 启动情况
注:使用 redis-trib.rb 可以把启动的 Redis 实例连接在一起构建成集群,但是这里是第一次所以需要一些环境
配置环境
输入命令 yum -y install ruby ruby-devel rubygems rpm-build -> 安装 ruby
输入命令 gem install redis -> 安装 Redis 和 ruby 接口
结果报了如下错误
ERROR: Error installing redis:
redis requires Ruby version >= 2.3.0.
默认安装的 Ruby 版本为 2.0.0 的,这里需要手动安装更高的版本
输入命令 yum -y install curl -> 安装 curl
输入命令 -> 安装 rvm 前配置公钥
gpg2 —keyserver hkp://pool.sks-keyservers.net —recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
输入命令 curl -L get.rvm.io | bash -s stable -> 安装 rvm
输入命令 gem sources —add https://gems.ruby-china.com/ —remove https://rubygems.org/ -> 更改为
国内镜像
输入命令 rvm list known -> 查看 rvm 库中已知的 ruby 版本
结果发现 rvm 不是内部命令
输入命令 find / -name ‘rvm’ -> 查找 rvm 相关目录及文件
/usr/local/rvm
/usr/local/rvm/lib/rvm
/usr/local/rvm/scripts/rvm
/usr/local/rvm/src/rvm
/usr/local/rvm/src/rvm/lib/rvm
/usr/local/rvm/src/rvm/scripts/rvm
/usr/local/rvm/src/rvm/bin/rvm
/usr/local/rvm/bin/rvm输入命令 source /usr/local/rvm/scripts/rvm -> 执行脚本
这时再输入命令 rvm -v -> 查看 rvm 版本
rvm 1.29.9 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]
输入命令 rvm install 2.3.3 -> 安装指定版本的 ruby
输入命令 rvm use 2.3.3 -> 使用指定版本的 ruby
输入命令 rvm use 2.3.3 —default -> 设置为默认版本
输入命令 rvm remove 2.0.0 -> 卸载不需要的版本
输入命令 ruby —version -> 查看 ruby 版本
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]
- 输入命令 gem install redis -> 再次安装 Redis 和 ruby 接口
构建集群
输入命令 -> 使用 redis-trib.rb 构建集群
redis-trib.rb create —replicas 1 127.0.0.1:7000 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
- --replicas 1:主节点和从节点的比例
结果发现又报错了
Creating cluster
[ERR] Sorry, can’t connect to node 127.0.0.1:7000由于在 redis.conf 中配置了密码,所以需要设置访问密码
输入命令 find / -name ‘client.rb’ -> 查找 client.rb 相关目录及文件
/usr/share/ruby/xmlrpc/client.rb
/usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.1.2/lib/redis/client.rb
/usr/local/rvm/src/ruby-2.3.3/lib/xmlrpc/client.rb
/usr/local/rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/xmlrpc/client.rb输入命令 vim /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.1.2/lib/redis/client.rb -> 编辑文件
设置 password 为 redis.conf 中配置的密码,如下
DEFAULTS = {
:url => lambda { ENV["REDIS_URL"] },
:scheme => "redis",
:host => "127.0.0.1",
:port => 6379,
:path => nil,
:timeout => 5.0,
:password => "666666",
:db => 0,
:driver => nil,
:id => nil,
:tcp_keepalive => 0,
:reconnect_attempts => 1,
:reconnect_delay => 0,
:reconnect_delay_max => 0.5,
:inherit_socket => false
}
轮流输入命令 esc -> shift + 冒号 -> wq -> 回车
再次输入命令 -> 使用 redis-trib.rb 构建集群
redis-trib.rb create —replicas 1 127.0.0.1:7000 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
询问 Can I set the above configuration? (type ‘yes’ to accept):,输入 yes 即可
- 可以清楚的看到主备情况(M 为主,S 为备)
验证
使用 Redis 客户端连接集群,只需连接集群中任意一个节点即可
输入命令 redis-cli -h 127.0.0.1 -c -p 7001 -a 666666 -> 连接 Redis 集群(这里是 7001 端口)
- -h:ip 地址
- -c:连接到集群
- -p:端口
- -a:连接密码,此密码为 redis.conf 中配置的密码
输入命令 set zwc cdy -> 存数据
这时 Redis 会根据自己的算法,把此 key-value 存到对应位置
-> Redirected to slot [4802] located at 127.0.0.1:7000
OK
127.0.0.1:7000>此时发现连接的是 7001,key-value 被存入了 7000 中
输入命令 exit -> 退出
输入命令 redis-cli -h 127.0.0.1 -c -p 7003 -a 666666 -> 连接 Redis 集群(这次是 7003 端口)
输入命令 get zwc -> 取数据
127.0.0.1:7003> get zwc
-> Redirected to slot [4802] located at 127.0.0.1:7000
“cdy”
127.0.0.1:7000>证明集群搭建成功
扩展
CentOS7中常用命令行
希望能够帮助到你
over
还没有评论,来说两句吧...