一、介绍

           redis cluster 3.0之后的功能,至少需要3(Master)+3(Slave)才能建立集群,是无中心的分布式存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用、可扩展等问题。

二、安装部署

1、环境

[root@redsi ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@redsi ~]# uname -r
2.6.-.el6.x86_64
[root@redsi ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@redsi ~]# getenforce
Disabled
[root@redsi ~]# hostname -I
10.0.0.2

2、redis cluster是基于上一篇博文已经安装好的redis

①创建集群节点目录

mkdir /usr/local/redis-cluster/{..}/data -p
[root@redsi redis-cluster]# ll /usr/local/redis-cluster/
total
drwxr-xr-x root root -- :
drwxr-xr-x root root -- :
drwxr-xr-x root root -- :
drwxr-xr-x root root -- :
drwxr-xr-x root root -- :
drwxr-xr-x root root -- :
drwxr-xr-x root root -- : bin

②创建命令目录

mkdir /usr/local/redis-cluster/bin -p
cd /server/tools/redis-3.2./src
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin

③创建一个redis实例

cp -a /usr/local/redis/* /usr/local/redis-cluster/9001/

修改redis.conf配置文件

port                                 #每个节点的端口号
daemonize yes
bind 10.0.0.2 #绑定当前机器 IP
dir /usr/local/redis-cluster//data/ #数据文件存放位置
pidfile /var/run/redis_9001.pid #pid 9001和port要对应
cluster-enabled yes #启动集群模式
cluster-config-file nodes9001.conf #9001和port要对应
cluster-node-timeout
appendonly yes

④再创建其它5个redis实例

cp -a /usr/local/redis-cluster//* /usr/local/redis-cluster/9002
cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9003
cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9004
cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9005
cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9006

再依次修改redis.conf配置文件

port                                 #修改以下4处,依次改为9002、9003、9004、9005、9006
dir /usr/local/redis-cluster//data/
pidfile /var/run/redis_9001.pid
cluster-config-file nodes9001.conf

###到此为止基础环境已准备好###

三、安装完ruby环境

###直接执行gem install redis时,报错###

gem install redis
ERROR: Error installing redis:
redis requires Ruby version >= 2.2..

①安装安装RVM

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
curl -L get.rvm.io | bash -s stable
find / -name rvm -print

②查看rvm库中已知的ruby版本

rvm list known 

③安装一个ruby版本

rvm install 2.3. 

④使用一个ruby版本

rvm use 2.3.  

⑤设置默认版本

rvm use 2.3. --default 

⑥卸载一个已知版本

rvm remove 2.0.

⑦安装redis

gem install redis 

⑧查看ruby版本

ruby --version 

四、集群搭建

1、启动六个节点的redis

redis-server /usr/local/redis-cluster//redis.conf
redis-server /usr/local/redis-cluster//redis.conf
redis-server /usr/local/redis-cluster//redis.conf
redis-server /usr/local/redis-cluster//redis.conf
redis-server /usr/local/redis-cluster//redis.conf
redis-server /usr/local/redis-cluster//redis.conf
###查看进程###
[root@redsi ~]# ps aux|grep redis
root 0.1 0.9 ? Ssl : : redis-server 10.0.0.2: [cluster]
root 0.1 0.9 ? Ssl : : redis-server 10.0.0.2: [cluster]
root 0.1 0.9 ? Ssl : : redis-server 10.0.0.2: [cluster]
root 0.1 0.7 ? Ssl : : redis-server 10.0.0.2: [cluster]
root 0.1 0.9 ? Ssl : : redis-server 10.0.0.2: [cluster]
root 0.1 0.9 ? Ssl : : redis-server 10.0.0.2: [cluster]

2、创建集群

/usr/local/redis-cluster/bin/redis-trib.rb create --replicas  10.0.0.2: 10.0.0.2: 10.0.0.2: 10.0.0.2: 10.0.0.2: 10.0.0.2:

###命令说明###

调用ruby命令来进行创建集群,--replicas  表示主从复制比例为 :,即一个主节点对应一个从节点;然后,默认给我们分配好了每个主节点和对应从节点服务,以及solt的大小,因为在Redis 集群中有且仅有  个 solt ,默认情况会给我们平均分配,当然你可以指定,后续的增减节点也可以重新分配。

###输入yes后开始创建集群###

###如上图所示,集群创建成功###

3、集群验证

①使用客户端命令连接集群节点

[root@redsi ~]# redis-cli -h 10.0.0.2 -c -p
10.0.0.2:> set name lulu
-> Redirected to slot [] located at 10.0.0.2:9002 #自动连接到了9002节点,这是集群的一个数据分配特性
OK
10.0.0.2:> get name
"lulu"

②连接其它节点验证

[root@redsi ~]# redis-cli -h 10.0.0.2 -c -p
10.0.0.2:> get name
-> Redirected to slot [] located at 10.0.0.2:
"lulu"

###至此,redis集群搭建完毕###

linux运维、架构之路-redis集群的更多相关文章

  1. Linux运维--12.手动部署Rabbit集群

    1.安装rabbit组件 10.100.2.51 controller1 10.100.2.52 controller2 10.100.2.53 controller3 #每个节点 yum insta ...

  2. linux运维架构师职业规划

    1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是“鸟哥的私房菜”,讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服务器篇.“鸟哥的私房 ...

  3. 架构师之路-redis集群解析

    引子 上篇<架构师之路-https底层原理>里我提到了上面的整体视图,文章也介绍了想要真正能在工作中及时正确解决问题的基本功:原理理解透彻.今天以redis集群解析为例介绍一个及时敏锐的发 ...

  4. 剑指架构师系列-Redis集群部署

    初步搭建Redis集群 克隆已经安装Redis的虚拟机,我们使用这两个虚拟机中的Redis来搭建集群. master:192.168.2.129 端口:7001 slave:192.168.2.132 ...

  5. linux运维、架构之路-Kubernetes集群部署

    一.kubernetes介绍        Kubernetes简称K8s,它是一个全新的基于容器技术的分布式架构领先方案.Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部 ...

  6. linux运维、架构之路-Kubernetes集群部署TLS双向认证

    一.kubernetes的认证授权       Kubernetes集群的所有操作基本上都是通过kube-apiserver这个组件进行的,它提供HTTP RESTful形式的API供集群内外客户端调 ...

  7. 【mongoDB运维篇④】Shard 分片集群

    简述 为何要分片 减少单机请求数,降低单机负载,提高总负载 减少单机的存储空间,提高总存空间. 常见的mongodb sharding 服务器架构 要构建一个 MongoDB Sharding Clu ...

  8. Redis 集群环境的搭建

    下载与解压 [root@localhost ~]# cd /usr/temp/ [root@localhost temp]# wget http://download.redis.io/release ...

  9. Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!

    Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...

随机推荐

  1. Java多线程学习——sleep和yield

    Thread.sleep(); Thread.yield(); 相同点: 让线程暂停运行. 都是静态方法,可以直接调用. 不同点: sleep让线程从运行状态进入阻塞状态,但是不放开手中的资源. yi ...

  2. 学了一天的golang从入门到放弃

    Google的go就是个二货,不实用,它最多只能和c比简单.low!

  3. 如何在centos7中显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意字符的文件或目录

    ls /etc |grep "^[^[:alpha:]][[:alpha:]].*"

  4. 第八周zuoye

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass3-2018/homew ...

  5. 递归法求组合数C(m,n)

    假设这样一个数组: 1 2 3 4 5 n=5 若 m=3 也就是要求C(3,5) 首先先选第一个数 1 那么剩下的工作就是在2-5之间选择2个数 如果我们没有选择第一个数 选第二个数2 那么剩下的工 ...

  6. 修改SpringBoot启动时的默认Banner图案

    1.在src/main/resources下新建banner.txt,在文件中加入要显示的图案即可: 2.生成图案的网站: http://patorjk.com/software/taag/ http ...

  7. [BZOJ 4668]冷战(带边权并查集+启发式合并)

    [BZOJ 4668]冷战(并查集+启发式合并) 题面 一开始有n个点,动态加边,同时查询u,v最早什么时候联通.强制在线 分析 用并查集维护连通性,每个点x还要另外记录tim[x],表示x什么时间与 ...

  8. 封装 多态 类的约束 super

    python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...

  9. Python 入门之常用运算符

    Python 入门之常用运算符 Python中的运算按种类可分为算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.位运算 1.常用运算符: (1)算数运算符: + - * / %(取余(模) ...

  10. python列表的复制,扯一下浅拷贝与深拷贝的区别

    将一个列表的数据复制到另一个列表中.使用列表[:],可以调用copy模块 import copy A = [21,22,23,24,['a','b','c','d'],25,26] B = A #直接 ...