redis 集群服务搭建及配置

1.首先配置单机版的redis这个比较简单直接将redis的压缩包解压 进入redis目录 make && make install prefix=/usr/local/redis即可

在usr下创建redis目录,将redis.tar.gz 复制到该目录并解压如下图----输入make 及make install PREFIX=/usr/local/redis    prefix后为执行安装的目录


进入 /usr/local/redis/bin 目录启动redis服务

方法一:前端启动  ./redis-server 如图启动成功


重新开启一个命令行窗口进入redis安装bin目录,开启redis客户端 ./redis-cli 试试 成功!


启动方法二 后端启动:将redis源码包中的redis.conf复制到/usr/local/redis/bin/目录下更改redis.conf配置如下图


启动redis 执行 ./redis-server redis.conf  开启客户端 ./redis-cli

 

2.配置redis集群

首先redis集群需要ruby rubygems等环境

安装ruby之前需要安装 openssl zlib等若linux没有安装gcc需要先安装gcc

2.1安装openssl ---下载openssl-1.0.1j.tar.gz,解压到/usr/openssl/目录下进入解压目录 执行./config -fPIC 如下图


执行 make 和 make install命令 ok(注意 openssl的安装可以参考一些教程 如果openssl 没用被正确安装 ruby的安装也会失败)

2.2 安装zlib ---同样下载zlib.tar.gz 解压到/usr/zlib/目录进入解压目录 执行 ./configure 命令如下图


执行 make 和make install 命令 ok!

2.3安装ruby 下载ruby-2.25.tar.gz解压到/usr/ruby/目录下 执行 ./configure  --with-openssl-dir=/local/usr/ssl命令 如下图


执行 make 和make install 命令完成后 进入ext/openssl目录执行 ruby ./extconf.rb如下图


执行make---报错 No rule to make target  '/include/ruby.h'

 

修改Makefile 文件 添加 top_srcdir = ../..如下图


再次执行make命令


执行make install 命令


成功

进入ruby 解压目录/ext/zlib 目录 执行 ruby ./extconf.rb 命令‘如下图


执行make和 make install 命令

成功


2.4安装rubygems---下载rubygems-2.6.7tgz文件 解压到/usr/rubygems/目录进入该解压目录执行 ruby ./setup.ruby命令如下图


2.5安装 redis-3.0.0.gem 如下图   /home/wl/Desktop/redis-3.0.0.gem 为我的 redis-3.0.0.gem 文件目录


至此 环境就搭建好了

这里我用同一台服务器不同的端口表示不同的redis服务器

在/usr/local下创建redis-cluster目录,其下创建redis01 redis02 redis03 redis04.....redis06总共6个redis服务 其中3个主节点 3个从节点,如下


将redis安装目录bin文件夹拷贝到每个redis01 redis02 ...redis06目录内,同时将redis源码目录src下的redis-trib.rb拷贝到redis-cluster目录下 ---注意将bin目录下的dump.rdb 和 .aof后缀的文件删除



修改每个redis01 redis02....目录下的redis.conf配置文件: 

port XXXX

cluster-enabled yes 

启动每一个redis服务 ./redis-server redis.conf

在这里创建一个startup.sh脚本


添加可执行权限 chmod +x startup.sh

执行./startup.sh -----查看是否启动 ps aux | grep redis


执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。

./redis-trib.rb create --replicas 1 192.168.10.194:7001 192.168.10.194:7002 192.168.10.194:7003 192.168.10.194:7004 192.168.10.194:7005  192.168.10.194:7006


>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.10.194:7001
192.168.10.194:7002
192.168.10.194:7003
Adding replica 192.168.10.194:7004 to 192.168.10.194:7001
Adding replica 192.168.10.194:7005 to 192.168.10.194:7002
Adding replica 192.168.10.194:7006 to 192.168.10.194:7003
M: 262e96dce35a01710966df9921eabf54915254b4 192.168.10.194:7001
   slots:0-5460 (5461 slots) master
M: 42febf223bb0b2f0904acabb82941ef99b97b50d 192.168.10.194:7002
   slots:5461-10922 (5462 slots) master
M: 5dbbbd1a6acf0485ac664b3ac75abd8bbe6c7b82 192.168.10.194:7003
   slots:10923-16383 (5461 slots) master
S: 8b648839330800f30598c68064296a16a5f6e74c 192.168.10.194:7004
   replicates 262e96dce35a01710966df9921eabf54915254b4
S: e1c5b278e4933376f73409368837f409945d449f 192.168.10.194:7005
   replicates 42febf223bb0b2f0904acabb82941ef99b97b50d
S: ffd0be0f461a3f530538ea71db5007de36413613 192.168.10.194:7006
   replicates 5dbbbd1a6acf0485ac664b3ac75abd8bbe6c7b82
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.10.194:7001)
M: 262e96dce35a01710966df9921eabf54915254b4 192.168.10.194:7001
   slots:0-5460 (5461 slots) master
M: 42febf223bb0b2f0904acabb82941ef99b97b50d 192.168.10.194:7002
   slots:5461-10922 (5462 slots) master
M: 5dbbbd1a6acf0485ac664b3ac75abd8bbe6c7b82 192.168.10.194:7003
   slots:10923-16383 (5461 slots) master
M: 8b648839330800f30598c68064296a16a5f6e74c 192.168.10.194:7004
   slots: (0 slots) master
   replicates 262e96dce35a01710966df9921eabf54915254b4
M: e1c5b278e4933376f73409368837f409945d449f 192.168.10.194:7005
   slots: (0 slots) master
   replicates 42febf223bb0b2f0904acabb82941ef99b97b50d
M: ffd0be0f461a3f530538ea71db5007de36413613 192.168.10.194:7006
   slots: (0 slots) master
   replicates 5dbbbd1a6acf0485ac664b3ac75abd8bbe6c7b82
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
成功

注意:

如果执行时报如下错误:

[ERR]Node XXXXXX is not empty. Either the node already knows other nodes (check withCLUSTER NODES) or contains some key in database 0

解决方法是删除生成的配置文件nodes.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aof、dump.rdb

客户端以集群方式登陆:


java代码测试,首先导入redis.jar包

@Test
public void testRedisCluster() {
JedisPoolConfig config = new JedisPoolConfig();
// 最大连接数
config.setMaxTotal(30);
// 最大连接空闲数
config.setMaxIdle(2);


// 集群结点
Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
jedisClusterNode.add(new HostAndPort("192.168.10.194", 7001));
jedisClusterNode.add(new HostAndPort("192.168.10.194", 7002));
jedisClusterNode.add(new HostAndPort("192.168.10.194", 7003));
jedisClusterNode.add(new HostAndPort("192.168.10.194", 7004));
jedisClusterNode.add(new HostAndPort("192.168.10.194", 7005));
jedisClusterNode.add(new HostAndPort("192.168.10.194", 7006));
JedisCluster jc = new JedisCluster(jedisClusterNode, config);


// JedisCluster jcd = new JedisCluster(jedisClusterNode);
jc.set("name", "zhangsan");
String value = jc.get("name");
System.out.println(value);


}

通过客户端查看一下


成功redis 集群搭建完毕 关于 redis集群主节点 从节点 的增加 和删除会在另外一篇文章中说明

ruby-2.25.tar.gz 官网下载地址          ruby-2.2.5.tar.gz 下载地址

openssl-1.0.2b.tar.gz 官网下载地址           openssl-1.0.2j.tar.gz 下载地址

zlib-1.2.8.tar.gz 官网下载地址               zlib-1.2.8.tar.gz 下载地址

rubygems-2.6.7.tgz 官网下载地址        rubygems-2.6.7.tgz下载地址

redis-3.0.7.tar.gz 官网下载地址            redis-3.0.7.tar.gz 下载地址

redis-3.0.0.gem 下载地址

猜你喜欢

转载自blog.csdn.net/name_is_wl/article/details/52875838