您的位置:首页 > 数据库 > Redis

Linux Redis集群安装

2016-07-04 16:31 537 查看
Linux Redis集群安装
软件版本:redis-3.0.7,必须使用该稳定版本否则会错各种问题

IP地址:
节点1:192.168.1.101:7000   主节点
节点2:192.168.1.101:7001   从节点
节点3:192.168.1.102:7002   主节点
节点4:192.168.1.102:7003   从节点
节点5:192.168.1.103:7004   主节点
节点6:192.168.1.103:7005   从节点

Redis安装(六个节点)
1:安装相关编译的依赖包
# yum -y install gcc make

2:安装redis(六个节点)
软件上传到/opt目录
# cd /opt/
# tar -zxvf redis-3.0.7.tar.gz
# mv redis-3.0.7/ redis/
# cd redis/
# make && make install

1、下载redis稳定版本:redis-3.0.7

2、保证节点机器之间能够两两免密码登陆

3、在node1 、node2、node3 上分别安装2个redis

  目录如下:

   node1 7000  /opt/redis

   node1 7001  /opt/soft/redis

   node2 7002  /opt/redis

   node2 7003  /opt/soft/redis

   node3 7004  /opt/redis

   node3 7005  /opt/soft/redis

   (1)安装相关编译的依赖包
# yum -y install gcc make

(2)安装redis(六个节点)
软件上传到/opt目录
# cd /opt/
# tar -zxvf redis-3.0.7.tar.gz
# mv redis-3.0.7/ redis/
# cd redis/
# make && make install

4、修改每一台redis的redis.conf文件,必须修改端口

port 7000

cluster-enabled yes

cluster-config-file nodes-7000.conf

cluster-node-timeout 5000

appendonly yes

 

port 7001

cluster-enabled yes

cluster-config-file nodes-7001.conf

cluster-node-timeout 5000

appendonly yes

 

port 7002

cluster-enabled yes

cluster-config-file nodes-7002.conf

cluster-node-timeout 5000

appendonly yes

 

port 7003

cluster-enabled yes

cluster-config-file nodes-7003.conf

cluster-node-timeout 5000

appendonly yes      -----》官方推荐使用appendonly yes,

                           但是现实生活中,我们需要使用appendfsync everysec,原因

                           是3.0版本后每秒写入一次,做了优化!!

 

port 7004

cluster-enabled yes

cluster-config-file nodes-7004.conf

cluster-node-timeout 5000

appendonly yes

 

port 7005

cluster-enabled yes

cluster-config-file nodes-7005.conf

cluster-node-timeout 5000

appendonly yes

 

5、在每个redis机器上分别创建一个文件夹cluster-test,

   然后进入cluster-test,再创建一个文件夹名称以端口号命名的文件夹

 

mkdir cluster-test

cd cluster-test

mkdir 7000

 

mkdir cluster-test

cd cluster-test

mkdir 7001

 

mkdir cluster-test

cd cluster-test

mkdir 7002

 

mkdir cluster-test

cd cluster-test

mkdir 7003

 

mkdir cluster-test

cd cluster-test

mkdir 7004

 

mkdir cluster-test

cd cluster-test

mkdir 7005

 

 

6、在目录cluster-test下各创建一个redis.conf 文件, 文件的内容可以使用上面修改好的redis.conf配置文件,

但记得将配置中的端口号从7000改为与文件夹名字相同的号码

 

分别进入cluster-test目录下启动各个节点,注意:这里的redis.conf文件,一定要是上面刚刚修改好的文件(即cluster-test目录下的文件)

cd 7000

../redis-server ./redis.conf

 

cd 7001

../redis-server ./redis.conf

 

cd 7002

../redis-server ./redis.conf

 

cd 7003

../redis-server ./redis.conf

 

cd 7004

../redis-server ./redis.conf

 

cd 7005

../redis-server ./redis.conf

 

如果正常,则会打印如下日志:

[82462] 26 Nov 11:56:55.329 * No cluster configuration found, I'm 全局唯一的id

 

7、进入任意一个机器,安装ruby的环境

#yum install ruby -y

#yum install rubygems -y

 

8、进入上述机器的redis的src目录下,安装

#gem install redis

 

9、创建集群,在node1的 7001节点的src目录下执行

./redis-trib.rb create --replicas 1 192.168.1.101:7000 192.168.1.101:7001 192.168.1.102:7002 192.168.1.102:7003 192.168.1.103:7004 192.168.1.103:7005

 

[OK] All 16384 slots covered

这表示集群中的 16384 个槽都有至少一个主节点在处理, 集群运作正常。

 

集群创建成功

10、进入node1开始测试

#redis-cli -c  -p 7000(注意:如果报错,说明7000所在节点不是master,所以换一个节点即可,7001)

127.0.0.1:7000> set 3432 123

OK

 

11、编写java 代码,jedis分片测试:

 public static void main(String[] args) {

        Set<HostAndPort> jedisClusterNodes=new HashSet<HostAndPort>();

        jedisClusterNodes.add(new HostAndPort("node1",7000));

        jedisClusterNodes.add(new HostAndPort("node1",7001));

        jedisClusterNodes.add(new HostAndPort("node2",7002));

        jedisClusterNodes.add(new HostAndPort("node2",7003));

        jedisClusterNodes.add(new HostAndPort("node3",7004));

        jedisClusterNodes.add(new HostAndPort("node3",7005));

        JedisCluster jc=new JedisCluster(jedisClusterNodes);

        String key=String.valueOf(new Random().nextInt(368391));

        int value=new Random().nextInt(238239);

        jc.set(key,String.valueOf(value));

        String valu=jc.get(key);

        System.out.println("结果:"+valu);

    }

默认7000 7002 7004 最先启动,则是主节点

 

测试故障转移时,kill 掉其中一个主节点,那么对应得从节点马上变为主节点!!

仍然执行以上代码时,也是正常的!!

 

12、停止集群

   在node1节点上的/opt/redis目录下执行:

   #./src/redis-cli -c -p 7000 shutdown

   #./src/redis-cli -c -p 7001 shutdown

 

   在node3节点上的/opt/redis目录下执行:

   #./src/redis-cli -c -p 7000 shutdown

   #./src/redis-cli -c -p 7001 shutdown

 

   在node3节点上的/opt/redis目录下执行:

   #./src/redis-cli -c -p 7000 shutdown

   #./src/redis-cli -c -p 7001 shutdown

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: