Redis集群搭建
2018-07-05 本文已影响0人
丿灬小朋
一、如果是自己搭建,可以用虚拟机搭建,一般需要三台虚拟服务器
安装前记得安装gcc,redis 基于gcc
yum install gcc
1. 下载和解包(也可以下载好的,从本地上传)
cd /test/
wget http://download.redis.io/releases/redis-3.2.1.tar.gz
tar -zxvf redis-3.2.1.tar.gz
2. 编译安装
cd redis-3.2.1
make && make install
3. 创建redis节点
测试我们选择3台服务器,分别为:192.168.33.20,192.168.33.21,192.168.33.22每分服务器有2个节点。
a) 我先在192.168.33.20创建2个节点:
cd /test/
mkdir redis_cluster //创建集群目录
cd redis_cluster
mkdir 7001 7002 //分别代表二个节点 其对应端口 7001 7002
//创建7001节点为例,拷贝到7001目录
cp /test/redis-3.2.1/redis.conf.7001
//拷贝到7001目录
cp /test/redis-3.2.1/redis.conf.7001
//拷贝到7002目录
cp /test/redis-3.2.1/redis.conf.7002
b) 分别对7001,7002文件夹中的2个文件修改对应的配置
daemonize yes //redis后台运行
bind 192.168.33.22 //对应自己的机器ip,默认会报错([ERR] Sorry, can't connect to node )
pidfile /var/run/redis_7001.pid //pidfile文件对应7001,7002 进程id
logfile "/test/redis_log/redis_7000.log" //日志记录文件
dir "/test/redis_db" //集群相关目录存放地址
port 7001 //端口7001,7002
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7001.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 5000 //请求超时 设置5秒够了
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
c) 在192.168.33.21 和192.168.33.22创建2个节点:对应的端口改为7003,7004,7005,7006配置对应的改一下就可以了。
d) 两台机启动各节点(三台服务器方式一样)
cd /test/redis-3.2.1
redis-server redis_cluster/7001/redis.conf
redis-server redis_cluster/7002/redis.conf
redis-server redis_cluster/7003/redis.conf
redis-server redis_cluster/7004/redis.conf
redis-server redis_cluster/7005/redis.conf
redis-server redis_cluster/7006/redis.conf
e) 查看服务
ps -ef | grep redis #查看是否启动成功
netstat -tnlp | grep redis #可以看到redis监听端口
pkill -9 redis #可以杀死启动的redis的所有进程
4、搭建集群
,接下来我们要把这些节点都串连起来搭建集群。官方提供了一个工具:redis-trib.rb(/usr/local/redis-
3.2.1/src/redis-trib.rb) 看后缀就知道这鸟东西不能直接执行,
它是用ruby写的一个程序,所以我们还得安装ruby.
yum -y install ruby ruby-devel rubygems rpm-build
再用 gem 这个命令来安装 redis接口。gem是ruby的一个工具包.
gem install redis //等一会儿就好了
***当然大部分情况下这样安装,安装完成后,会发现用yum安装的版本不对,版本不能太低
可以安装rubygems-2.6.13.tgz ,版本在2.0以上
tar zxvf rubygems-2.6.13.tgz
cd rubygems-2.6.13
ruby setup.rb
同时也需要安装redis模块 redis-3.3.1.gem
使用gem命令安装
gem install -l redis-3.3.1.gem
再重新执行上一条安装redis接口命令
上面的步骤完事了,接下来运行一下redis-trib.rb
/test/redis-3.2.1/src/redis-trib.rb
image.png
到这,应该明白了吧, 就是靠上面这些操作 完成redis集群搭建的。确认所有的节点都启动,接下来
使用参数create 创建 (在192.168.33.20中来创建)
/test/redis-3.2.1/src/redis-trib.rb create --replicas 1 192.168.33.20:7001 192.168.33.20:7002
192.168.33.21:7003 192.168.33.21:7004 192.168.33.22:7005 192.168.33.22:7006
解释下, --replicas 1 表示 自动为每一个master节点分配一个slave节点 上面有6个节点,程序会按
照一定规则生成 3个master(主)3个slave(从)
前面已经提醒过的 防火墙一定要开放监听的端口,否则会创建失败。
运行中,提示Can I set the above configuration? (type 'yes' to accept): yes //输入yes
接下来 提示 Waiting for the cluster to join.......... 安装的时候在这里就一直等等等,没反应,傻傻等半
天,看这句提示上面一句,Sending Cluster Meet Message to join the Cluster.
但大部分情况按照上述就可以完成
这下明白了,刚开始在一台Server上去配,也是不需要等的,这里还需要跑到Server2上做一些这样的操作。
在192.168.22.21, redis-cli -c -p 7002、7003 分别进入redis各节点的客户端命令窗口, 依次
输入 cluster meet 192.168.22.21 7000
回到Server1,已经创建完毕了。
查看一下 /test/redis/src/redis-trib.rb check 192.168.1.237:7000
到这里集群已经初步搭建好了。
5、redis命令
入redis客户端:
redis-cli -h 192.168.33.20 -p 7001 -c
查看redis信息
cluster info
查看节点信息
cluster nodes
6. 安装可能遇到的问题
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
相信自己,每一天都在进步!