上一篇踩着各种坑写了Redis集群环境之linux搭建单机版,这一篇准备就多机版集群进行搭建,主要目的一来是在上一篇的基础上进行精华提粹总结,二来是把单机版与多机版的区别进行记录。

首先软硬件环境:
  • centos6.7 linux
  • redis4.0.9
  • 两个虚拟机进行集群,一个虚拟机三个节点

环境依赖:

  • gcc-c++(redis依赖环境)
  • rvm
  • ruby2.5.1版本(必须要2.2.2以上)
  • zlib(并需要配置Makefile文件)
  • openssl(并需要配置Makefile文件)
  • redis-4.0.1.gem文件
框架思路如下:

一、第一台虚拟机A上安装配置

1.安装单个redis服务

1)安装redis依赖的c++环境,yum install gcc-c++

运行 gcc -v可以查看gcc版本,本人安装的版本是4.4.7

2)上传redis并安装

按顺序运行如下命令:

解压 tar -zxvf redis -zxvf redis-4.0.9.tar.gz

- zxvf

-z 是配合解压.GZ的

-x 解开一个包文件

-v 显示详细信息

-f 必须,表示使用归档文件

cd redis-4.0.9

make && make install 进行安装

cd redis-4.0.9/src --------> ./redis-server启动服务

开启另一个终端 cd redis-4.0.9/src --------> ./redis-cli测试成功

2.创建节点修改配置文件

在usr/local/下创建redis-cluster目录,创建三个节点7001,7002,7003,并分别创建或拷贝redis.conf配置文件,配置如下:

配置意义如下:

port 7001  //六个节点配置文件分别是7001-7003

bind 192.168.1.109    //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访,和单机集群有区别

daemonize yes        //redis后台运行

pidfile /var/run/redis_7001.pid   //pidfile文件对应7001-7003

cluster-enabled yes   //开启集群

cluster-config-file nodes_7001.conf  //保存节点配置,自动创建,自动更新对应7001-7003

cluster-node-timeout 5000    //集群超时时间,节点超过这个时间没反应就断定是宕机

appendonly yes   //存储方式,aof,将写操作记录保存到日志中

然后启动三个服务,为方便启动,可以将安装包中src目录下的redis.conf拷贝到redis-cluster目录下。

然后执行启动命令并查看如下:./redis-server 7001/redis.conf

查看命令redis启动情况命令是:ps aux | grep redis

或者查看进程命令:ps -ef | grep redis及关闭服务通过kill -9 pid 的命令,如下:

依次启动开节点服务。

3.安装依赖环境(集群需要的环境)

1)安装ruby的rvm管理软件

运行安装rvm的命令:gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275(紧接下一行数字)

462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

如下:红框是正确的安装命令

第一次执行到这里时候,忘记了执行curl -sSL https://get.rvm.io | bash -s stable,然后直接重启了,突然想起来没有执行该命令,之后

不知出了什么问题,我在此执行安装的命令

运行安装rvm的命令:gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275(紧接下一行数字)

462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

总是失败,报错大致如下(下面是网上搜的,本博主突然又安装好了,没来的及截图):

gpg: requesting key D39DC0E3 from hkp server keys.gnupg.net
gpgkeys: HTTP fetch error 6: Couldn't resolve host 'keys.gnupg.net'
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0

原因不详,网上各种查原因,没能如愿解决,只是不知道为什么有一次又执行原安装rvm的命令,又突然可以了,执行后如下:只是和第一次执行成功

的结果不太一样,上次最后一行是导入:2,这次显示的是未变:2,但是不论怎样都能看出来是成功了。

然后紧接着执行curl -sSL https://get.rvm.io | bash -s stable命令,执行后如下:

执行成功。

验证是否成功,我们查看rvm版本 rvm-v(开启一个新终端或者重启虚拟机查看rvm -v是否安装成功(可以免去source 命令去载入rvm环境的命令,因为会自动载入))

重新打开一个终端,如下就是安装成功了。

2)  安装ruby合适版本的软件(2.2.2以上)

运行命令 yum install ruby,运行成功如下:

打开一个新的终端查看安装状态

虽然安装成功,但是其版本过低不是符合我们要求的2.2.2以上,所以,在网上下载ruby高版本的源码网址是:下载ruby,我下载的是2.5.1,拷贝进linux中,在local下进行安装。

解压 tar -xzvf ruby-2.5.1.tar.gz

cd ruby-2.5.1

之后配置并编译源代码执行命令

./configure    执行后:

make  (这个执行的时间稍长需要三五分钟的)执行完成后如下:

sudo make install    运行完成后

上述命令完成后,再次在刚才打开的另一个终端查看

版本号已经变成了2.5.1,说明OK了。

3)安装zlib库并集成到ruby(需要配置Makefile文件)

a)安装zlib库

下载zlib-devel-1.2.3-29.el6.i686.rpm,上传linux local目录下并进行安装。

安装完成后:

b)集成到ruby中

进入解压安装的ruby目录下ext/zlib下,本博主这里是/usr/local/ruby-2.5.1/ext/zlib中,执行命令:ruby extconf.rb

修改Makefile 中zlib.o:$(top_srcdir)/include/ruby.h,将top_srcdir修改为../..或者

重要:ext/openssl/Makefile 增加 top_srcdir= ../..

这样后面的top_srcdir就轻易被替换掉了

并在该目录下执行命令:make && make install

//在操作下一步之前需要修改Makefile文件中的zlib.o: $(top_srcdir)/include/ruby.h,将$(top_srcdir)修改为../..如下
//zlib.o: ../../include/ruby.h
//这一步如果不修改,make时会爆出另外一个错误
//make:*** No rule to make target `/include/ruby.h', needed by `zlib.o'.  Stop
make && make install

4)安装openssl库并集成到ruby(需要配置Makefile文件)

a)安装openssl

运行 yum openssl-devel 命令(注意命令要写正确)执行成功后:

b)在ruby中集成openssl

操作同在ruby中集成zlib基本一样,不同的是这个是进入ext/openssl目录下面运行ruby extconf.rb并修改Makefile

进入/usr/local/ruby-2.5.1/ext/zlib中,执行命令:ruby extconf.rb,成功后如下:

修改Makefile中的top_srcdir为../..    注意红框为新增的内容

然后在该目录下 make && make install

cd /data/ruby-2.4.2
cd ext/openssl
ruby extconf.rb
//同样修改Makefile中的$(top_srcdir)为../..
make && make install

5)redis与ruby连接(gem install redis)

拷贝redis-4.0.1.gem文件到local文件夹下,执行 gem install redis命令,建立redis和ruby的连接。

至此,第一台虚拟机已经准备好了。

二、第二个虚拟机B上安装配置

1.复制安装好的虚拟机A,并修改对应的网卡

为了复用虚拟机A的所有配置,本博主采用完整克隆的方式进行克隆,克隆之后需要修改网卡的相关配置,请参考本博主的博客https://blog.csdn.net/zuixiaoyao_001/article/details/80641665

2.修改相应的节点及配置文件

修改节点名称如下:

修改相应配置文件,对应各个文件名称,网址绑定为当前网络连接网址

3.启动两台机器的各节点服务

4.关闭防火墙或者设置,开放集群端口,本博主直接将防火墙关闭

三、集群

1.复制redis集成工具 redis-trib.rb 到local/bin目录下

2.进行集群

输入‘’yes‘’

输入yes回车后出现如下界面就是集群成功了:

从上面的结果可以看出其中7001,7002和7004是主机,其他三个是从机。到此多机集群完成。

3.对集群进行测试:

打开一个终端,进入usr/local/bin 执行开启客户端并连接其中一个节点机命令如:./redis-cli -h 192.168.10.103 -c -p 7005

进行各种设置值得测试如下,已经OK.

到此,大功告成。哈哈哈

转载于:https://www.cnblogs.com/xiaoyao-001/p/9184792.html

Redis集群环境之linux搭建多机版---已完结,跟着一步一步来你就可以集群成功相关推荐

  1. kail linux稳定版本,Kali Linux 2020.3 稳定版已发布 更新后新功能概览

    Kali Linux 2020.3稳定版已发布,新版带来了许多令人印象深刻的更新,例如引入 zsh,并宣布从 bash 切换至 zsh 的计划(目前仍然默认使用 bash,2020.4 将默认使用 z ...

  2. 使用VirtualBox搭建分布式集群环境记录

    针对集群环境,工作中基本上都是直接申请真实的物理机,或者干脆让运维给一套多机.自己之前个人研究的时候也是使用之前从二手市场淘来的多台物理机组成的分布式集群,但是最近一不小心把其中两台搞坏了,加之确实比 ...

  3. 使用Flink集群环境进行数据处理

    前言 上篇文章记录了搭建分布式Flink集群环境的过程 搭建Flink集群环境 这篇文章咱们聊一聊Flink客户端如何对接Flink集群环境的过程 示例:Flink读取Hadoop中的文件 然后通过集 ...

  4. 开课吧课堂:Kubernetes集群环境常见问题解决

    本文主要分享了k8s集群环境下,镜像不能自动拉取.容器执行错误.镜像导入导出.集群崩溃常见问题解决. 1.Kubernetes集群环境下各个node镜像不能自动拉取 一般情况下遇到这种情况下,比较笨的 ...

  5. ORACLE集群日志收集,【RAC】Oracle RAC集群环境下日志文件结构

    在Oracle RAC环境中,对集群中的日志的定期检查是必不可少的.通过查看集群日志,可以早期定位集群环境中出现的问题,以便将问题消灭在萌芽状态.简单介绍一下有关Oracle集群环境中日志的结构,方便 ...

  6. 在群晖NAS上搭建 Git Server

    概述 事前准备 配置NAS 1 在群晖NAS上安装 Git Server 套件 2 创建用来存放git仓库的共享目录 3 创建用来使用git的普通用户 4 设置 Git Server 允许刚创建的用户 ...

  7. Redis单机和集群环境搭建

    一.安装单机版redis 1.可以自己去官网下载,当然也可以用课程提供的压缩包 # yum install gcc # wget http://downloads.sourceforge.net/tc ...

  8. redis常用命令及安全Redis集群环境搭建

    2019独角兽企业重金招聘Python工程师标准>>> redis 安装 在centos 上很简单 yum install redis 即可完成redis的安装 安装redis cd ...

  9. linux搭建完redis集群后连接不上,大师网-CentOS7 64位配置Redis集群错误处理(1)

    0.环境介绍 Linux采用CentOS7 64位 主节点: 192.168.25.137:7000 192.168.25.138:7000 192.168.25.139:7000 从节点 192.1 ...

最新文章

  1. python 多进程——使用进程池,多进程消费的数据)是一个队列的时候,他会自动去队列里依次取数据...
  2. java.util.concurrent.Exchanger应用范例与原理浅析
  3. Java 为什么不支持创建泛型化数组
  4. jshell的安装使用
  5. idea样式报错_来自强迫症患者的IDEA设置
  6. qt弹框输入密码_Android仿支付宝密码输入框
  7. STM8学习笔记---串口通信中如何自己定义通信协议
  8. 大数据时代的全能日志分析专家--Splunk安装与实践
  9. GRUB 和 GRUB2 的区别
  10. [Project Euler] Problem 48
  11. 如何在服务器上上传手游源码,【仙变3手游】跨服服务端游戏源码+架设教程+双端+后台...
  12. python 打包过程
  13. 判断质数的所有方法详解(C语言)
  14. 安装deb程序到linux指定目录,deb文件怎么安装_怎么安装deb软件
  15. 用计算机弹课间进行曲,课间进行曲(修改稿)
  16. 怎么把计算机放到硬盘里,如何将电脑的机械硬盘变成固态硬盘【详细步骤】
  17. 基于历史使用数据的虚拟机动态整合研究( 文献阅读与问题理解)
  18. 一个大学老师的2020
  19. API获取订单接口文档使用说明
  20. 机场生产运行数据统计指标-第一篇-总述

热门文章

  1. 单源最短路径(最短路)
  2. TRUNCATE TABLE 与 DELETE在删除整个表的所有记录时的区别
  3. 【指针】C++中指针的使用艺术[转]
  4. 庆祝.Net BI团队成立!
  5. 潜艇大战java代码_java潜艇大战游戏源码项目
  6. 蓝桥杯 ADV-135 算法提高 三角形面积
  7. spring boot 处理自定义注解
  8. Jquery的jqzoom插件的使用(图片放大镜)
  9. 结构化方法与面向对象方法应用比较
  10. 自定义Dialog宽度占满屏幕