Linux在线搭建Redis集群

1. 应用场景介绍

本文主要是介绍Redis集群在Linux环境下的安装讲解,其中主要包括在联网的Linux环境,全程需使用root用户,无法使用yum安装的软件,可使用第三方工具上传到/home目录下或指定目录下。

 

2. 安装步骤

2.1 用户切换及工具

使用Linux的第三方工具XShell、Xftp

 

1)安装Redis需要依托GCC环境,先检查Linux是否已经安装了GCC,如果没有安装,则需要进行安装

检查GCC是否安装,可以看看版本号

执行命令  gcc -v

 

如果已经安装了GCC,则会显示以下信息

 

如果没有任何信息,则我们可以通过命令yum install gcc-c++进行在线安装

执行命令 yum install gcc-c++

 

2.2安装Ruby

检查Ruby是否安装,可以看版本号

执行命令 ruby -v

 

Ruby没有安装,执行命令 yum install ruby 进行安装

可能会报错

 

原因如下:

redhat默认自带的yum源需要注册,才能更新,报错:

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

可替换为centos对应的源。 操作如下:

2.1.检查是否安装yum包。查看RHEL是否安装了yum,若是安装了,那么又有哪些yum包:

#rpm -qa |grep yum

 

2.2 删除redhat自带的yum

    #rpm -qa|grep yum|xargs rpm -e --nodeps(不检查依赖,直接删除rpm包)

    #rpm -qa |grep yum (查询确认)

 

2.3).下载新的yum包。使用Centos6.5yum

1) 查看版本号和系统类别:

    #cat /etc/redhat-release

    #arch

 

2.4.根据上一步,找到对应的yum包,然后下载。我的服务器对应的为:

 

下载新的yum包。使用Centos6.8yum(需要注意的是以下的软件会升级,对应的小的版本号会有不同,如果无法下载,需要到http://mirrors.163.com/centos/6/os/i386/Packages/查看最新版本。

wget http://mirrors.163.com/centos/6/os/x86_64/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm

wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm

wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm

wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-40.el6.noarch.rpm

其中wget 后对应的网站上的rpm文件,如果XShell中无法下载,需要在浏览器中输入上面的url进行下载

 

2.5.  安装yum

[root@localhost bea1]# rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm

[root@localhost bea1]# rpm -ivh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm

[root@localhostbea1]# rpm -ivh yum-3.2.29-81.el6.centos.noarch.rpm

yum-plugin-fastestmirror-1.1.30-40.el6.noarch.rpm

或者用以下命令

rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm yum-metadata-parser-1.1.2-16.el6.x86_64.rpm yum-3.2.29-81.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.30-40.el6.noarch.rpm --force --nodeps

 

注意事项:rpm -ivh yum-3.2.29-81.el6.centos.noarch.rpm

yum-plugin-fastestmirror-1.1.30-40.el6.noarch.rpm是一条语句,需要一次执行

2.6. 替换yum

2.6.1)简单方式:

cd /etc/yum.repos.d

rm -rf  *.后缀 (除redhat.repo的所有文件)
touch server.repo 文件,并添加以下内容:
[server]
name=rhel6.8_x64
baseurl=http://10.10.142.123/rhel6.8_x64/Server
gpgcheck=1
gpgkey=http://10.10.142.123/rhel6.8_x64/RPM-GPG-KEY-redhat-release

:wq!        命令保存退出,文件生效!
注意事项:                                                                            添加的内容末尾不要带空格

2.6.2)方式2

cd /etc/yum.repos.d

rm -rf *

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

 

编辑CentOS6-Base-163.repo

 

将:$releasever 全部替换为:6

 

2.7.清除原有缓存

yum clean all

重建缓存,以提高搜索安装软件的速度

yum makecache

Error: Cannot retrieve repository metadata (repomd.xml) for repository: rpmforge. 
Please verify its path and try again

解决办法:(或者把/etc/yum.repos.d下的文件全部删除,然后将能正常使用yum的同类服务器的这个目录下的文件全部拷贝过来,并删除对应的CentOS6-Base-163.repo文件

,然后yum clean all yum makecache 即可)

最后再次使用yumok

 

再次执行命令 yum install ruby

 

安装成功

2.3安装Rubygems

执行命令gem list --remote(查看本地安装的gem

 

当前Ip地址没有安装Rubygems

执行命令 yum install rubygems

 

安装成功

2.4安装Redis

执行命令

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

下载Redis

如果无法下载,需要去浏览器打开url即可

使用Xftp工具将下载的redis上传到Linux

执行命令tar -zxvf redis-3.2.4.tar.gz 解压Redis

执行命令 cd redis-3.2.4

执行命令make && make install //make 这里如果不指定PREFIX,默认将安装在/usr/local/bin下,保持默认就好

 


显示上述信息,证明安装成功

 

创建存放Redis文件的目录,命令 mkdir -p /usr/local/redis/src

 

执行命令mv redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server /usr/local/redis/src/ 将文件移到新建的目录下

创建存储配置文件的目录

 

将redis配置文件分别拷贝一份给80018002目录

进入Reids解压目录下/home/bea1/redis-3.2.4

执行命令:cp redis.conf /usr/local/redis-cluster/8001

 cp redis.conf /usr/local/redis-cluster/8002

将配置文件复制到指定目录下

 

分别修改配置文件的名称

 

修改配置文件以redis-8001.conf为例

需要修改的配置内容如下:

 

# 默认情况下,redis 在 server 上所有有效的网络接口上监听客户端连接。如果只想让它在一个或多个网络接口上监听,那你就绑定一个IP或者多个IP。多个ip空格分隔即可。

bind 127.0.0.1 bind 当前IP

 

# 指定该redis server监听的端口号。默认是6379,如果指定0则不监听。

port 6379 :命名的端口号

 

# 日志文件的位置,当指定为空字符串时,为标准输出,如果redis已守护进程模式运行,那么日志将会输出到  /dev/null ,可以修改为自己创建的目录下的文件名。

logfile "" :日志名称

 

# 是否以守护模式启动,默认为no,配置为yes时以守护模式启动,这时redis instance会将进程号pid写入默认文件/var/run/redis.pid

daemonize no :设置为yes

 

# 数据库存放目录。必须是一个目录,aof文件也会保存到该目录下。

dir ./  :存放文件的目录

 

# 配置pid文件路径。当redis以守护模式启动时,如果没有配置pidfilepidfile默认值是/var/run/redis.pid

pidfile /var/run/redis_6379.pid:当前端口.pid

 

# rdb文件的名字。

dbfilename dump.rdb : rdb文件名称

 

# 是否启用aof持久化方式 。即是否在每次更新操作后进行日志记录,默认配置是no,即在采用异步方式把数据写入到磁盘,如果不开启,可能会在断电时导致部分数据丢失。

appendonly no :改为yes

 

# 更新日志文件名,默认值为appendonly.aof 。

appendfilename "appendonly.aof":aof文件名称

 

#  默认不启动集群功能,如需成为集群的节点:cluster-enabled yes

   注意主从节点都需要开启

cluster-enabled yes :打开

 

# 根据port指定文件名,不能出现冲突

cluster-config-file nodes-6379.conf:配置为当前端口.conf

 

# 节点超时时间默认15秒,根据线上环境进行调整,不建议比15秒小

cluster-node-timeout 15000 :打开

 

#  建议设置为no,部分node挂掉依然支持读写服务

cluster-require-full-coverage yes:打开并改为no

 

与上面类似修改redis-8002.conf对应的配置

 

同理另外2台服务器直接解压Redis,无需安装rubyrubygems,因为一套Redis集群里有一台服务器安装rubyrubygems就可以了

安装Redis步骤与上面步骤一致

注意事项:

1)创建保存配置文件夹时可以根据需要搭建的集群端口号创建。

2)配置文件的端口号不能和其他配置文件的端口号相同

3)可使用命令 scp -r redis-3.2.4.tar.gz root@10.5.86.123 /home/bea1/Redis压缩文件拷贝到其他服务器

4)整个过程中使用root用户操作

5)命令能复制的就复制,减少敲错的几率

 

3. 配置集群

3.1集群发现

每个Redis实例自己是一个集群,我们通过cluster meet让各个结点互相“握手”。这也是Redis Cluster目前的一个欠缺之处:缺少结点的自动发现功能。

首先分别启动三台服务器的Reids

/usr/local/redis/src/redis-server /usr/local/redis-cluster/8001/redis-8001.conf

/usr/local/redis/src/redis-server /usr/local/redis-cluster/8002/redis-8002.conf

/usr/local/redis/src/redis-server /usr/local/redis-cluster/8003/redis-8003.conf

/usr/local/redis/src/redis-server /usr/local/redis-cluster/8004/redis-8004.conf

/usr/local/redis/src/redis-server /usr/local/redis-cluster/8005/redis-8005.conf

/usr/local/redis/src/redis-server /usr/local/redis-cluster/8006/redis-8006.conf

其中参数:

/usr/local/redis/src/redis-serverredis安装的server服务位置

/usr/local/redis-cluster/8001/redis-8001.conf:自己存放配置文件的地方

 

 

 

/usr/local/redis/src/redis-cli -c -h 10.5.86.122 -p 8001 cluster nodes(查看节点是否连接)

其中参数:

/usr/local/redis/src/redis-cli redis安装的redis-cli位置

-c : 连接

-h :   IP地址

-p : 端口号

 cluster nodes : 节点查看

 

Redis各节点握手

命令如下:

/usr/local/redis/src/redis-cli -c -h 10.5.86.122 -p 8001 cluster meet 10.5.86.122 8002

 

/usr/local/redis/src/redis-cli -c -h 10.5.86.122 -p 8001 cluster meet 10.5.86.123 8003

 

/usr/local/redis/src/redis-cli -c -h 10.5.86.122 -p 8001 cluster meet 10.5.86.123 8004

 

/usr/local/redis/src/redis-cli -c -h 10.5.86.122 -p 8001 cluster meet 10.5.86.124 8005

 

/usr/local/redis/src/redis-cli -c -h 10.5.86.122 -p 8001 cluster meet 10.5.86.124 8006

其中参数

cluster meet :握手

 

其他节点meet8001端口类似

注意事项:

1)每个节点都要和其他节点进行meet(Redis集群的前提条件)

2)IP地址和端口号小心弄错

meet之后每个节点都变成master

 

3.2角色设置:REPLICATE

结点全部握手成功后,就可以用cluster replicate命令为结点指定角色了,默认每个结点都是Master

执行命令如下:

/usr/local/redis/src/redis-cli -c -h 10.5.86.122 -p 8002 cluster replicate 613615c4136ae85031dd53bd3490fa60ee6618dc

/usr/local/redis/src/redis-cli -c -h 10.5.86.123 -p 8004 cluster replicate 13613579e7d84b6248ab054a92c36cc32659d8ef

/usr/local/redis/src/redis-cli -c -h 10.5.86.124 -p 8006 cluster replicate 3ccaecfc507b833c91f5fd404fcfa89d5c8e5b7f

其中参数:

/usr/local/redis/src/redis-cli -c -h 10.5.86.122 -p 8002 :从节点的链接

cluster replicate :角色设置

613615c4136ae85031dd53bd3490fa60ee6618dc :主节点的id标识

 

其他几个命令类似

 

 

3.3槽指派:ADDSLOTS

设置好主从关系之后,就可以用cluster addslots命令指派16384个槽的位置了

命令如下:

/usr/local/redis/src/redis-cli -c -h 10.5.86.122 -p 8001 cluster addslots {0..5000}

 

/usr/local/redis/src/redis-cli -c -h 10.5.86.123 -p 8003 cluster addslots {5001..10000}

 

/usr/local/redis/src/redis-cli -c -h 10.5.86.124 -p 8005 cluster addslots {10001..16383}

 

其中参数:

cluster addslots :槽指派

 

 

注意事项:哈希槽分配给master(主节点),主从使用的槽节点相同

 

4. 验证

1Cluster nodes查看节点是否正常

 

无fail证明正常

2cluster info 查看Redis节点信息

如下图所示,槽点有16384个正常知道的节点6个,共有3

 

正常

3)连接进入节点

使用setget测试

 

能存入值和取值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值