1. 操作系统信息:

  1. $ uname -a
  2.   Linux iZbp11d57wmumnwuihb2czZ 3.10.-957.5..el7.x86_64 # SMP Fri Feb :: UTC x86_64 x86_64 x86_64 GNU/Linux
  3. $ cat /proc/version
  4.   Linux version 3.10.-957.5..el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8. (Red Hat 4.8.-) (GCC) ) # SMP Fri Feb :: UTC
  5. $ cat /etc/redhat-release
  6.   CentOS Linux release 7.6. (Core)

三台ECS机器:172.16.214.160, 172.16.214.161, 172.16.214.163

2.  安裝 GCC 编译工具

  1. $ yum install -y gcc g++ gcc-c++ make

升级所有的包,防止出现版本过久不兼容问题

  1. $ yum -y update

关闭防火墙 节点之前需要开放指定端口

  1. systemctl stop firewalld.service

3.1. 安装redis,下载,解压,编译安装

  1. cd /opt
  2. $ wget http://download.redis.io/releases/redis-4.0.1.tar.gz
  3. $ tar xzf redis-4.0..tar.gz
  4. $ cd redis-4.0.
  5. $ make

如果因为上次编译失败,有残留的文件

  1. $ make distclean

172.16.214.160机器上创建redis目录

  1. $ mkdir /opt/redis-4.0./redis-cluster
  2. $ cd /opt/redis-4.0./redis-cluster
  3. $ mkdir

172.16.214.161机器上创建redis目录

  1. $ mkdir /opt/redis-4.0./redis-cluster
  2. $ cd /opt/redis-4.0./redis-cluster
  3. $ mkdir

172.16.214.163机器上创建redis目录

  1. $ mkdir /opt/redis-4.0./redis-cluster
  2. $ cd /opt/redis-4.0./redis-cluster
  3. $ mkdir

每个目录下创建一个redis.conf文件,内容如下(不同的端口和ip需要设置做修改)

  1. #端口号
  2. port
  3.  
  4. #默认ip为127.0.0.,需要改为其他节点机器可访问的ip,否则创建集群时无法访问对应的端口,无法创建集群
  5. bind 172.16.214.160
  6.  
  7. #redis后台运行
  8. daemonize yes

#访问密码
masterauth passwd123
requirepass passwd123

  1. #pidfile文件
  2. pidfile /var/run/redis_7000.pid
  3.  
  4. #开启集群
  5. cluster-enabled yes
  6.  
  7. #集群的配置,配置文件首次启动自动生成
  8. cluster-config-file nodes_7000.conf
  9.  
  10. #请求超时,默认15秒,可自行设置
  11. cluster-node-timeout
  12.  
  13. #aof日志开启,有需要就开启,它会每次写操作都记录一条日志
  14. appendonly yes

安装ruby (只需要在其中一台上安装)

  1. $ yum -y install ruby ruby-devel rubygems rpm-build
  2. $ gem install redis

Fetching: redis-4.1.0.gem (100%)
ERROR: Error installing redis:
redis requires Ruby version >= 2.2.2.

这一步有可能会出错,原因是ruby版本太低,解决办法安装高版本ruby

  1. $ yum install curl
  2. $ gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
  3. $ curl -L get.rvm.io | bash -s stable
  4. $ find / -name rvm -print
  5. /usr/local/rvm
  6. /usr/local/rvm/bin/rvm
  7. /usr/local/rvm/scripts/rvm
  8. /usr/local/rvm/lib/rvm
  9. /usr/local/rvm/src/rvm
  10. /usr/local/rvm/src/rvm/bin/rvm
  11. /usr/local/rvm/src/rvm/scripts/rvm
  12. /usr/local/rvm/src/rvm/lib/rvm
  13. $ source /usr/local/rvm/scripts/rvm
  14. $ rvm list known
  15. $ rvm install 2.3.
  16. $ rvm use 2.3.
  17. $ rvm use 2.3. --default
  18. $ ruby --version
  19. $ rvm remove 2.0.
  20. $ gem install redis

设置ruby访问的密码

  1. $ cd /usr/local/rvm/gems/ruby-2.3./gems/redis-4.1./lib/redis/
  2.  
  3. $ vim client.rb

将“:password”后的内容设置为你的密码, 保存退出

3.2 创建用户并设置密码,并切换到该用户身份, 修改redis目录所有权

  

  1. $ useradd admin
  2.  
  3. $ passwd admin

$ chown -R admin:admin /opt/redis-4.0.1

$ su admin

4. 为了安全,用admin用户身份启动集群

  1. #第一台机器上执行 3个节点
  2. $ for((i=0;i<=2;i++)); do /opt/redis-4.0.1/src/redis-server /opt/redis-4.0.1/redis-cluster/700$i/redis.conf; done
  3.  
  4. #第二台机器上执行 3个节点
  5. $ for((i=3;i<=5;i++)); do /opt/redis-4.0.1/src/redis-server /opt/redis-4.0.1/redis-cluster/700$i/redis.conf; done
  6.  
  7. #第三台机器上执行 3个节点
  8. $ for((i=6;i<=8;i++)); do /opt/redis-4.0.1/src/redis-server /opt/redis-4.0.1/redis-cluster/700$i/redis.conf; done

检查各 Redis 各个节点启动情况

  1. $ ps -ef | grep redis //redis是否启动成功
  2. $ netstat -tnlp | grep redis //监听redis端口

创建集群

  1. $ /opt/redis-4.0./src/redis-trib.rb create --replicas 172.16.214.160: 172.16.214.160: 172.16.214.160: 172.16.214.161: 172.16.214.161: 172.16.214.161: 172.16.214.163: 172.16.214.163: 172.16.214.163:7008

>>> Creating cluster
>>> Performing hash slots allocation on 9 nodes...
Using 4 masters:
172.16.214.160:7000
172.16.214.161:7003
172.16.214.163:7006
172.16.214.160:7001
Adding replica 172.16.214.161:7004 to 172.16.214.160:7000
Adding replica 172.16.214.163:7007 to 172.16.214.161:7003
Adding replica 172.16.214.160:7002 to 172.16.214.163:7006
Adding replica 172.16.214.161:7005 to 172.16.214.160:7001
Adding replica 172.16.214.163:7008 to 172.16.214.160:7000
M: 7c622ac191edd40dd61d9b79b27f6f69d02a5bbf 172.16.214.160:7000
slots:0-4095 (4096 slots) master
M: 44c81c15b01d992cb9ede4ad35477ec853d70723 172.16.214.160:7001
slots:12288-16383 (4096 slots) master
S: 38f03c27af39723e1828eb62d1775c4b6e2c3638 172.16.214.160:7002
replicates f1abb62a8c9b448ea14db421bdfe3f1d8075189c
M: 987965baf505a9aa43e50e46c76189c51a8f17ec 172.16.214.161:7003
slots:4096-8191 (4096 slots) master
S: 6555292fed9c5d52fcf5b983c441aff6f96923d5 172.16.214.161:7004
replicates 7c622ac191edd40dd61d9b79b27f6f69d02a5bbf
S: 2b5ba254a0405d4efde4c459867b15176f79244a 172.16.214.161:7005
replicates 44c81c15b01d992cb9ede4ad35477ec853d70723
M: f1abb62a8c9b448ea14db421bdfe3f1d8075189c 172.16.214.163:7006
slots:8192-12287 (4096 slots) master
S: eb4067373d36d8a8df07951f92794e67a6aac022 172.16.214.163:7007
replicates 987965baf505a9aa43e50e46c76189c51a8f17ec
S: 2919e041dd3d1daf176d6800dcd262f4e727f366 172.16.214.163:7008
replicates 7c622ac191edd40dd61d9b79b27f6f69d02a5bbf
Can I set the above configuration? (type 'yes' to accept): yes

  1.  

输入yes,然后回车

如何关闭集群:

  1. $ pkill redis

或者逐个关闭

  1. $ for((i=;i<=;i++)); do /opt/redis-4.0./src/redis-cli -c -h 172.16.214.160 -p $i -a passwd123 shutdown; done
  2.  
  3. $ for((i=;i<=;i++)); do /opt/redis-4.0./src/redis-cli -c -h 172.16.214.161 -p $i -a passwd123 shutdown; done
  4.  
  5. $ for((i=;i<=;i++)); do /opt/redis-4.0./src/redis-cli -c -h 172.16.214.163 -p $i -a passwd123 shutdown; done

5.集群验证

参数 -C 可连接到集群,因为 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略,-p 参数为端口号

  1. $ /opt/redis-4.0./src/redis-cli -h 172.16.214.160 -c -p 7000 -a passwd123
  2. 172.16.214.160:> set name justfortest
  3. -> Redirected to slot [] located at 172.16.214.161:
  4. OK
  5. 172.16.214.161:> get name
  6. "justfortest"
  7. 172.16.214.161:>

发现redis get name 重定向,说明集群已经是可用。

检查集群状态

  1. $ /opt/redis-4.0./src/redis-trib.rb check 172.16.214.160:
  2. >>> Performing Cluster Check (using node 172.16.214.160:)
  3. M: 8a78f3b5c1694caecfe9404f131234328481136f 172.16.214.160:
  4. slots:- ( slots) master
  5. additional replica(s)
  6. M: d4f15c233b82ec71997f72bb9c04a4fb1f44eea8 172.16.214.161:
  7. slots:- ( slots) master
  8. additional replica(s)
  9. M: 729f02e82887746b85d709e36f9b07148e6af442 172.16.214.163:
  10. slots:- ( slots) master
  11. additional replica(s)
  12. S: 33a6c6f63ad565e6a9bc76712956d2cbc9819b93 172.16.214.160:
  13. slots: ( slots) slave
  14. replicates 729f02e82887746b85d709e36f9b07148e6af442
  15. S: 0860ba2d9cadd23757b2052fe653857fd64e4363 172.16.214.163:
  16. slots: ( slots) slave
  17. replicates 8a78f3b5c1694caecfe9404f131234328481136f
  18. S: e5c21b38ed2b6b4870df5f8438259dde0687b363 172.16.214.161:
  19. slots: ( slots) slave
  20. replicates 1ec686b61ce3b8a1161382503c62748fc1985553
  21. M: 1ec686b61ce3b8a1161382503c62748fc1985553 172.16.214.160:
  22. slots:- ( slots) master
  23. additional replica(s)
  24. S: 37cf628f031d47fc80dd02247d555eb6ab179686 172.16.214.161:
  25. slots: ( slots) slave
  26. replicates 8a78f3b5c1694caecfe9404f131234328481136f
  27. S: b586d779805f2f75784bb526ae205cd672534b7a 172.16.214.163:
  28. slots: ( slots) slave
  29. replicates d4f15c233b82ec71997f72bb9c04a4fb1f44eea8
  30. [OK] All nodes agree about slots configuration.
  31. >>> Check for open slots...
  32. >>> Check slots coverage...
  33. [OK] All slots covered.

列出集群节点

  1. $ /opt/redis-4.0./src/redis-cli -h 172.16.214.160 -c -p 7000 -a passwd123
  2. 172.16.214.160:> cluster nodes
  3. d4f15c233b82ec71997f72bb9c04a4fb1f44eea8 172.16.214.161:@ master - connected -
  4. 729f02e82887746b85d709e36f9b07148e6af442 172.16.214.163:@ master - connected -
  5. 33a6c6f63ad565e6a9bc76712956d2cbc9819b93 172.16.214.160:@ slave 729f02e82887746b85d709e36f9b07148e6af442 connected
  6. 0860ba2d9cadd23757b2052fe653857fd64e4363 172.16.214.163:@ slave 8a78f3b5c1694caecfe9404f131234328481136f connected
  7. e5c21b38ed2b6b4870df5f8438259dde0687b363 172.16.214.161:@ slave 1ec686b61ce3b8a1161382503c62748fc1985553 connected
  8. 1ec686b61ce3b8a1161382503c62748fc1985553 172.16.214.160:@ master - connected -
  9. 37cf628f031d47fc80dd02247d555eb6ab179686 172.16.214.161:@ slave 8a78f3b5c1694caecfe9404f131234328481136f connected
  10. b586d779805f2f75784bb526ae205cd672534b7a 172.16.214.163:@ slave d4f15c233b82ec71997f72bb9c04a4fb1f44eea8 connected
  11. 8a78f3b5c1694caecfe9404f131234328481136f 172.16.214.160:@ myself,master - connected -

打印集群信息

  1. $ 172.16.214.160:> cluster info
  2. cluster_state:ok
  3. cluster_slots_assigned:
  4. cluster_slots_ok:
  5. cluster_slots_pfail:
  6. cluster_slots_fail:
  7. cluster_known_nodes:
  8. cluster_size:
  9. cluster_current_epoch:
  10. cluster_my_epoch:
  11. cluster_stats_messages_ping_sent:
  12. cluster_stats_messages_pong_sent:
  13. cluster_stats_messages_sent:
  14. cluster_stats_messages_ping_received:
  15. cluster_stats_messages_pong_received:
  16. cluster_stats_messages_meet_received:
  17. cluster_stats_messages_publish_received:
  18. cluster_stats_messages_received:

6. 为了安全,最后可以设置admin用户身份不能远程登录

chsh admin -s /sbin/nologin

CentOS7.6搭建redis4.0.1 cluster集群的更多相关文章

  1. CentOs7.3 搭建 Redis-4.0.1 Cluster 集群服务

    环境 VMware版本号:12.0.0 CentOS版本:CentOS 7.3.1611 三台虚拟机(IP):192.168.252.101,192.168.102..102,192.168.252. ...

  2. (转)CentOs7.3 搭建 RabbitMQ 3.6 Cluster 集群服务与使用

    RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python.Ruby..NET.Java.JMS.C.PHP.ActionScript.XMPP.STO ...

  3. Redis5.0.8 Cluster集群部署

    目录 一.Redis Cluster简介 二.部署 三.创建主库 一.Redis Cluster简介 Redis Cluster集群是一种去中心化的高可用服务,其内置的sentinel功能可以提供高可 ...

  4. Redis(二)CentOS7安装Redis4.0.10与集群搭建

    一 Redis单机安装 1 Redis下载安装 1.1 检查依赖环境(Redis是C语言开发,编译依赖gcc环境) [root@node21 redis-]$ gcc -v -bash: gcc: c ...

  5. Spark(二)CentOS7.5搭建Spark2.3.1分布式集群

    一 下载安装包 1 官方下载 官方下载地址:http://spark.apache.org/downloads.html 2  安装前提 Java8         安装成功 zookeeper  安 ...

  6. Redis3.0.7 cluster/集群 安装配置教程

    1.前言 环境:CentOS-6.7-i386-LiveDVD 安装的CentOs系统 节点: 6个节点,3个主节点.3个从节点(由于redis默认需要3个主节点,如果想每个主节点有一个从节点,这是最 ...

  7. CentOS7.4搭建kafka单结点和集群

    操作系统选择 CentOS7.4x86-64(操作系统的x86_64是跟CPU有关的,最早AMD公司开发出了一款向下兼容x86CPU,向上又扩充了指令集,具有了64位CPU的特性,这款CPU后来改名为 ...

  8. Linux Centos7 环境搭建Docker部署Zookeeper分布式集群服务实战

    Zookeeper完全分布式集群服务 准备好3台服务器: [x]A-> centos-helios:192.168.19.1 [x]B-> centos-hestia:192.168.19 ...

  9. Flink(二)CentOS7.5搭建Flink1.6.1分布式集群

    一. Flink的下载 安装包下载地址:http://flink.apache.org/downloads.html  ,选择对应Hadoop的Flink版本下载 [admin@node21 soft ...

随机推荐

  1. 初识Haskell 二:基本操作符、类型Type、数据结构

    对Discrete Mathematics Using a Computer的第一章Introduction to Haskell进行总结.环境Windows 1. 在安装了ghci后,便可以进行Ha ...

  2. python_while

    while 格式 while 条件 : pass 使用 while True : print("精忠报国") print("粉红的回忆") print(&quo ...

  3. mongodb解决只能本地连接不能远程连接问题

    本机windows7 ,装了vagrant盒子,并在盒子上装了mongodb服务,本机连接虚拟机时连不上. 解决方法: 修改虚拟机上 mongodb.conf 文件,将bind_ip = 127.0. ...

  4. Windows apache-flume-1.6.0+Kafka+Es

    apache-flume-1.6.0 kafka_2.11-1.1.0 elasticsearch1.5.1 flume配置 a1.sources = kafkaSource a1.channels ...

  5. springboot+shiro 一个项目部署多个,session名冲突问题

    问题 前几天遇到一个比较奇怪的问题, 一个项目部署多个,端口不同.启动之后在同一浏览器中进行登录,后一个登录的会把前一个登录的挤掉,导致只能登录一个. 原因 是因为sessionid相同,然后修改了s ...

  6. webpack基本用法

    1. 压缩代码(production模式) optimization: { minimizer: [new UglifyJsPlugin({ cache: true, parallel: true, ...

  7. 华硕AC66U_B1救砖或者恢复固件

    手贱,刷了个DD-WRT,然后发现无法还原固件,刷不回原厂固件.网上找不到恢复的方法.还是DD-WRT官网给力,本身就提供了恢复原厂固件的方法,是英文的.但是其中提到的一个工具,现在没有了.ASUS ...

  8. 使用 mysqltuner 检测 mysql 稳定性

    github : https://github.com/major/MySQLTuner-perl MySQLTuner是一个用Perl编写的脚本,它可以帮助您进行MySQL配置,并提出增强性能和稳定 ...

  9. Linux-ftp虚拟用户配置

    云服务器ESC 部署vsftpd 虚拟用户 说明:云服务器部署和本地服务器部署一样,都需要开通指定的相应端口,只不过云服务器需要在安全组规则中打开相应的端口允许通过. 环境说明: 对应的用户对应不同的 ...

  10. visual studio 中sstrcpy报错的问题

    项目->属性->C/C++->预处理器->预处理器定义->添加 _CRT_SECURE_NO_WARNINGS