CentOS7安装配置redis5集群
一.服务器准备
本文准备了3台服务器 , 分别是
172.18.0.231
172.18.0.232
172.18.0.233
每台运行2个redis实例, 端口分别为7000 7001 ,即总共6个redis节点
二.安装必要包并配置环境
- yum install gcc
调整服务器参数 , 以得到最大性能
1.调整服务器最大文件打开数
打开文件 /etc/security/limits.conf 在最后加入以下文件 , 并保存
* 代表所有方式
- 代表 both hard and soft
- * - nofile
- * - nproc
打开文件 /etc/pam.d/login 在文件最后加上 , 先检查系统,确保该文件存在
- session required /lib64/security/pam_limits.so
2.关闭THP
在root下执行
- echo never > /sys/kernel/mm/transparent_hugepage/enabled
- echo never > /sys/kernel/mm/transparent_hugepage/defrag
把这段命令加入到 /etc/rc.local中 , 确保每次启动后都执行该命令
注意 : 如果redis处于启动状态 , 必须重启redis才能使该配置生效..所以最好在装redis之前就关闭
3.调整系统tcp参数
打开文件 /etc/sysctl.conf
- #设置最大连接数
- net.core.somaxconn = 32768
- #内存分配策略 1表示内核允许分配所有的物理内存,而不管当前的内存状态如何
- vm.overcommit_memory = 1
执行以下命令使配置生效
- sysctl –p
三.防火墙配置(踩坑)
redis中,除了自身需要的端口之外(本文是7000和7001) , 如果需要建立集群 , 则还需要开放总线端口 , 总线端口是数据端口+10000
也就是 每台机器需要开放4个端口 , 分别为 7000 17000 7001 17001
附上一份iptable的配置脚本:
- #!/bin/sh
- iptables -P INPUT ACCEPT
- iptables -F
- iptables -X
- iptables -Z
- iptables -A INPUT -i lo -j ACCEPT
- iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- iptables -A INPUT -p tcp --dport 21 -j ACCEPT
- iptables -A INPUT -p tcp --dport 80 -j ACCEPT
- iptables -A INPUT -p tcp --dport 443 -j ACCEPT
- iptables -A INPUT -p tcp --dport 7000 -j ACCEPT
- iptables -A INPUT -p tcp --dport 7001 -j ACCEPT
- iptables -A INPUT -p tcp --dport 17000 -j ACCEPT
- iptables -A INPUT -p tcp --dport 17001 -j ACCEPT
- iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
- iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
- iptables -P INPUT DROP
- iptables -P OUTPUT ACCEPT
- iptables -P FORWARD DROP
- service iptables save
- systemctl restart iptables.service
四.下载并安装redis 5
- #下载
- curl -O http://download.redis.io/releases/redis-5.0.5.tar.gz
- tar zxvf redis-5.0.5.tar.gz
- cd redis-5.0.5
- make
建立redis文件夹(文件夹随意 , 只是存放配置文件使用)
- mkdir -p /home/redishome/redis_7000
- mkdir -p /home/redishome/redis_7001
写redis配置文件 , 例子是7000端口的配置 , 可复制一份,更改端口变成7001的配置
- [root@localhost redis_7000]# more redis.conf
- #载入默认配置
- include /home/redishome/redis/redis-5.0.5/redis.conf
- #端口
- port 7000
- #启用集群模式
- cluster-enabled yes
- cluster-config-file nodes_7000.conf
- #超时时间
- cluster-node-timeout 5000
- appendonly yes
- #后台运行
- daemonize yes
- #非保护模式
- protected-mode no
- #文件存放路径
- dir /home/redishome/redis_7000
- #运行pid存放位置
- pidfile /var/run/redis_7000.pid
- #集群密码
- masterauth FEEA50BC03C64BBFB6E22CAC521985E0
- #访问密码
- requirepass FEEA50BC03C64BBFB6E22CAC521985E0
- #取消本机限制
- bind 0.0.0.0
- #禁用危险命令
- rename-command FLUSHALL "ACA1B8FF9A8B2483C919C7943E74D674B"
- rename-command FLUSHDB "A7B682D816AF048AF840E1E48F6B0484B"
- rename-command KEYS "AEEB6C33C536646F2B8D9096BA58BD290"
- rename-command CONFIG "A7A59439DB1A54C16AC8C143AD289CD2B"
三台服务器全部使用一样的配置(注意 , 密码也需要所有集群都一样)
安装好之后,每台服务器编制启动文件,redis-start.sh
- #!/bin/sh
- /home/redishome/redis/redis-5.0.5/src/redis-server /home/redishome/redis_7000/redis.conf &
- /home/redishome/redis/redis-5.0.5/src/redis-server /home/redishome/redis_7001/redis.conf &
直接启动即可.
五 . 建立集群
- 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
其中 --cluster-replicas 1 代表建立的是1主1从的方式 (按照顺序配置) , 2代表1主2从
执行结果 : (注意 , 中间提示确认时, 一定要打入yes全部,而不是y)
- [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
- Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
- >>> Performing hash slots allocation on 6 nodes...
- Master[0] -> Slots 0 - 5460
- Master[1] -> Slots 5461 - 10922
- Master[2] -> Slots 10923 - 16383
- Adding replica 172.18.0.232:7001 to 172.18.0.231:7000
- Adding replica 172.18.0.233:7001 to 172.18.0.232:7000
- Adding replica 172.18.0.231:7001 to 172.18.0.233:7000
- M: f40abe2e5c79d06fbe803baa01b7f0501a8bcf3e 172.18.0.231:7000
- slots:[0-5460] (5461 slots) master
- S: 502b9e3a8f1ed01653d0f3f93946f9c3cea5b0cc 172.18.0.231:7001
- replicates 9fa843537e5cdd34bb37f8117c51f86aa311b918
- M: b73514294398fc8f45d2cb163499e2ef046cc6bb 172.18.0.232:7000
- slots:[5461-10922] (5462 slots) master
- S: 9542274db9dc6ee9f8b7ef91f9c3eb22351cbf88 172.18.0.232:7001
- replicates f40abe2e5c79d06fbe803baa01b7f0501a8bcf3e
- M: 9fa843537e5cdd34bb37f8117c51f86aa311b918 172.18.0.233:7000
- slots:[10923-16383] (5461 slots) master
- S: cc2d72c68ca90732232ecef03d66e65de25e62d0 172.18.0.233:7001
- replicates b73514294398fc8f45d2cb163499e2ef046cc6bb
- Can I set the above configuration? (type 'yes' to accept): yes
- >>> Nodes configuration updated
- >>> Assign a different config epoch to each node
- >>> Sending CLUSTER MEET messages to join the cluster
- Waiting for the cluster to join
- ..
- >>> Performing Cluster Check (using node 172.18.0.231:7000)
- M: f40abe2e5c79d06fbe803baa01b7f0501a8bcf3e 172.18.0.231:7000
- slots:[0-5460] (5461 slots) master
- 1 additional replica(s)
- M: 9fa843537e5cdd34bb37f8117c51f86aa311b918 172.18.0.233:7000
- slots:[10923-16383] (5461 slots) master
- 1 additional replica(s)
- S: 502b9e3a8f1ed01653d0f3f93946f9c3cea5b0cc 172.18.0.231:7001
- slots: (0 slots) slave
- replicates 9fa843537e5cdd34bb37f8117c51f86aa311b918
- S: cc2d72c68ca90732232ecef03d66e65de25e62d0 172.18.0.233:7001
- slots: (0 slots) slave
- replicates b73514294398fc8f45d2cb163499e2ef046cc6bb
- M: b73514294398fc8f45d2cb163499e2ef046cc6bb 172.18.0.232:7000
- slots:[5461-10922] (5462 slots) master
- 1 additional replica(s)
- S: 9542274db9dc6ee9f8b7ef91f9c3eb22351cbf88 172.18.0.232:7001
- slots: (0 slots) slave
- replicates f40abe2e5c79d06fbe803baa01b7f0501a8bcf3e
- [OK] All nodes agree about slots configuration.
- >>> Check for open slots...
- >>> Check slots coverage...
- [OK] All 16384 slots covered.
集群建立就成功了.
六 . 其他命令
- #批量kill掉所有redis进程
- ps -ef|grep redis|grep -v grep|awk '{print "kill -9 " $2}' | sh
- #查看集群状态
- redis-cli -c -p 7000 -a FEEA50BC03C64BBFB6E22CAC521985E0
- #查看节点明细情况
- > cluster nodes
- #查看集群情况
- > cluster info
CentOS7安装配置redis5集群的更多相关文章
- Linux中安装配置spark集群
一. Spark简介 Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发.Spark基于map reduce 算法模式实现的分布式计算,拥有Hadoop MapReduce所 ...
- Linux中安装配置hadoop集群
一. 简介 参考了网上许多教程,最终把hadoop在ubuntu14.04中安装配置成功.下面就把详细的安装步骤叙述一下.我所使用的环境:两台ubuntu 14.04 64位的台式机,hadoop选择 ...
- CentOS7 安装Redis Cluster集群
上一篇中已经讲到了如何安装单击版Redis,这一篇我们来说下如何安装Cluster,关于哨兵模式这里我就不写文章安装了,有兴趣的同学可以自己去研究,哨兵模式可以在主从模式下在创建三台机器的哨兵集群监控 ...
- 安装配置Spark集群
首先准备3台电脑或虚拟机,分别是Master,Worker1,Worker2,安装操作系统(本文中使用CentOS7). 1.配置集群,以下步骤在Master机器上执行 1.1.关闭防火墙:syste ...
- 离线环境下使用二进制方式安装配置Kubernetes集群
本文环境 Redhat Linux 7.3,操作系统采用的最小安装方式. Kubernetes的版本为 V1.10. Docker版本为18.03.1-ce. etcd 版本为 V3.3.8. 1. ...
- hadoop集群环境搭建之安装配置hadoop集群
在安装hadoop集群之前,需要先进行zookeeper的安装,请参照hadoop集群环境搭建之zookeeper集群的安装部署 1 将hadoop安装包解压到 /itcast/ (如果没有这个目录 ...
- 架构(三)MongoDB安装配置以及集群搭建
一 安装 1.1 下载MongoDB 我个人不太喜欢用wget url, 之前出现过wget下载的包有问题的情况 https://fastdl.mongodb.org/linux/mongodb-li ...
- elasticsearch安装与使用(2)-- centos7 安装测试的集群工具elasticsearch head
elasticsearch-head是elasticsearch(下面称ES)比较普遍使用的可监控.测试等功能的集群管理工具,是由H5编写的单独的网页程序.使用方法网上很多,这里教大家一个超简单安装h ...
- Hadoop2.2集群安装配置-Spark集群安装部署
配置安装Hadoop2.2.0 部署spark 1.0的流程 一.环境描写叙述 本实验在一台Windows7-64下安装Vmware.在Vmware里安装两虚拟机分别例如以下 主机名spark1(19 ...
随机推荐
- linux系统rwx(421)、777权限详解
摘要 linux的常见权限,mark一下 常用的linux文件权限如下: 444 r--r--r-- 600 rw------- 644 rw-r--r-- 666 rw-rw-rw- 700 rwx ...
- Python 自学笔记(一)
1.打印函数 1-1.print()函数 1-1-1.引号的用法 一.单引号与双引号:直接输出 二.三引号:保留原来的格式 1-2.转义字符 转义字符是一种特殊的字符常量,在编程语言中,我们用转义字符 ...
- C++ STL nth_element
#include <iostream>#include <algorithm>#include <deque> using namespace std; int m ...
- qt application logging
“AnalysisPtsDataTool201905.exe”(Win32): 已加载“F:\OpencvProject\ZY-Project\x64\Debug\AnalysisPtsDataToo ...
- jpa基于按annotation的hibernate主键生成策略
JPA注解持久化类很方便,需要jar包:ejb3-persistence.jar下载 一.JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hib ...
- 【JS新手教程】弹出两层div,及在LODOP内嵌上层
前面的博文有个简单的弹出div层[JS新手教程]浏览器弹出div层1,有一层,不过为了提示,一般会不让用户可以点击该提示之外的地方的.如果让用户弹出层后,把其他的按钮和链接都设置不可用应该比较麻烦,如 ...
- LomBok插件--模型类注解
Data注解,ToString注解都是Lombok提供的注解. Lombok是一个实用的java工具,使用它可以消除java代码的臃肿,Lombok提供一系列的注解,使用这些注解可 以不用定义gett ...
- matlab boundaries和fchcode函数无法执行的解决办法 未定义与 'double' 类型的输入参数相对应的函数 'boundaries'
在测试代码时发现,自己的matlab无法执行Freeman链码函数: boundaries和fchcode函数都无法正常运行: 需要在自己的工作目录中添加如下函数: boundaries fchc ...
- MyBatis接口式编程
MyBatis使用接口连接数据库 之前学习了如何传统的使用MyBatis连接数据库,今天学习如何使用更方便快捷的方式练级数据库.使用接口连接数据库 https://www.cnblogs.com/li ...
- STL标准模板库之set
目录 一.关联式容器 二.什么是set? 特点 优缺点和适用场景: 三.定义及初始化 四.基本操作 1)容量函数 2)修改函数 3)迭代器 4)其他函数 五.与序列容器的不同点 一.关联式容器 关联式 ...