一.服务器准备

本文准备了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集群的更多相关文章

  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. 牛顿法与拟牛顿法(四) BFGS 算法

    转自 https://blog.csdn.net/itplus/article/details/21897443

  2. Visual Studio Code(VS Code)命令行的使用(1)

    在终端中输入如下命令,打开VS Code界面. code 在终端中输入如下命令,打印出 VS Code 命令行所支持的所有参数. code --help 在 code 命令后加上文件或者文件夹的地址, ...

  3. MySQL 创建删除和选择数据库

    使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 删除数据库 drop database <数据库名>; 选择数据库 use 数据库名 Datab ...

  4. Swift 数据类型

    Swift 提供了非常丰富的数据类型,以下列出了常用了几种数据类型: Int 一般来说,你不需要专门指定整数的长度.Swift 提供了一个特殊的整数类型Int,长度与当前平台的原生字长相同: 在32位 ...

  5. in mind (不是 切记 的意思)

    Both Grunt and Gulp.js perform these automation tasks particularly well, although Gulp.js has the ed ...

  6. PAT 甲级1025 PAT Ranking (25 分)(结构体排序,第一次超时了,一次sort即可小技巧优化)

    题意: 给定一次PAT测试的成绩,要求输出考生的编号,总排名,考场编号以及考场排名. 分析: 题意很简单嘛,一开始上来就,一组组输入,一组组排序并记录组内排名,然后再来个总排序并算总排名,结果发现最后 ...

  7. postman使用当前时间戳

    //设置当前时间戳postman.setGlobalVariable(“time”,Math.round(new Date().getTime()));time = postman.getGlobal ...

  8. iOS- UITextView禁止Emoji表情

    UITextView代理方法:判断 -(void)textViewDidEndEditing:(UITextView *)textView{        if ([self stringContai ...

  9. 工作采坑札记: 4. linux指定目录使用df和du的统计结果相差很大

    1. 背景 近日,线上的服务出现异常,调用服务返回的JSON格式数据不完整,导致客户端解析异常,因此记录了本次的填坑之旅(nnd)... 2. 排查过程 2.1 服务器分析 登录到服务所在linux服 ...

  10. cocos2dx图片加密解密(npk方式)

    话不多说,直接开始: 准备的工具: 链接:https://pan.baidu.com/s/1Om4kBNWcG2jL_RTsHqqzpQ 提取码:bv7i npkCreate.exe是加密图片的工具, ...