一.服务器准备

本文准备了3台服务器 , 分别是

172.18.0.231

172.18.0.232

172.18.0.233

每台运行2个redis实例, 端口分别为7000 7001 ,即总共6个redis节点

二.安装必要包并配置环境

  1. yum install gcc

调整服务器参数 , 以得到最大性能

1.调整服务器最大文件打开数

打开文件 /etc/security/limits.conf 在最后加入以下文件 , 并保存

* 代表所有方式

- 代表 both hard and soft

  1. * - nofile
  2. * - nproc

打开文件 /etc/pam.d/login 在文件最后加上 , 先检查系统,确保该文件存在

  1. session required /lib64/security/pam_limits.so

2.关闭THP

在root下执行

  1. echo never > /sys/kernel/mm/transparent_hugepage/enabled
  2. echo never > /sys/kernel/mm/transparent_hugepage/defrag

把这段命令加入到 /etc/rc.local中 , 确保每次启动后都执行该命令

注意 : 如果redis处于启动状态 , 必须重启redis才能使该配置生效..所以最好在装redis之前就关闭

3.调整系统tcp参数

打开文件 /etc/sysctl.conf

  1. #设置最大连接数
  2. net.core.somaxconn = 32768
  3. #内存分配策略 1表示内核允许分配所有的物理内存,而不管当前的内存状态如何
  4. vm.overcommit_memory = 1

执行以下命令使配置生效

  1. sysctl p

三.防火墙配置(踩坑)

redis中,除了自身需要的端口之外(本文是7000和7001) , 如果需要建立集群 , 则还需要开放总线端口 , 总线端口是数据端口+10000

也就是 每台机器需要开放4个端口 , 分别为 7000 17000 7001 17001

附上一份iptable的配置脚本:

  1. #!/bin/sh
  2. iptables -P INPUT ACCEPT
  3. iptables -F
  4. iptables -X
  5. iptables -Z
  6. iptables -A INPUT -i lo -j ACCEPT
  7. iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  8. iptables -A INPUT -p tcp --dport 21 -j ACCEPT
  9. iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  10. iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  11. iptables -A INPUT -p tcp --dport 7000 -j ACCEPT
  12. iptables -A INPUT -p tcp --dport 7001 -j ACCEPT
  13. iptables -A INPUT -p tcp --dport 17000 -j ACCEPT
  14. iptables -A INPUT -p tcp --dport 17001 -j ACCEPT
  15. iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
  16. iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  17. iptables -P INPUT DROP
  18. iptables -P OUTPUT ACCEPT
  19. iptables -P FORWARD DROP
  20. service iptables save
  21. systemctl restart iptables.service

四.下载并安装redis 5

  1. #下载
  2. curl -O http://download.redis.io/releases/redis-5.0.5.tar.gz
  3. tar zxvf redis-5.0.5.tar.gz
  4. cd redis-5.0.5
  5. make

建立redis文件夹(文件夹随意 , 只是存放配置文件使用)

  1. mkdir -p /home/redishome/redis_7000
  2. mkdir -p /home/redishome/redis_7001

写redis配置文件 , 例子是7000端口的配置 , 可复制一份,更改端口变成7001的配置

  1. [root@localhost redis_7000]# more redis.conf
  2. #载入默认配置
  3. include /home/redishome/redis/redis-5.0.5/redis.conf
  4. #端口
  5. port 7000
  6. #启用集群模式
  7. cluster-enabled yes
  8. cluster-config-file nodes_7000.conf
  9. #超时时间
  10. cluster-node-timeout 5000
  11. appendonly yes
  12. #后台运行
  13. daemonize yes
  14. #非保护模式
  15. protected-mode no
  16. #文件存放路径
  17. dir /home/redishome/redis_7000
  18. #运行pid存放位置
  19. pidfile /var/run/redis_7000.pid
  20. #集群密码
  21. masterauth FEEA50BC03C64BBFB6E22CAC521985E0
  22. #访问密码
  23. requirepass FEEA50BC03C64BBFB6E22CAC521985E0
  24. #取消本机限制
  25. bind 0.0.0.0
  26. #禁用危险命令
  27. rename-command FLUSHALL "ACA1B8FF9A8B2483C919C7943E74D674B"
  28. rename-command FLUSHDB "A7B682D816AF048AF840E1E48F6B0484B"
  29. rename-command KEYS "AEEB6C33C536646F2B8D9096BA58BD290"
  30. rename-command CONFIG "A7A59439DB1A54C16AC8C143AD289CD2B"

三台服务器全部使用一样的配置(注意 , 密码也需要所有集群都一样)

安装好之后,每台服务器编制启动文件,redis-start.sh

  1. #!/bin/sh
  2. /home/redishome/redis/redis-5.0.5/src/redis-server /home/redishome/redis_7000/redis.conf &
  3. /home/redishome/redis/redis-5.0.5/src/redis-server /home/redishome/redis_7001/redis.conf &

直接启动即可.

五 . 建立集群

  1. redis-cli -a FEEA50BC03C64BBFB6E22CAC521985E0 --cluster create \
  2. 172.18.0.231:7000 172.18.0.231:7001 \
  3. 172.18.0.232:7000 172.18.0.232:7001 \
  4. 172.18.0.233:7000 172.18.0.233:7001 \
  5. --cluster-replicas 1

其中 --cluster-replicas 1 代表建立的是1主1从的方式 (按照顺序配置) , 2代表1主2从

执行结果 :  (注意 , 中间提示确认时, 一定要打入yes全部,而不是y)

  1. [root@localhost ~]# redis-cli -a FEEA50BC03C64BBFB6E22CAC521985E0 --cluster create 172.18.0.231:7000 172.18.0.231:7001 172.18.0.232:7000 172.18.0.232:7001 172.18.0.233:7000 172.18.0.233:7001 --cluster-replicas 1
  2. Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
  3. >>> Performing hash slots allocation on 6 nodes...
  4. Master[0] -> Slots 0 - 5460
  5. Master[1] -> Slots 5461 - 10922
  6. Master[2] -> Slots 10923 - 16383
  7. Adding replica 172.18.0.232:7001 to 172.18.0.231:7000
  8. Adding replica 172.18.0.233:7001 to 172.18.0.232:7000
  9. Adding replica 172.18.0.231:7001 to 172.18.0.233:7000
  10. M: f40abe2e5c79d06fbe803baa01b7f0501a8bcf3e 172.18.0.231:7000
  11. slots:[0-5460] (5461 slots) master
  12. S: 502b9e3a8f1ed01653d0f3f93946f9c3cea5b0cc 172.18.0.231:7001
  13. replicates 9fa843537e5cdd34bb37f8117c51f86aa311b918
  14. M: b73514294398fc8f45d2cb163499e2ef046cc6bb 172.18.0.232:7000
  15. slots:[5461-10922] (5462 slots) master
  16. S: 9542274db9dc6ee9f8b7ef91f9c3eb22351cbf88 172.18.0.232:7001
  17. replicates f40abe2e5c79d06fbe803baa01b7f0501a8bcf3e
  18. M: 9fa843537e5cdd34bb37f8117c51f86aa311b918 172.18.0.233:7000
  19. slots:[10923-16383] (5461 slots) master
  20. S: cc2d72c68ca90732232ecef03d66e65de25e62d0 172.18.0.233:7001
  21. replicates b73514294398fc8f45d2cb163499e2ef046cc6bb
  22. Can I set the above configuration? (type 'yes' to accept): yes
  23. >>> Nodes configuration updated
  24. >>> Assign a different config epoch to each node
  25. >>> Sending CLUSTER MEET messages to join the cluster
  26. Waiting for the cluster to join
  27. ..
  28. >>> Performing Cluster Check (using node 172.18.0.231:7000)
  29. M: f40abe2e5c79d06fbe803baa01b7f0501a8bcf3e 172.18.0.231:7000
  30. slots:[0-5460] (5461 slots) master
  31. 1 additional replica(s)
  32. M: 9fa843537e5cdd34bb37f8117c51f86aa311b918 172.18.0.233:7000
  33. slots:[10923-16383] (5461 slots) master
  34. 1 additional replica(s)
  35. S: 502b9e3a8f1ed01653d0f3f93946f9c3cea5b0cc 172.18.0.231:7001
  36. slots: (0 slots) slave
  37. replicates 9fa843537e5cdd34bb37f8117c51f86aa311b918
  38. S: cc2d72c68ca90732232ecef03d66e65de25e62d0 172.18.0.233:7001
  39. slots: (0 slots) slave
  40. replicates b73514294398fc8f45d2cb163499e2ef046cc6bb
  41. M: b73514294398fc8f45d2cb163499e2ef046cc6bb 172.18.0.232:7000
  42. slots:[5461-10922] (5462 slots) master
  43. 1 additional replica(s)
  44. S: 9542274db9dc6ee9f8b7ef91f9c3eb22351cbf88 172.18.0.232:7001
  45. slots: (0 slots) slave
  46. replicates f40abe2e5c79d06fbe803baa01b7f0501a8bcf3e
  47. [OK] All nodes agree about slots configuration.
  48. >>> Check for open slots...
  49. >>> Check slots coverage...
  50. [OK] All 16384 slots covered.

集群建立就成功了.

六 . 其他命令

  1. #批量kill掉所有redis进程
  2. ps -ef|grep redis|grep -v grep|awk '{print "kill -9 " $2}' | sh
  1. #查看集群状态
  2. redis-cli -c -p 7000 -a FEEA50BC03C64BBFB6E22CAC521985E0
  3. #查看节点明细情况
  4. > cluster nodes
  5. #查看集群情况
  6. > cluster info

CentOS7安装配置redis5集群的更多相关文章

  1. Linux中安装配置spark集群

    一. Spark简介 Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发.Spark基于map reduce 算法模式实现的分布式计算,拥有Hadoop MapReduce所 ...

  2. Linux中安装配置hadoop集群

    一. 简介 参考了网上许多教程,最终把hadoop在ubuntu14.04中安装配置成功.下面就把详细的安装步骤叙述一下.我所使用的环境:两台ubuntu 14.04 64位的台式机,hadoop选择 ...

  3. CentOS7 安装Redis Cluster集群

    上一篇中已经讲到了如何安装单击版Redis,这一篇我们来说下如何安装Cluster,关于哨兵模式这里我就不写文章安装了,有兴趣的同学可以自己去研究,哨兵模式可以在主从模式下在创建三台机器的哨兵集群监控 ...

  4. 安装配置Spark集群

    首先准备3台电脑或虚拟机,分别是Master,Worker1,Worker2,安装操作系统(本文中使用CentOS7). 1.配置集群,以下步骤在Master机器上执行 1.1.关闭防火墙:syste ...

  5. 离线环境下使用二进制方式安装配置Kubernetes集群

    本文环境 Redhat Linux 7.3,操作系统采用的最小安装方式. Kubernetes的版本为 V1.10. Docker版本为18.03.1-ce. etcd 版本为 V3.3.8. 1. ...

  6. hadoop集群环境搭建之安装配置hadoop集群

    在安装hadoop集群之前,需要先进行zookeeper的安装,请参照hadoop集群环境搭建之zookeeper集群的安装部署 1 将hadoop安装包解压到 /itcast/  (如果没有这个目录 ...

  7. 架构(三)MongoDB安装配置以及集群搭建

    一 安装 1.1 下载MongoDB 我个人不太喜欢用wget url, 之前出现过wget下载的包有问题的情况 https://fastdl.mongodb.org/linux/mongodb-li ...

  8. elasticsearch安装与使用(2)-- centos7 安装测试的集群工具elasticsearch head

    elasticsearch-head是elasticsearch(下面称ES)比较普遍使用的可监控.测试等功能的集群管理工具,是由H5编写的单独的网页程序.使用方法网上很多,这里教大家一个超简单安装h ...

  9. Hadoop2.2集群安装配置-Spark集群安装部署

    配置安装Hadoop2.2.0 部署spark 1.0的流程 一.环境描写叙述 本实验在一台Windows7-64下安装Vmware.在Vmware里安装两虚拟机分别例如以下 主机名spark1(19 ...

随机推荐

  1. linux系统rwx(421)、777权限详解

    摘要 linux的常见权限,mark一下 常用的linux文件权限如下: 444 r--r--r-- 600 rw------- 644 rw-r--r-- 666 rw-rw-rw- 700 rwx ...

  2. Python 自学笔记(一)

    1.打印函数 1-1.print()函数 1-1-1.引号的用法 一.单引号与双引号:直接输出 二.三引号:保留原来的格式 1-2.转义字符 转义字符是一种特殊的字符常量,在编程语言中,我们用转义字符 ...

  3. C++ STL nth_element

    #include <iostream>#include <algorithm>#include <deque> using namespace std; int m ...

  4. qt application logging

    “AnalysisPtsDataTool201905.exe”(Win32): 已加载“F:\OpencvProject\ZY-Project\x64\Debug\AnalysisPtsDataToo ...

  5. jpa基于按annotation的hibernate主键生成策略

    JPA注解持久化类很方便,需要jar包:ejb3-persistence.jar下载 一.JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hib ...

  6. 【JS新手教程】弹出两层div,及在LODOP内嵌上层

    前面的博文有个简单的弹出div层[JS新手教程]浏览器弹出div层1,有一层,不过为了提示,一般会不让用户可以点击该提示之外的地方的.如果让用户弹出层后,把其他的按钮和链接都设置不可用应该比较麻烦,如 ...

  7. LomBok插件--模型类注解

    Data注解,ToString注解都是Lombok提供的注解. Lombok是一个实用的java工具,使用它可以消除java代码的臃肿,Lombok提供一系列的注解,使用这些注解可 以不用定义gett ...

  8. matlab boundaries和fchcode函数无法执行的解决办法 未定义与 'double' 类型的输入参数相对应的函数 'boundaries'

    在测试代码时发现,自己的matlab无法执行Freeman链码函数: boundaries和fchcode函数都无法正常运行: 需要在自己的工作目录中添加如下函数: boundaries   fchc ...

  9. MyBatis接口式编程

    MyBatis使用接口连接数据库 之前学习了如何传统的使用MyBatis连接数据库,今天学习如何使用更方便快捷的方式练级数据库.使用接口连接数据库 https://www.cnblogs.com/li ...

  10. STL标准模板库之set

    目录 一.关联式容器 二.什么是set? 特点 优缺点和适用场景: 三.定义及初始化 四.基本操作 1)容量函数 2)修改函数 3)迭代器 4)其他函数 五.与序列容器的不同点 一.关联式容器 关联式 ...