Redis集群安装

注:官方给出的安装文档是在一台物理机安装多个Redis实例,https://redis.io/topics/cluster-tutorial,我的生产环境是多台物理机,安装起来就更简单

环境:

6台物理机 CentOS7.2-1511-minimal

ip:192.168.1.101-192.168.1.106

网络环境:内网 挂载Everything.iso作为本地yum源 ,可参考我的一篇文章 http://blog.csdn.net/github_38358734/article/details/70212412

Redis版本:Redis-3.2.5.zip

gem版本:redis-3.3.2.gem

pip版本:pip-8.1.2

python版本:2.7.5

其他环境需要:gcc make


具体步骤如下:

1、在6个节点上解压redis-3.2.5.zip 并 编译安装

   # unzip redis-3.2.5.zip

   # cd redis-3.2.5

  # make && make install

2、检查安装过程

    (1)、在redis-3.2.5目录下执行 make test 报错 tcl问题

    (2)解决报错: yum install tcl  (内网 yum --disablerepo=* --enablerepo=CentOS7-media install tcl 基于搭建好本地yum源;也可以通过yum install --dwonloadonly --downloaddir=...的方式下载安装),重装执行make tesst 显示所有正常

    (3)

zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/data0/src/redis-2.6.2/src'
make: *** [all] Error 2

解决:

make MALLOC=libc


3、部署安装cluster

    1、修改配置文件

    appendonly yes

    appendfilename "appendonly-6379.aof" 去掉注释

    cluster-enabled yes  

    cluster-config-file /opt/nodes-6379.conf  去掉注释

    cluster-node-timeout 5000  去掉注释


其中

    bind 127.0.0.1 可以注释掉

    protected-mode no 默认yes

  使用默认值时,启动集群提示connection refused 没有详细找原因,配置文件参数说明很详细

4、分别启动每一个节点

   # cd /redis-3.2.5

  #./src/redis-server redis.conf  > redis.log 2>&1 & 输出Log

  如果正常启动的话 cat redis.log 

  格式如下:

  

[root@localhost opt]# cat redis-6379.log 

6115:M 31 Aug 12:34:28.904 * Increased maximum number of open files to 10032 (it was originally set to 1024).

6115:M 31 Aug 12:34:28.906 * No cluster configuration found, I'm 92999f9840418a848f7b10c5bca0119e3b515fa4

                _._                                                  

           _.-``__ ''-._                                             

      _.-``    `.  `_.  ''-._           Redis 2.9.57 (00000000/0) 64 bit

  .-`` .-```.  ```\/    _.,_ ''-._                                   

 (    '      ,       .-`  | `,    )     Running in cluster mode

 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6380

 |    `-._   `._    /     _.-'    |     PID: 6115

  `-._    `-._  `-./  _.-'    _.-'                                   

 |`-._`-._    `-.__.-'    _.-'_.-'|                                  

 |    `-._`-._        _.-'_.-'    |           http://redis.io        

  `-._    `-._`-.__.-'_.-'    _.-'                                   

 |`-._`-._    `-.__.-'    _.-'_.-'|                                  

 |    `-._`-._        _.-'_.-'    |                                  

  `-._    `-._`-.__.-'_.-'    _.-'                                   

      `-._    `-.__.-'    _.-'                                       

          `-._        _.-'                                           

              `-.__.-'                                               


6115:M 31 Aug 12:34:28.924 # Server started, Redis version 2.9.57

6115:M 31 Aug 12:34:28.924 * The server is now ready to accept connections on port 6379

5、在每个节点上执行 ps aux | grep redis 

    如果有

  root      6109  0.6  0.9 137408  9740 pts/1    Sl   12:33   0:52 redis-server *:6379 [cluster]

    说明服务正常启动

6、集群的安装:需要安装ruby gem

    (1)yum install ruby ruby-rdoc

    (2)gem install redis (内网可以下载安装redis-3.3.2.gem)

    (3)在其中一个节点上执行(如192.168.1.101)

    #cd /redis-3.2.5

    ./src/redis-trib.rb create --replicas 1 192.168.1.101:6379 192.168.1.102:6379 192.168.1.103:6379 192.168.1.104:6379 192.168.1.105:6379 192.168.1.106:6379

    (4)出现

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

    说明集群安装完成

测试信息:./src/redis-trib.rb check 192.168.1.101:6379

出现的问题及解决:
0、缺少依赖openssl
1、不同Linux系统版本所安装的ruby版本不同(或者Yum list中的ruby版本不同),版本较新的redis需要的ruby版本较高,比如Redis-4.0.2 所使用的redis-4.0.1.gem 依赖ruby版本必须大于2.2,这时通常需要源码编译安装Ruby,安装完ruby后,需要建立ruby和gem的软连接。
2、源码安装完ruby后,执行gem install redis-4.0.1.gem ,抛出异常:

ERROR:  Loading command: install (LoadError)

    cannot load such file -- zlib
ERROR:  While executing gem ... (NameError)

    uninitialized constant Gem::Commands::InstallCommand

原因是gem运行缺少zlib库支持,解决方法是:

  1. 进入ruby源码文件夹
  1. 安装ruby自身提供的zlib包

#cd ext/zlib
#ruby ./extconf.rb
#make
#make install

3、再次安装依然报错:

make的输出中有 configuring openssl Failed to configure openssl. It will not be installed. 如上字样。

然后重新配置, 在运行configure时加上了openssl路径信息即可。 

解决方式是:

cd ruby-2.3.0$

./configure --with-openssl-dir=/software/redis-3.2.6/ext/openssl

$ make$ sudo make install

再次安装,成功。


    


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570681.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis-集群监控之Redis monitor

连续两天配置Redis 集群监控,尝试过三种开源软件,Redis-live,Redis-state,Redis-monitor ,由于内网生产环境,每一个软件的部署都费了老劲。 简单说一下,避免再有人趟坑。 1、Redis-live:此项目5年没有维护…

Magento 架构原则

Magento架构原则 》OOP体系结构和编程原则OOP体系结构和编程原则面向对象编程(OOP)设计允许软件组件具有最大的灵活性和可扩展性,允许您设计和实现高度定制的网站。面向对象原则的优点包括结合行业标准的编程设计模式以及业务逻辑与表示的严格…

vue-cli脚手架中webpack配置基础文件详解

一、前言 vue-cli是构建vue单页应用的脚手架,输入一串指定的命令行从而自动生成vue.jswepack的项目模板。这其中webpack发挥了很大的作用,它使得我们的代码模块化,引入一些插件帮我们完善功能可以将文件打包压缩,图片转base64等。…

openssl解析国密X509证书

openssl解析国密X509证书&#xff0c;把公钥拿出来重写一下就行了 x strToX509(pbCert, pulCertLen);dwRet getCertPubKey(x, &pRSAPubKeyBlob, &pECCPubKeyBlob);ECCPUBLICKEYBLOB pec { 0 };//目标公钥pec.BitLen 256;int i 0;for (i 0; i < 64; i)…

如果Python对于磁盘没有写入权限,还会运行吗?

Python如果对于磁盘没有写入权限&#xff0c;那么编译成功的字节码文件就只会存储在内存当中&#xff0c;而不会写入到磁盘&#xff0c;每次运行Python都会重新编译&#xff0c;然后运行。 转载于:https://www.cnblogs.com/chaoguo1234/p/9247642.html

maven POM总结

可继承的字段 version property 其他占坑&#xff1a; parent import scope Dependency_Management中的scope是可以被继承的&#xff0c;http://maven.apache.org/pom.html#Dependency_Management name 不可继承 artifactId 不可继承 &#xff0c; 确定打包的最终名称。 这个…

WIN10系统电脑注册表无法删除所有指定的值如何解决的方法

WIN10系统计算机注册表一直删除失败所有指定的值怎么样操作成功的步骤 1、在开始菜单点击右击&#xff0c;找到并点击【命令提示符&#xff08;管理员&#xff09;】&#xff0c;若自动跳出操作系统的人账户控制找到并点击【是】就没有问题了&#xff1b; 2、在命令提示符中填…

windows10系统的电脑如何设置密码?

电脑是21世纪不可缺少的重要工具&#xff0c;因为电脑&#xff0c;我们的生活发生了翻天覆地的变化&#xff0c;很难想象&#xff0c;如果离开电脑&#xff0c;这个世界会变成什么样子。今天&#xff0c;我就给大家介绍一下电脑如何设置密码 1、点击桌面左下角的开始按钮&…

JVM从入门到放弃——JVM内存模型

前言 Java和C或者是C相比较而言&#xff0c;最大的区别是C系列的程序员在编写代码的时候&#xff0c;总是要对程序中的变量进行释放内存的操作&#xff0c;所以在编写C或者是C的程序员需要格外的谨慎&#xff0c;因为他们对程序的内存有着很高的权限&#xff0c;这样虽然是特点…

小弟个人学习的过程!!!

小弟学生一个&#xff0c;高考没有考到一个好的学校&#xff0c;只能在不入流的学校学习软件。 之所以学习软件&#xff0c;因为听说软件行业比较赚钱。好吧&#xff01;&#xff1a; ) 因为大学学校教的太过基础&#xff0c;小弟只能开始自学之旅。 当然前期是在网上搜索教学视…

Win10强制更新怎么关闭 彻底禁止Windows自动更新

很多Win10用户来说经常会遇到这样的烦恼&#xff0c;电脑系统会不时的提醒自动更新&#xff0c;而且一等就要等很长时间&#xff0c;而通过手动禁止Windows update自带更新服务&#xff0c;往往会出现死灰复燃现象。 自己的电脑&#xff0c;竟然做不了主&#xff1f;小编表示不…

这个故事告诉你,拥有吃不胖的超能力就无忧无虑

这个故事告诉你&#xff0c;拥有吃不胖的超能力就无忧无虑了吗&#xff1f;本文转载自古代文学网 《塑胶人》剧照   导语   澳大利亚有部喜剧短片叫《塑胶人》&#xff0c;女主在约会前万事不顺&#xff0c;直到发现自己的外形居然能够像橡皮泥一样&#xff0c;用手塑造。…

同步异步 阻塞非阻塞

首先知道同步异步与阻塞非阻塞不是一个层次的概念 “阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解&#xff0c;提供一个从分布式系统角度的回答。 1.同步与异步 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous…

吴钩:打开宋代的“隐藏玩法”

访谈吴钩   焚香点茶、听风饮酒、赶集贸易、赏春游园&#xff0c;这都是世人所知晓的宋代。但养宠物、爱插花、喜“写真”、会熬夜、懂收藏&#xff0c;才是宋代的“隐藏玩法”。宋画中拥簇的市集、鲜香的食肆、考究的庭房&#xff0c;宋史中政治制度的改良、文化的雅俗共存、…

485. Max Consecutive Ones - LeetCode

Question 485. Max Consecutive Ones Solution 题目大意:给一个数组,取连续1的最大长度 思路:遍历数组,连续1就加1,取最大 Java实现: public int findMaxConsecutiveOnes(int[] nums) {if (nums null) return 0;int result 0;int tmp 0;for (int i : nums) {if (i 1) {tmp;…

Java四种引用包括强引用,软引用,弱引用,虚引用。

强引用&#xff1a; 只要引用存在&#xff0c;垃圾回收器永远不会回收Object obj new Object();//可直接通过obj取得对应的对象 如obj.equels(new Object());而这样 obj对象对后面new Object的一个强引用&#xff0c;只有当obj这个引用被释放之后&#xff0c;对象才会被释放掉…

深入浅出的排序算法-冒泡排序

前言 大家好&#xff0c;给大家带来冒泡排序算法&#xff0c;希望你们喜欢 冒泡排序 为什么这个排序要叫冒泡呢&#xff1f;为什么不叫其他名词呢&#xff1f;其实这个取名是根据排序算法的基本思路命名的&#xff0c;见名知意&#xff0c;冒泡排序&#xff0c;就是想泡泡在水里…

MacBook创建docker私有仓库docker server gave HTTP response to HTTPS client 问题处理办法

在 mac上搭建一个私有仓库&#xff0c;在向仓库push镜像时&#xff0c;会报如下错误&#xff1a; #docker push 192.168.163.131:5000/test Get https://192.168.163.131:5000/v1/_ping: http: server gave HTTP response to HTTPS client 百度了下答案发现都不试用mac版本的d…

Redis基础1(定义及基础)

Redis 定义&#xff1a;Redis是一个软件&#xff0c;帮助开发者对一台机器的内存进行操作 安装redis软件方法&#xff1a; 超链接地址&#xff1a;https://www.cnblogs.com/L5251/articles/9146881.html Python中下载依赖包 pip3 install redis 测试Redis是否安装成功 # 1、引入…

记最近分析的一个锁屏幕病毒

1.病毒运行后现象&#xff1a;病毒程序占满屏幕。鼠标依然在&#xff0c;但是无论点击哪儿都没反应。快捷键&#xff08;例如ctrlaltdelete,altf4&#xff08;关闭当前口&#xff09;,alttab&#xff08;切换窗口&#xff09;等&#xff09;全部失效。 关闭电源&#xff0c;用普…