Redis集群安装

Redis集群安装

  1. 一. Redis是什么

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

  1. 下载
    从官网下载最新版本https://redis.io/download
$ tar xzf redis-3.2.6.tar.gz
$ cd redis-3.2.6
$ make

可能遇到问题
安装make
1、

  CC adlist.o
  /bin/sh: cc: command not found
  make[1]: * [adlist.o] Error 127
  make[1]: Leaving directory `/usr/local/redis-3.2.1/src
  make: * [all] Error 2

 解决办法:GCC没有安装或版本不对,安装一下

yum install gcc
2、

  zmalloc.h:50:31:
  error: jemalloc/jemalloc.h: No such file or directory
  zmalloc.h:55:2: error:

  #error “Newer version of jemalloc required”
  make[1]: * [adlist.o] Error
  1
  make[1]: Leaving directory `/data0/src/redis-2.6.2/src
  make: * [all]
  Error 2

解决办法:原因是没有安装jemalloc内存分配器,可以安装jemalloc 或 直接

 输入make MALLOC=libc  && make install

创建 Redis 节点
首先在 192.168.177.101 机器上 /mysoftware/redis-3.2.6 目录下创建 redis_cluster 目录

$ mkdir /mysoftware/redis-3.2.6/redis_cluster 
在 redis_cluster 目录下,创建名为7000、7001、7002、7003、7004、7005的目录,并将 redis.conf 拷贝到这六个目录中

$ mkdir 7000 7001 7002
$ cp /usr/local/redis-3.2.6/redis.conf /usr/local/redis-3.2.6/redis_cluster/7000
$ cp /usr/local/redis-3.2.6/redis.conf /usr/local/redis-3.2.6/redis_cluster/7001
$ cp /usr/local/redis-3.2.6/redis.conf /usr/local/redis-3.2.6/redis_cluster/7002

分别修改这三个配置文件,修改如下内容

port                  7000                        //端口7000,7002,7003        
bind                  本机ip                      //默认ip为127.0.0.1,需要改为其他节点机器可访问的ip,否则创建集群时无法访问对应的端口,无法创建集群
daemonize             yes                         //redis后台运行
pidfile               /var/run/redis_7000.pid     //pidfile文件对应7000,7001,7002
cluster-enabled       yes                         //开启集群,把注释#去掉
cluster-config-file   nodes_7000.conf             //集群的配置,配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout  15000                       //请求超时,默认15秒,可自行设置
appendonly            yes                         //aof日志开启,有需要就开启,它会每次写操作都记录一条日志 

接着在另外两台机器上(192.168.1.9、192.168.1.10)重复以上三步,只是把目录改为7003、7004、7005、7006、7007、7008对应的配置文件也按照这个规则修改即可

启动各个节点
第一台机器上执行

$ /mysoftware/redis-3.2.6/src/redis-server /mysoftware/redis-3.2.6/redis_cluster/7000/redis.conf
$ /mysoftware/redis-3.2.6/src/redis-server /mysoftware/redis-3.2.6/redis_cluster/7001/redis.conf
$ /mysoftware/redis-3.2.6/src/redis-server /mysoftware/redis-3.2.6/redis_cluster/7002/redis.conf

第二台机器上执行

$ /mysoftware/redis-3.2.6/src/redis-server /mysoftware/redis-3.2.6/redis_cluster/7003/redis.conf
$ /mysoftware/redis-3.2.6/src/redis-server /mysoftware/redis-3.2.6/redis_cluster/7004/redis.conf
$ /mysoftware/redis-3.2.6/src/redis-server /usr/local/redis-3.2.6/redis_cluster/7005/redis.conf 

第三台机器上执行

$ /mysoftware/redis-3.2.6/src/redis-server /mysoftware/redis-3.2.6/redis_cluster/7006/redis.conf
$ /mysoftware/redis-3.2.6/src/redis-server /mysoftware/redis-3.2.6/redis_cluster/7007/redis.conf
$ /mysoftware/redis-3.2.6/src/redis-server /usr/local/redis-3.2.6/redis_cluster/7008/redis.conf 

检查各 Redis 启动情况
第一台机器

$ ps -ef | grep redis           //redis是否启动成功
$ netstat -tnlp | grep redis    //监听redis端口
hadoop@slave01:/mysoftware/redis-4.0.1$ ps -aux | grep redis
redis      819  0.2  0.6  40140  6076 ?        Ssl  21:24   0:21 /usr/bin/redis-sentinel 127.0.0.1:26379 [sentinel]
redis      820  0.1  0.6  40140  6548 ?        Ssl  21:24   0:15 /usr/bin/redis-server 127.0.0.1:6379
hadoop    1346  0.1  0.3  41724  4012 ?        Ssl  23:49   0:00 src/redis-server 192.168.177.101:7000 [cluster]
hadoop    1351  0.0  0.4  41724  4128 ?        Ssl  23:50   0:00 src/redis-server 192.168.177.101:7001 [cluster]
hadoop    1358  0.0  0.4  41724  4136 ?        Ssl  23:52   0:00 src/redis-server 192.168.177.101:7002 [cluster]
hadoop    1363  0.2  0.3  41724  3956 ?        Ssl  23:52   0:00 src/redis-server 192.168.177.101:7003 [cluster]
hadoop    1368  0.1  0.3  41724  3920 ?        Ssl  23:52   0:00 src/redis-server 192.168.177.101:7004 [cluster]
hadoop    1373  0.0  0.4  41724  4088 ?        Ssl  23:52   0:00 src/redis-server 192.168.177.101:7005 [cluster]
hadoop    1378  0.0  0.0  14228   976 pts/3    S+   23:52   0:00 grep --color=auto redis


安装 Ruby
$ sudo apt-get install ruby
$ gem install -l redis-4.0.0.gem

redis-4.0.0.gem下载地址
http://www.redis.cn/download.html
注:创建集群时需要安装 Ruby 运行redis-trib.rb


**创建集群**
hadoop@slave01:/mysoftware/redis-4.0.1$ /mysoftware/redis-4.0.1/src/redis-trib.rb  create  --replicas 1 192.168.177.101:7000 192.168.177.101:7001 192.168.177.101:7002 192.168.177.101:7003 192.168.177.101:7004 192.168.177.101:7005

>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.177.101:7006
192.168.177.101:7008
192.168.177.101:7009
Adding replica 192.168.177.101:7010 to 192.168.177.101:7006
Adding replica 192.168.177.101:7011 to 192.168.177.101:7008
Adding replica 192.168.177.101:7012 to 192.168.177.101:7009
M: 7f88fb4b00a5789af37cbcf4e2c66cb514df2e24 192.168.177.101:7006
   slots:0-5460 (5461 slots) master
M: 06ee46eb5c0e9232f050d27c6c37674e3d25bdf7 192.168.177.101:7008
   slots:5461-10922 (5462 slots) master
M: 65cada26e0a3e0c6c1b6af245642d9f67ba7803f 192.168.177.101:7009
   slots:10923-16383 (5461 slots) master
S: b8227670d690efbf9412375accc4474fb015eb26 192.168.177.101:7010
   replicates 7f88fb4b00a5789af37cbcf4e2c66cb514df2e24
S: 87b3f190bbab8f9bf8017820aa335ceb1221653c 192.168.177.101:7011
   replicates 06ee46eb5c0e9232f050d27c6c37674e3d25bdf7
S: f6641bc4a7088fb9be8347c8d01a04ae94ef9d1b 192.168.177.101:7012
   replicates 65cada26e0a3e0c6c1b6af245642d9f67ba7803f
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 192.168.177.101:7006)
M: 7f88fb4b00a5789af37cbcf4e2c66cb514df2e24 192.168.177.101:7006
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: f6641bc4a7088fb9be8347c8d01a04ae94ef9d1b 192.168.177.101:7012
   slots: (0 slots) slave
   replicates 65cada26e0a3e0c6c1b6af245642d9f67ba7803f
M: 06ee46eb5c0e9232f050d27c6c37674e3d25bdf7 192.168.177.101:7008
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: 65cada26e0a3e0c6c1b6af245642d9f67ba7803f 192.168.177.101:7009
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 87b3f190bbab8f9bf8017820aa335ceb1221653c 192.168.177.101:7011
   slots: (0 slots) slave
   replicates 06ee46eb5c0e9232f050d27c6c37674e3d25bdf7
S: b8227670d690efbf9412375accc4474fb015eb26 192.168.177.101:7010
   slots: (0 slots) slave
   replicates 7f88fb4b00a5789af37cbcf4e2c66cb514df2e24
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.


在机器上连接集群的7000节点,打开另一个连接7004节点,连接方式为:

##加参数 -C 可连接到集群,因为 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略,-p 参数为端口号
$ /mysoftware/redis-3.2.6/src/redis-cli -h 192.168.1.8 -c -p 70007004节点执行命令:

192.168.177.101:7004> set name redis

然后在另两台70007007端口,查看 key 为 name 的内容

192.168.1.8:7000> get name

出现结果 redis

集群完毕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值