『互联网架构』软件架构-redis特性和集群特性(下)(50)

栏目: 数据库 · 发布时间: 5年前

内容简介:这次讲讲如何搭建redis集群,官方的介绍版本是三主三从的形式,这次就这样演示,并看看集群的一些特性。源码:https://github.com/limingios/netFuture/tree/master/redis-cluster-net ,可以查看,之前的文章,vagrant的介绍docker【中级】。

这次讲讲如何搭建 redis 集群,官方的介绍版本是三主三从的形式,这次就这样演示,并看看集群的一些特性。

『互联网架构』软件架构-redis特性和集群特性(下)(50)

(一)安装虚拟机

源码:https://github.com/limingios/netFuture/tree/master/redis-cluster-net ,可以查看,之前的文章,vagrant的介绍docker【中级】。

『互联网架构』软件架构-redis特性和集群特性(下)(50)

  • 环境

    >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

『互联网架构』软件架构-redis特性和集群特性(下)(50)

(二)部署

  • 准备工作

    >三台主机都在root 目录下创建soft

mkdir soft

『互联网架构』软件架构-redis特性和集群特性(下)(50)

  • 下载 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

『互联网架构』软件架构-redis特性和集群特性(下)(50)

『互联网架构』软件架构-redis特性和集群特性(下)(50)

  • 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 ./

『互联网架构』软件架构-redis特性和集群特性(下)(50)

79.100机器修改7001下的redis.conf,查找esc键,输入/名称

pwd
vi redis.conf
  1. bind 127.0.0.1 修改 bind 0.0.0.0
  2. port 6379 修改 port 7001
  3. logfile “” 修改 logfile “/root/soft/redis-3.2.9/cluster-conf/7001/redis.log”
  4. dir ./ 修改dir /root/soft/redis-3.2.9/cluster-conf/7001
  5. appendonly no修改appendonly yes
  6. 文件末尾添加
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000

『互联网架构』软件架构-redis特性和集群特性(下)(50)

『互联网架构』软件架构-redis特性和集群特性(下)(50)

『互联网架构』软件架构-redis特性和集群特性(下)(50)

『互联网架构』软件架构-redis特性和集群特性(下)(50)

『互联网架构』软件架构-redis特性和集群特性(下)(50)

『互联网架构』软件架构-redis特性和集群特性(下)(50)

『互联网架构』软件架构-redis特性和集群特性(下)(50)

79.100机器修改7002下的redis.conf,查找esc键,输入/名称

cd /root/soft/redis-3.2.9/cluster-conf/7002
pwd
vi redis.conf
  1. bind 127.0.0.1 修改 bind 0.0.0.0
  2. port 6379 修改 port 7002
  3. logfile “” 修改 logfile “/root/soft/redis-3.2.9/cluster-conf/7002/redis.log”
  4. dir ./ 修改dir /root/soft/redis-3.2.9/cluster-conf/7002
  5. appendonly no修改appendonly yes
  6. 文件末尾添加
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000

『互联网架构』软件架构-redis特性和集群特性(下)(50)

『互联网架构』软件架构-redis特性和集群特性(下)(50)

『互联网架构』软件架构-redis特性和集群特性(下)(50)

『互联网架构』软件架构-redis特性和集群特性(下)(50)

『互联网架构』软件架构-redis特性和集群特性(下)(50)

『互联网架构』软件架构-redis特性和集群特性(下)(50)

  • 配置说明

    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/

『互联网架构』软件架构-redis特性和集群特性(下)(50)

  • 启动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 &

『互联网架构』软件架构-redis特性和集群特性(下)(50)

『互联网架构』软件架构-redis特性和集群特性(下)(50)

  • 创建集群

    >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特性和集群特性(下)(50)

『互联网架构』软件架构-redis特性和集群特性(下)(50)

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

『互联网架构』软件架构-redis特性和集群特性(下)(50)

  • 查看集群
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

『互联网架构』软件架构-redis特性和集群特性(下)(50)

分片的方式,一个集群有16383的槽,根据主相对平均的方式来分配的。

『互联网架构』软件架构-redis特性和集群特性(下)(50)

(三)集群管理

增加节点:./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人故事会,谢谢!

>>原文链接地址:上一篇:

已是最新文章


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python for Data Analysis

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》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具