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.实例启动正常,但是通过其他机器无法连接
可能是因为防火墙吧端口禁掉的原因。
(这个常见问题需要进一步积累和补充)