Linux 环境下Redis 集群搭建

本文主要用于对Suse Linux 环境下Redis 集群搭建进行指导。

一.安装环境

1.操作系统

    操作系统必须为Linux环境,建议使用Suse 或者 CentOs 环境;本文以Cent Os 7.1 为例进行安装。Suse 11 的版本安装步骤需要后续补充。

2.硬件环境

  考虑的Redis是内存数据库,主要用于数据缓存,生产环境内存至少要64G内存。

3.网络环境

   保证物理机之间网络是互通的,并且能够连接到互联网安装依赖。

二.相关规划

1.Redis 版本

    因为Redis 3.0 开始才支持集群,所以必须使用3.0以上的环境,考虑的生产环境是3.0.7,所以建议使用Redis 3.0.7 。

2.关于网络拓扑

     通常情况Redis master节点个数建议为奇数个。

  Redis 集群要求至少3个master节点,通常建议每个master节点一个slave节点,所以一个标准的Redis集群至少需要6个Redis实例。如果每个实例独占一个主机,每个实例的端口号可以相同,但是如果多个实例在同一个物理机上部署,必须通过端口号来区分不同的实例;避免冲突。

  本文是通过一个主机的方式进行部署,对应的端口规划如下表所示。

实例

IP

端口

1

192.168.1.168

7000

2

192.168.1.168

7001

3

192.168.1.168

7002

4

192.168.1.168

7003

5

192.168.1.168

7004

6

192.168.1.168

7005

3.关于主从

   为了提高系统的稳定性,每个master节点必须至少要有一个slave节点。

   对于商用环境,需要避免master和其对应的slave实例分布在同一个物理节点上。本指导文档只有一个物理节点,无法达到这个要求。

三.安装依赖

说明:安装过程中的所以确认都选择Yes.

1.安装TCL

Redis 安装需要使用TCL 脚本,所以需要安装TCL应用。安装命令如下表。

操作系统

操作命令

Cent Os 7.1

 yum install tcl

Suse 11

2.安装Ruby

Redis 集群的构建通过Ruby脚本,可以快速操作,所以需要安装Ruby。安装命令如下表。

操作系统

操作命令

Cent Os 7.1

 yum install Ruby

Suse 11

3. 安装Ruby 的Redis 客户端

注意:安装Redis Ruby客户端时,因为网络原因,可能比较慢,也可能会失败。   

操作系统

操作命令

Cent Os 7.1

 gem install redis

Suse 11

 gem install redis

四.安装Redis

1.获取版本

 通过cd 命令进入自己的工作目录,本文档的工作目录为 /home/user1;把.targ.gz redis安装包拷贝到工作目录;也可以通过wget命令直接从官方下载。   

命令

说明

cd /home/user1

 切换到工作目录

wget http://download.redis.io/releases/redis-3.0.7.tar.gz

  下载3.0.7版本

tar xvzf redis-3.0.7.tar.gz 

解压缩版本

2.编译和安装

请按下表的命令依次执行。

命令

说明

cd redis-3.0.7/

切换到源文件目录

make

执行编译

make test

依赖测试。如果本步骤出错,一般因为依赖没有安装成功,请参考第三节。

make install

安装

3.验证

通过命令测试安装的是否正确 redis-server -v,如果输出结果正确,表示安装成功。

命令

期望输出

redis-server -v

Redis server v=3.0.7 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=304908c1b6fa9078

 

五.集群搭建

1.目录创建 
本文档是在单物理节点上搭建,所以目录构建比较复杂,如果每个物理节点一个实例,根据自己需要创建就可以了,没有必要如此本表复杂。

命令

说明

mkdir app

创建主目录

cd app

进入主目录

mkdir  700{0,1,2,3,4,5}

创建6个目录,分别为7000,7001,7002,7003,7004,7005

2. 文件拷贝

把配置文件和ruby脚本从源代码中拷贝到对应的目录下面;下表以7000为例,所有的目录都要执行类似的操作。

命令

说明

cd 7000

进入7000目录

cp ../../redis-3.0.7/redis.conf  ./

拷贝默认配置文件

cp ../../redis-3.0.7/src/redis-trib.rb ./

拷贝集群脚本

3. 配置文件修改

每个实例目录下面(7000~7005)的redis.config进行修改,根据下表配置修改默认配置中的配置项。

配置项

配置说明

port 7000

设置实例运行的端口号,根据需要修改

cluster-enabled yes

启动集群监听

cluster-config-file nodes.conf

保存节点的配置文件名字

cluster-node-timeout 15000

集群超时设置

daemonize yes

按daemon运行

bind 192.168.1.168

设置实例运行的IP,根据需要修改

4. 配置文件修改

进入每个实例对应的文件件启动redis 实例,下表以7000和7001为例。

命令

说明

cd 7000

进入目录

redis-server redis.conf

启动redis实例

cd ../7001

切换目录

redis-server redis.conf

启动redis实例

5. 实例启动验证

通过命令 ps -ef | grep redis ,查看是否每个进程已经启动,检查端口是否正确,是否为cluster模式。

[root@localhost user1]# ps -ef | grep redis

root      3821  3379  0 11:47 pts/2    00:00:00 grep --color=auto redis

root     14928            00:04:56 redis-server 192.168.1.168:7000 [cluster]

root     15169            00:04:52 redis-server 192.168.1.168:7004 [cluster]

root     15233            00:04:54 redis-server 192.168.1.168:7005 [cluster]

root     15295            00:04:57 redis-server 192.168.1.168:7001 [cluster]

root     15326            00:04:57 redis-server 192.168.1.168:7002 [cluster]

root     15349            00:04:50 redis-server 192.168.1.168:7003 [cluster]

[root@localhost user1]#

六 集群部署

1.加入节点 
通过下面的命令把所有的节点加入到集群。

命令

Cd 7000

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

2. 检查提示
根据提示验证是否你需要的,如果是就选择呢yes.

3. 验证集群是否正确

输入cluster nodes 命令,验证集群信息。

命令

说明

redis-cli -h 192.168.1.168 -p 7000

连接到某一个实例

192.168.1.168:7000> cluster nodes

输入cluster ndoes,对应输出如下表

192.168.1.168:7000> cluster nodes

873665c462912d2e41271c6028856c907e651e74 192.168.1.168:7004 slave 3af41739c8366ee725fbfc3fd0ddf0516fd55d0e 0 1464667054059 5 connected

3af41739c8366ee725fbfc3fd0ddf0516fd55d0e 192.168.1.168:7001 master - 0 1464667057065 2 connected 5461-10922

2dc5e01985be5eca2975bcb5ad5daaa919c291fb 192.168.1.168:7003 slave 2a088151ae7ee285fb64856439944d203fd3fadf 0 1464667055061 4 connected

cb1c92af76b6d9d82def5600bf0d59068c71f826 192.168.1.168:7002 master - 0 1464667053056 3 connected 10923-16383

2a088151ae7ee285fb64856439944d203fd3fadf 192.168.1.168:7000 myself,master - 0 0 1 connected 0-5460

d6ee3d7094c4ff71782b93e166deaa15faf3017d 192.168.1.168:7005 slave cb1c92af76b6d9d82def5600bf0d59068c71f826 0 1464667056064 6 connected

六.常见问题

1.实例启动正常,但是通过其他机器无法连接

可能是因为防火墙吧端口禁掉的原因。

(这个常见问题需要进一步积累和补充)

原文地址:https://www.cnblogs.com/SvenLee86/p/5779947.html