centos7/rhel7下安装redis4.0集群

news/2024/7/8 1:40:21 标签: 数据库, ruby, 运维

相关介绍

Redis从3.0版本开始支持集群!    

集群一般由多个节点组成,节点数量至少6个才能保证组成完整高可用的集群。

每个节点需要开启配置文件中的cluster-enabled yes,让Redis运行在集群模式下。

     

测试环境

资源有限,这里使用3台虚拟机模拟6个节点(用端口区分),每台虚机2个节点,如下图:

 

:Redis默认端口:6379,这里方便起见,设定从7001~7006来区分6个节点。

 

操作步骤

Redis下载官网:https://redis.io/

1. 节点准备

每台机器都先编译安装Redis 经测试,redis-3.2.9 集群搭建方法一样

[root@server-1 ~]# tar  zxvf  redis-4.0.1.tar.gz

[root@server-1 ~]# cd redis-4.0.1

[root@server-1 redis-4.0.1]# make && make install    //不需要configure,直接make,别忘了系统先装好gcczlib-devel

[root@server-1 redis-4.0.1]# redis-server  -v    //检查一下版本

server-2和server-3操作同上;

 

2. 配置每个节点

server-1

[root@server-1 redis-4.0.1]# mkdir -p /opt/redis-cluster/{7001,7004}  //在/opt目录下新建一个redis-cluster文件夹,并在里面新建2个文件夹,用来区分节点

[root@server-1 redis-4.0.1]# cp redis.conf /opt/redis-cluster/7001/redis-7001.conf

[root@server-1 redis-4.0.1]# vim /opt/redis-cluster/7001/redis-7001.conf    //必要需要修改如下,其他细化优化的配置项可暂时保持默认

      bind 192.168.1.21             #本机IP

      port 7001                   #改为设定的端口

      daemonize yes                    #后台启动

      cluster-enabled yes          #启动集群模式

      cluster-config-file nodes-7001.conf  #集群内部配置文件,改掉端口号 

      cluster-node-timeout 15000     #节点超时时间,单位:毫秒   

[root@server-1 redis-4.0.1]# cp redis.conf /opt/redis-cluster/7004/redis-7004.conf

[root@server-1 redis-4.0.1]# vim /opt/redis-cluster/7004/redis-7004.conf

      bind 192.168.1.21             #本机IP

      port 7004                   #改为设定的端口

      daemonize yes                    #后台启动

      cluster-enabled yes          #启动集群模式

      cluster-config-file nodes-7004.conf  #集群内部配置文件,改掉端口号 

      cluster-node-timeout 15000     #节点超时时间,单位:毫秒

 

server-2

[root@server-2 redis-4.0.1]# mkdir -p /opt/redis-cluster/{7002,7005}

    ......参考server-1......    

server-3

[root@server-3 redis-4.0.1]# mkdir -p /opt/redis-cluster/{7003,7006}

    ......参考server-1......

  

3. 启动每个节点

server-1

[root@server-1 redis-4.0.1]# redis-server /opt/redis-cluster/7001/redis-7001.conf

[root@server-1 redis-4.0.1]# redis-server /opt/redis-cluster/7004/redis-7004.conf

server-2

[root@server-1 redis-4.0.1]# redis-server /opt/redis-cluster/7002/redis-7002.conf

[root@server-1 redis-4.0.1]# redis-server /opt/redis-cluster/7005/redis-7005.conf

server-3

[root@server-1 redis-4.0.1]# redis-server /opt/redis-cluster/7003/redis-7003.conf

[root@server-1 redis-4.0.1]# redis-server /opt/redis-cluster/7006/redis-7006.conf

    

4. redis-trib.rb环境准备该文件存在于redis-4.0.1/src/目录中    //只需要在其中一台上执行此步骤!!

redis-trib.rb是采用Ruby实现的Redis集群管理工具。内部通过Cluster相关命令帮助

我们简化集群创建、检查、槽迁移和均衡等常见操作,使用之前需要安装Ruby依赖环境。

:以下安装Ruby的方法如果觉得麻烦,可以参考另一篇文章:centos7/rhel7安装较高版本ruby2.2/2.3/2.4+

①安装Ruby

~]# wget http://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.gz

~]# tar zxvf  ruby-2.3.5.tar.gz

~]# cd ruby-2.3.5

ruby-2.3.5]# ./configure  --prefix=/opt/ruby

ruby-2.3.5]# make && make install

ruby-2.3.5]# ln -s /opt/ruby/bin/ruby /usr/bin/ruby

ruby-2.3.5]# ln -s /opt/ruby/bin/gem /usr/bin/gem

~]#ruby -v    //查看一下

②安装rubygem redis依赖

~]# wget http://rubygems.org/downloads/redis-3.3.0.gem

~]# gem install -l redis-3.3.0.gem

如果这步报错,如下:

~]# gem install -l redis-3.3.0.gem
ERROR: Loading command: install (LoadError)
 cannot load such file -- zlib
ERROR: While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

解决办法如下:

yum -y install zlib-devel
进入ruby源码文件夹,安装ruby自身提供的zlib包
cd ruby-2.3.5/ext/zlib
ruby ./extconf.rb
make
make install

然后再次执行gem install -l redis-4.0.1.gem,正常通过显示Successfully... 。

③检查redis-trib.rb的可用性

~]# ./redis-4.0.1/src/redis-trib.rb    //如下图所示代表可用了

 

5. 创建集群

只需要执行一条长命令,如下:

~]#./redis-4.0.1/src/redis-trib.rb create  --replicas 1 192.168.1.21:7001 192.168.1.22:7002 192.168.1.23:7003 192.168.1.21:7004 192.168.1.22:7005 192.168.1.23:7006

说明:--replicas参数指定集群中每个主节点配备几个从节点,这里设置为1。

   这里因为测试,只用了3台机器,如果部署节点使用不同的IP地址,redis-trib-rb会尽可能保证主从节点不分配在同一台机器下,

   因此会重新排序节点表顺序。节点列表顺序用于确定主从角色,先主节点之后是从节点。

   创建过程中首先会给出主从节点角色分配的计划,如下图:

最后的输出报告说明:16384个槽全部被分配完,集群创建成功。

这里需要注意给redis-trib.rb的节点地址必须是不包含任何槽/数据的节点,否则会拒绝创建集群。

  

6. 集群完整性检查

集群完整性指所有的槽都分配到存活的主节点上,只要16384个槽中有一个没有分配给节点则表示集群不完整。

可以用redis-trib.rb check命令检测之前创建的集群是否成功,check命令只需要给出集群中任意一个节点地址就可以

完成整个集群的检查工作,命令使用如下所示:

[root@server-1 ~]# ./redis-4.0.1/src/redis-trib.rb check 192.168.1.22:7002

 

结束.

 

 

    

 

转载于:https://www.cnblogs.com/ding2016/p/7892542.html


http://www.niftyadmin.cn/n/840439.html

相关文章

linux 不同用户进程通信,Linux进程间通信

#includekey_t ftok(const char * pathname,int proj_id);ipc_perm{ //结构,当进程创建ipc资源时,内核存储了ipc资源的属主和组id和访问权限等信息。uid_t uid //当前有效用户idgid_t gid //当前有效组idcuid_t cuid…

Mybatis 高级结果映射 ResultMap Association Collection

转:http://blog.csdn.net/ilovejava_2010/article/details/8180521 高级结果映射 MyBatis的创建基于这样一个思想:数据库并不是您想怎样就怎样的。虽然我们希望所有的数据库遵守第三范式或BCNF(修正的第三范式),但它们…

asp.net Forms身份验证详解

在做网站的时候,都会用到用户登录的功能。对于一些敏感的资源,我们只希望被授权的用户才能够访问,这让然需要用户的身份验证。对于初学者,通常将用户登录信息存放在Session中,笔者在刚接触到asp.net的时候就是这么做的…

用linux怎样同时删除多个目录,Linux如何删除目录下所有文件包括子目录

Linux删除目录下所有文件包括子目录方法:rm -rf 目录名。Linux操作系统是UNIX操作系统的一种克隆系统,它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力&#xff…

java语言基础与go语言基础,switch语句的区别

java语言switch语句结构 switch(表达式){ case 常量1: 语句; break; case 常量2: 语句; break; default: 语句; } 表达式可以是byte,short,char,int,enum或Sring; break可…

linux多目录挂同一个盘,linux磁盘多路径绑定

1. 配置前的准备服务器上已经有两块HBA卡,并连接在相同的磁盘上(一般每个HBA卡连接在不同的光纤交换机)。fdisk -l命令查看磁盘,将会发现有两个空间大小完全相同的磁盘。通过scsi_id命令确认两个磁盘时同一个磁盘。/sbin/scsi_id -g -u -s /block/sdc…

ASP.NET MVC 5 学习教程:添加查询

起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器添加视图修改视图和布局页控制器传递数据给视图添加模型创建连接字符串通过控制器访问模型的数据生成的代码详解使用 SQL Server LocalDBEdit方法和Edit视图详解添加查询Entity Framework 数据迁移之添加字段添加验证…

js中变量的连续赋值

今天遇到了一个连续赋值的经典案例,网友们给出的答案也是五花八门,看起来有些繁琐,我也来说说自己的看法。 下面就是这个经典案例: var a {n: 1}; var b a; a.x a {n: 2}; console.log(a);console.log(…