本地Linux环境下部署Redis集群详解

ps:博主只是自己在本地部署着玩的,并不是专业运维人员,顺便说一下部署的过程中踩过的一些坑

redis单机模式的搭建

ps:单机模式部署非常简单,大致说一下就好了

1.首先去官网下载一个3.0以上的redis包,因为redis3.0以上才支持集群模式

下载地址:https://redis.io/download

2.将下载文件放到/usr/local

(这里使用文件传输工具,直接将下载的redis压缩包放在该目录下)

3.解压redis压缩包(博主下载的是3.0.0的)

tar -zxvf redis-3.0.0.tar.gz

4.进入到解压后的redis文件夹内

cd /usr/local/redis-3.0.0

5.进行编译命令

make

这个时候如果没有安装gcc的话会报gcc:命令未找到之类的错误,如果报类似错误的话就输入一下命令

yum -y install gcc automake autoconf libtool make 

如果装完gcc在make过程中仍报缺少包或者什么错误建议删去解压后的文件重新解压,问题全部解决

6.将该redis安装到指定的目录

 cd /usr/local/redis-3.0.0 

make PREFIX=/usr/local/redis install

7.进入redis目录,将redis.conf拷贝到安装路径:cd /usr/local/redis

mkdir conf

cp /usr/local/redis-3.0.0/redis.conf  /usr/local/redis/bin

8.启动redis:cd /usr/local/redis ./bin/redis-server ./redis.conf  //在何处启动的server,一些配置文件就默认在该处生成(如果配置的相对路径)

至此redis单机就已经配置完毕了,下面开始配置redis集群模式

 

redis集群模式的搭建

1.首先要安装ruby环境

安装ruby:

yum install ruby

安装rubygems环境:

yum install rubygems

(这两步是安装redis集群的必备环境,这是由于集群管理工具redis-trib.rb依赖ruby环境)

2.安装ruby和redis的接口程序

(ps:这里就需要使用gem包了,但是这个包目前已经绝版了,不过在网上还是可以下载到的,下面给出链接和教程)

  2.1 下载ruby环境下Redis的驱动

(ps:这里驱动包和redis并不是非要严格控制成相同版本,可以版本不同,这里下载的是3.2.2版本)

驱动链接:https://rubygems.org/gems/redis/versions/3.2.2

点击下载后就行了。。。。回到正题

拷贝下载好的redis-3.2.2.gem至/usr/local。执行:

gem install /usr/local/redis-3.2.2.gem

这里可能会报ERROR:  Error installing redis redis requires Ruby version >= 2.2.2.的错误

说明这里的ruby版本过低,系统默认的是2.0.0,我们需要使用高于2.2.2版本的

所以需要将 ruby 版本升级到 2.2.2 或以上

解决办法:

首先我们需要安装curl,因为RVM需要通过CURL来进行下载

yum install curl

安装curl完成后,使用curl安装rvm

curl -L get.rvm.io | bash -s stable

关于RVM的安装方法,除了以上安装方法,《 ruby 中国官网 》也介绍了RVM的安装,安装方法如下:
这里所有的命令都是在用户权限下操作的,任何命令最好都不要用 sudo,
[root@localhost ~]# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
[root@localhost ~]# curl -sSL https://get.rvm.io | bash -s stable

查看rvm中管理的所有ruby版本

source /usr/local/rvm/scripts/rvm 

rvm list known

选择一个你喜欢的版本进行安装,但首先提醒一下,你所选择的版本不能低于 " 2.0.0 " 就可以了,输入命令 " rvm install 2.3.4 " 进行安装

使用刚才安装完成的Ruby版本,输入命令 " rvm use 2.3.4 " 

移除系统中默认的版本号,输入命令 " rvm remove 2.0.0 " 进行移除

为了保险起见还是要检查一下(我个人习惯),输入命令 " ruby --version "

3.建立redis集群节点

(1)建立存放redis群的文件夹及子文件夹(用于存放每个redis节点,我创建了6个,三主三从):

cd /usr/local    

mkdir redis-cluster 

mkdir redis-cluster/7001

mkdir redis-cluster/7002

mkdir redis-cluster/7003

mkdir redis-cluster/7004

mkdir redis-cluster/7005

mkdir redis-cluster/7006

(2)将刚刚安装的单机redis的/usr/local/redis文件夹拷贝到每个700X文件夹下

cp /usr/local/redis /usr/local/redis-cluster/7001

....

(3)修改每个700X目录下的redis.conf配置文件:

port 700X   //各自监听的端口
#bind 127.0.0.1  //这里不绑定,默认允许所有ip访问,或者bind 0.0.0.0
cluster-enabled yes   //开启集群
cluster-node-timeout 15000   //15时间内没有收到对方的回复,则单方面认为端节点挂掉


3.启动各个redis:分别进入7001、7002、...7006目录,执行

./redis-server ./redis.conf

执行该命令时可能会出现权限不足的错误,可以执行以下命令去各个子节点下来修改

chmod -R 777 路径

-R 表示递归

777 表示权限级别(不懂得可以百度下)

路径 表示redis-server和redis.conf的所在文件夹(尽量只修改这两个文件所在的文件夹权限) 

4.创建集群:进入到redis-trib.rb所在的目录,一般情况下经过前几步后会自动生成redis-trib.rb文件,但是有时候可能哪里会出现问题不能生成该文件,这个时候可以去网上下载一个,这里没有严格要求

下载Redis官方提供的创建Redis集群的ruby脚本文件redis-trib.rb,路径如下:

https://raw.githubusercontent.com/MSOpenTech/redis/3.0/src/redis-trib.rb

打开该链接如果没有下载,而是打开一个页面,那么将该页面保存为redis-trib.rb

通过文件传输上传到liunx中的redis-cluster目录下

5.执行创建集群的命令

ruby ./redis-trib.rb create --replicas 1 172.16.3.195:7001 172.16.3.195:7002 172.16.3.195:7003

172.16.3.195:7004 172.16.3.195:7005 172.16.3.195:7006

(ps:由于我们在redis.conf里没有绑定任何ip因此正常来讲是可以允许任何ip进行访问的,所以这里你尽量设置成本地能访问的ip,因为我本地能和虚拟机相互ping通,所以这里我设置的是我虚拟机的ip)

(ps:如果无法ping通建议看一下本机和虚拟机的防火墙有没有关闭

一、iptables防火墙
1、基本操作

# 查看防火墙状态

service iptables status  

# 停止防火墙

service iptables stop  

# 启动防火墙

service iptables start  

# 重启防火墙

service iptables restart  

# 永久关闭防火墙

chkconfig iptables off  

# 永久关闭后重启

chkconfig iptables on 

二、firewall防火墙
1、查看firewall服务状态

systemctl status firewalld

出现Active: active (running)切高亮显示则表示是启动状态。

出现 Active: inactive (dead)灰色表示停止,看单词也行。
2、查看firewall的状态

firewall-cmd --state
3、开启、重启、关闭、firewalld.service服务

# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop

ps:replicas指定为1表示每个主节点有一个从节点 ,如果为0的话那么建立的就全是master

(1)如果出现[ERR] Sorry, can't connect to node错误:

     1.ruby 和rubygem 版本太低,安装新版本。查看gem版本和redis版本(redis-cli -v可查看redis版本)

     2.查看reids配置文件,bind绑定的允许连接的ip是否正确。

     3.是否redis配置文件还是使用了密码,使用了密码也可能导致这个错误。

(2)如果出现[ERR] Node 127.0.0.1:7005 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0:

表示集群时,之前的redis已有数据,那么登录到7005的redis中,执行FLUSHALL即可

(3)如果出现ERR Slot 0 is already busy (Redis::CommandError):

用redis-cli登录到每个节点执行flushall和cluster reset即可2.6进入集群:./redis-cli -c  -p 7001 -h 172.16.3.195(-c即-cluster 表示进入集群模式,不加表示进入单机redis)

6.检查集群是否成功:随便选择700X文件夹进入到redis-cli所在的文件夹内

./redis-cli -c  -p 7001 -h 172.16.3.195进入集群

进入集群后,键入cluster info,显示cluster_state:ok,表示成功

键入cluster nodes,将会显示ip的主从信息

Windows环境下部署redis集群:https://www.cnblogs.com/tommy-huang/p/6240083.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值