Linux下Redis集群部署
一、Redis集群介绍
Redis 集群是一个提供在多个Redis节点间共享数据的程序集。Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误。Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令。
- Redis 集群的优势:
- 自动分割数据到不同的节点上;
- 整个集群的部分节点失败或者不可达的情况下能够继续处理命令。
二、Redis Cluster集群部署

- 环境
| 主机名 | IP | 端口 |
|---|---|---|
| node1 | 192.168.2.51 | 7000,7001 |
| node2 | 192.168.2.52 | 7000,7001 |
| node3 | 192.168.2.53 | 7000,7001 |
# TCP监听队列大小
echo "net.core.somaxconn = 32767" >> /etc/sysctl.conf
sysctl -p
# OMM相关:vm.overcommit_memory
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
sysctl -p
# 开启内核特性
echo never > /sys/kernel/mm/transparent_hugepage/enabled
- 安装redis
- 分别在每台服务器上安装两个节点;
- 下载
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
- 解压编译安装
yum install gcc c++ -y
tar -xf redis-5.0.5.tar.gz
cd redis-5.0.5
make
make MALLOC=libc
make install PREFIX=/usr/local/redis-cluster
mkdir -p /usr/local/redis-cluster/{7000,7001}
- 配置修改
cat redis.conf |grep -v ^# |grep -v ^$
cp redis.conf /usr/local/redis-cluster/7000/
cd /usr/local/redis-cluster/7000/
mv redis.conf 7000_redis.conf
vim 7000_redis.conf
bind 0.0.0.0
protected-mode yes
port 7000
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile "/usr/local/redis-cluster/7000/redis_7000.pid"
loglevel notice
logfile "/usr/local/redis-cluster/7000/redis_7000.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir "/usr/local/redis-cluster/7000"
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file "/usr/local/redis-cluster/7000/nodes.conf"
cluster-node-timeout 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
- 复制配置文件
# 复制配置文件到另外两台服务器相同目录下
scp 7000/7000_redis.conf root@192.168.2.52:/usr/local/redis-cluster/7000/
scp 7001/7001_redis.conf root@192.168.2.52:/usr/local/redis-cluster/7001/
scp 7000/7000_redis.conf root@192.168.2.53:/usr/local/redis-cluster/7000/
scp 7001/7001_redis.conf root@192.168.2.53:/usr/local/redis-cluster/7001/
- 配置启动脚本
cat start_redis.sh
#!/bin/bash
REDIS_HOME=/usr/local/redis-cluster
$REDIS_HOME/bin/redis-server $REDIS_HOME/7000/7000_redis.conf
$REDIS_HOME/bin/redis-server $REDIS_HOME/7001/7001_redis.conf
chmod +x start_redis.sh
./start_redis.sh
- 集群配置
./redis-cli --cluster create 192.168.2.51:7000 192.168.2.51:7001 192.168.2.52:7000 192.168.2.52:7001 192.168.2.53:7000 192.168.2.53:7001 --cluster-replicas 1
- 配置密码验证
# 分别在每个节点执行
redis-cli -h 192.168.2.51 -p 7000 -c
config set masterauth 123456
config set requirepass 123456
auth 123456
config rewrite
tail -2 7000/7000_redis.conf
masterauth "123456"
requirepass "123456"
- redis-cli相关命令
# 查看集群状态
redis-cli -h 192.168.2.51 -p 7000 -c
192.168.2.51:7000> auth 123456
OK
192.168.2.51:7000> CLUSTER INFO
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:8
cluster_my_epoch:7
cluster_stats_messages_ping_sent:971263
cluster_stats_messages_pong_sent:975267
cluster_stats_messages_sent:1946530
cluster_stats_messages_ping_received:975267
cluster_stats_messages_pong_received:971262
cluster_stats_messages_received:1946529
# 查看节点信息
CLUSTER NODES
a3c152931ac1b68f61ad9a61b6e1771a12d46d08 192.168.2.51:7000@17000 myself,slave f869ba21aaf34dee11ec62fe61b58b224fbbfbd3 0 1564559165000 1 connected
5ea17476f641c656e3ee48ae4985181de195db88 192.168.2.53:7000@17000 slave 521da8dd67d8cd27f3f2546636652ae23b396abb 0 1564559164526 8 connected
e5235f0764ce1be056208d683cc69adf6c3398b1 192.168.2.53:7001@17001 slave 6ca305fb349e3281b532d431bbabb79a9bb9838f 0 1564559165526 6 connected
f869ba21aaf34dee11ec62fe61b58b224fbbfbd3 192.168.2.52:7001@17001 master - 0 1564559164025 7 connected 0-5460
6ca305fb349e3281b532d431bbabb79a9bb9838f 192.168.2.52:7000@17000 master - 0 1564559166027 3 connected 5461-10922
521da8dd67d8cd27f3f2546636652ae23b396abb 192.168.2.51:7001@17001 master - 0 1564559165025 8 connected 10923-16383
Linux下Redis集群部署的更多相关文章
- Linux 下Redis集群安装部署及使用详解(在线和离线两种安装+相关错误解决方案)
一.应用场景介绍 本文主要是介绍Redis集群在Linux环境下的安装讲解,其中主要包括在联网的Linux环境和脱机的Linux环境下是如何安装的.因为大多数时候,公司的生产环境是在内网环境下,无外网 ...
- Linux 下redis 集群搭建练习
Redis集群 学习参考:https://blog.csdn.net/jeffleo/article/details/54848428https://my.oschina.net/iyinghui/b ...
- Linux下Redis集群环境的搭建
一.安装redis(使用redis3.0版本) 1.需要gcc环境,如果没有执行命令安装gcc yum install gcc-c++ 2.下载redis3.0的源码包并上传至服务器 3.解压源码包 ...
- 【redis】 linux 下redis 集群环境搭建
Redis集群 (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下) 127.0.0.1:63791 ...
- linux下redis 集群配置
redis.conf 配置文件说明 daemonize no --是否把redis-server启动在后台,默认是“否”.若改成yes pidfile /var/run/redis.pid --当Re ...
- linux环境(CentOS-6.7)下redis集群的搭建全过程
linux环境下redis集群的搭建全过程: 使用mount命令将光盘挂载到/mnt/cdrom目录下: [root@hadoop03 ~]# mount -t iso9660 -o ro /dev/ ...
- (转)linux下weblogic12c集群的安装部署
本文介绍linux下weblogic12c集群的安装部署,版本12c,其他版本操作会有所不同,但其大体操作基本都是一样的 关于weblogic的集群,在此就不多做介绍了,如果有不了解的朋友可以百度搜索 ...
- CentOS下redis集群安装
环境: 一台CentOS虚拟机上部署六个节点,创建3个master,3个slave节点 1.下载并解压 cd /root wget http://download.redis.io/releases/ ...
- Redis集群部署3.0
我用的Mac的终端 ------------------------- 1.Redis简介 centos(5.4) Redis是一个key-value存储系统.和Memcached类似,但是解决了断 ...
- Elasticsearch学习总结 (Centos7下Elasticsearch集群部署记录)
一. ElasticSearch简单介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticse ...
随机推荐
- IDA 特征码生成和搜索脚本
最近比较忙,就少写两句,直接附上源代码,其中的细节点就不再赘述,如有疑问,请留言. 一共就是实现了两个函数,一个用于搜索特征码 (SearchPattern),一个用于生成特征码 (GenerateF ...
- 什么是BFC,BFC的作用,以及怎么触发BFC
什么是BFC: 块级格式化上下文 BFC的作用: BFC其实就是规定了网页布局的规范 1.BFC就是页面上的一个独立容器,容器里面的元素不会影响到外面的元素 解释:BFC的基本改变,最 ...
- VUE3企业级项目基础框架搭建流程(1)
开发环境和技术栈 操作系统 windows11 开发工具 vscode.phpstudy(小皮):nginx1.15.11, mysql5.7.26, php7.4,Navicat for MySQL ...
- 简单记录下RestTemplate使用方法
1.设置get方法 ResponseEntity<JSONObject> responseEntity= restTemplate.getForEntity(url,JSONObject. ...
- [C++提高编程] 1、模板
文章目录 1 模板 1.1 模板的概念 1.2 函数模板 1.2.1 函数模板语法 1.2.2 函数模板注意事项 1.2.3 函数模板案例 1.2.4 普通函数与函数模板的区别 1.2.5 普通函数与 ...
- 如何在SpringBoot项目中兼容Jersey和SpringMVC框架?
文章目录 Jersey框架介绍 常用的注解: SpringBoot中SpringMVC兼容Jersey 整合Jersey REST(Representational State Transfer)表象 ...
- Django transaction.atomic 事务的使用
函数 transaction.atomic 数据库的读写操作中,事务在保证数据的安全性和一致性方面起着关键的作用,而回滚正是这里面的核心操作. 遇到并发的时候常常会因为接口的访问顺序或者其他情况,导致 ...
- 2022-11-12:以下rust语言代码中,结构体S实现了crate::T1::T2的方法,如何获取方法列表?以下代码应该返回[“m1“,“m2“,“m5“],顺序不限。m3是S的方法,但并不属于c
2022-11-12:以下rust语言代码中,结构体S实现了crate::T1::T2的方法,如何获取方法列表?以下代码应该返回["m1","m2"," ...
- 2022-02-21:不含连续1的非负整数。 给定一个正整数 n ,返回范围在 [0, n] 都非负整数中,其二进制表示不包含 连续的 1 的个数。 输入: n = 5 输出: 5 解释: 下面是带
2022-02-21:不含连续1的非负整数. 给定一个正整数 n ,返回范围在 [0, n] 都非负整数中,其二进制表示不包含 连续的 1 的个数. 输入: n = 5 输出: 5 解释: 下面是带有 ...
- 用Linux命令操作mysql数据库
操作mysql数据库,相信大家最熟悉的应该是用navicat工具来新建数据库,建表,查询数据,查看表结构等. 但是如果数据库与本操作机器不在同一个局域网内,并且对方环境也不支持vpn的情况下,如何查询 ...