内容简介:这次讲讲如何搭建redis集群,官方的介绍版本是三主三从的形式,这次就这样演示,并看看集群的一些特性。源码:https://github.com/limingios/netFuture/tree/master/redis-cluster-net ,可以查看,之前的文章,vagrant的介绍docker【中级】。
这次讲讲如何搭建 redis 集群,官方的介绍版本是三主三从的形式,这次就这样演示,并看看集群的一些特性。
(一)安装虚拟机
源码:https://github.com/limingios/netFuture/tree/master/redis-cluster-net ,可以查看,之前的文章,vagrant的介绍docker【中级】。
-
环境
>192.168.79.100
>192.168.79.101
>192.168.79.102
>每台服务器1主1从,共3主3从
相关安装包存储路径:/root/soft/
系统类型 | IP地址 | 节点角色 | CPU | Memory | Hostname |
---|---|---|---|---|---|
Centos7 | 192.168.79.100 | redis-master-1 | 2 | 2G | redis-master-1 |
Centos7 | 192.168.79.101 | redis-master-2 | 2 | 2G | redis-master-2 |
Centos7 | 192.168.79.102 | redis-master-3 | 2 | 2G | redis-master-3 |
(二)部署
-
准备工作
>三台主机都在root 目录下创建soft
mkdir soft
- 下载 79.100机器
cd soft wget http://download.redis.io/releases/redis-3.2.9.tar.gz tar xvf redis-3.2.9.tar.gz cd redis-3.2.9
- 79.100机器安装
make install PREFIX=/root/soft/redis-3.2.9
- 79.100机器配置
cd /root/soft/redis-3.2.9 #创建集群配置文件夹 mkdir cluster-conf cd cluster-conf #创建集群端口文件夹 mkdir 7001 mkdir 7002 cd 7001 cp /root/soft/redis-3.2.9/redis.conf ./ cd ../7002 cp /root/soft/redis-3.2.9/redis.conf ./
79.100机器修改7001下的redis.conf,查找esc键,输入/名称
pwd vi redis.conf
- bind 127.0.0.1 修改 bind 0.0.0.0
- port 6379 修改 port 7001
- logfile “” 修改 logfile “/root/soft/redis-3.2.9/cluster-conf/7001/redis.log”
- dir ./ 修改dir /root/soft/redis-3.2.9/cluster-conf/7001
- appendonly no修改appendonly yes
- 文件末尾添加
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
79.100机器修改7002下的redis.conf,查找esc键,输入/名称
cd /root/soft/redis-3.2.9/cluster-conf/7002 pwd vi redis.conf
- bind 127.0.0.1 修改 bind 0.0.0.0
- port 6379 修改 port 7002
- logfile “” 修改 logfile “/root/soft/redis-3.2.9/cluster-conf/7002/redis.log”
- dir ./ 修改dir /root/soft/redis-3.2.9/cluster-conf/7002
- appendonly no修改appendonly yes
- 文件末尾添加
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
-
配置说明
1.端口号。
>port
2.指定了记录日志的文件。
logfile
3.数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录。
dir
4.是否开启集群
cluster-enabled
5.集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。这个文件并不需要手动配置,这个配置文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件,请确保与实例运行的系统中配置文件名称不冲突
cluster-config-file nodes.conf
6.节点互连超时的阀值。集群节点超时毫秒数
cluster-node-timeout
7.默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了。但是redis如果中途宕机,会导致可能有几分钟的数据丢失,根据save来策略进行持久化,Append Only File是另一种持久化方式,可以提供更好的持久化特性。Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。
appendonly
- scp拷贝到101,102主机
cd /root/soft scp -r redis-3.2.9/ root@192.168.79.101:/root/soft/ scp -r redis-3.2.9/ root@192.168.79.102:/root/soft/
- 启动100,101,102
#100 主机 /root/soft/redis-3.2.9/bin/redis-server /root/soft/redis-3.2.9/cluster-conf/7001/redis.conf & /root/soft/redis-3.2.9/bin/redis-server /root/soft/redis-3.2.9/cluster-conf/7002/redis.conf & #101 主机 /root/soft/redis-3.2.9/bin/redis-server /root/soft/redis-3.2.9/cluster-conf/7001/redis.conf & /root/soft/redis-3.2.9/bin/redis-server /root/soft/redis-3.2.9/cluster-conf/7002/redis.conf & #102 主机 /root/soft/redis-3.2.9/bin/redis-server /root/soft/redis-3.2.9/cluster-conf/7001/redis.conf & /root/soft/redis-3.2.9/bin/redis-server /root/soft/redis-3.2.9/cluster-conf/7002/redis.conf &
-
创建集群
>100,101,102机器执行,安装 ruby 2.4.1
yum -y install curl gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB curl -sSL https://get.rvm.io | bash -s stable find / -name rvm -print source /usr/local/rvm/scripts/rvm rvm install 2.4.1 rvm use 2.4.1 --default gem install redis
100机器执行
cd /root/soft/redis-3.2.9/src ./redis-trib.rb create --replicas 1 192.168.79.100:7001 192.168.79.101:7001 192.168.79.102:7001 192.168.79.100:7002 192.168.79.101:7002 192.168.79.102:7002 #输入yes
redis-trib.rb是redis作者用ruby完成的是对redis cluster管理工具,
集成在redis的源码src目录下。
名称 | 作用 |
---|---|
call | 在集群全部节点上执行命令 |
set-timeout | 设置集群节点间心跳连接的超时时间 |
del-node | 从集群中删除节点 |
reshard | 在线迁移slot |
check | 检查集群 |
import | 将外部redis数据导入集群 |
add-node | 将新节点加入集群 |
create | 创建集群 |
info | 查看集群信息 |
fix | 修复集群 |
rebalance | 平衡集群节点slot数量 |
-
查看连接效果
>里面三个master,三个slave。
cd /root/soft/redis-3.2.9/src ./redis-cli -c -p 7001
- 查看集群
cd /root/soft/redis-3.2.9/src ./redis-cli -c -p 7001 cluster nodes
- 宕机重启集群
cd /root/soft/redis-3.2.9/src ./redis-trib.rb fix 192.168.79.100:7001
分片的方式,一个集群有16383的槽,根据主相对平均的方式来分配的。
(三)集群管理
增加节点:./redis-trib.rb add-node ip:port ip:port
第一个参数是新节点的地址,第二个参数是任意一个已经存在的节点的IP和端口.
移除节点:redis-trib del-node ip:port<node-id>
第一个参数是任意一个节点的地址,第二个节点是你想要移除的节点地址
改变一个从节点的主节点cluster replicate master-node-id
1.主节点挂了,是没有问题的正常。
2.从节点挂了,肯定是可以正常访问的。
3.两个都挂了(一主一从),不能用了
集群的方式不能使用select 1 直接选择数据库。但是它有槽的概念,cluster keyslot wst。可以看到这个key在那个槽位。
理论:redis最大的集群节点数16384,最大槽点数16384。一个集群16384个槽点。像微博,淘宝,他们的集群有个共性:N个集群,集群不在同一个机房中。
PS:redis的集群搭建基本就这样完毕了,写文章用了1个小时,但是搭建环境搞了我2个小时,家里的网速太不稳定了。就像咱们正常的情况可能应用都能承受的住,一旦突然情况量上去可能就无法承受,通过集群的很大好处,分担压力,容灾,众人拾柴火焰高。
>>原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
>>原文链接地址:上一篇:已是最新文章
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 『互联网架构』软件架构-redis特性和集群特性(中)(49)
- 『互联网架构』软件架构-redis特性和集群特性(上)(48)
- ClickHouse的核心特性及架构
- 软件架构基础(四): 你的架构需要考虑到的特性
- 『互联网架构』软件架构-rocketmq之特性和运维(64)
- 『互联网架构』软件架构-Sharding-Sphere特性详解(67)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python for Data Analysis
Wes McKinney / O'Reilly Media / 2012-11-1 / USD 39.99
Finding great data analysts is difficult. Despite the explosive growth of data in industries ranging from manufacturing and retail to high technology, finance, and healthcare, learning and accessing d......一起来看看 《Python for Data Analysis》 这本书的介绍吧!