一、环境说明
1.1、实验环境说明
本次实验是安装redis集群,安装的操作系统是centos系列,那redis的集群最少节点是3台master节点,为了保证数据的高可用性,需要给每一个master节点配置一台slave节点,所以最后,我们需要安装一共6个节点的redis实例,那问题是我需要准备6台机器吗,答案是不需要! ,准备一台机器即可,在一台机器上起6个redis实例即可,也叫伪集群,当然如果有条件的话,可以试试6台机器,安装的方法和一台都是一样的
1.2、安装组件说明
服务器操作环境: CentOS release 6.5 (x86_64) 、 CentOS 7
Redis版本: redis-3.2.10
ruby版本:ruby-2.3.7.tar.gz , redis集群的创建用到了ruby语言,所以也要安装ruby环境
gcc: 确保安装gcc编译器
二、环境检测
#安装gcc,如果已经装过可略过 yum install gcc # 查看gcc是否安装成功 gcc -v # #查看防火墙状态 service iptables status #如果开启则关闭防火墙,后面会用到php远程连接到redis集群中 service iptables stop
三、安装redis实例
3.1 下载和安装
mkdir -p /usr/local/redis-3.2.10/conf cd /usr/local/src #下载redis源码包 wget http://download.redis.io/releases/redis-3.2.10.tar.gz #解压到当前目录下 tar -zxvf redis-3.2.10.tar.gz cd redis-3.2.10 #编译 make #安装 make PREFIX=/usr/local/redis-3.2.10 install
3.2、redis 配置
#复制redis配置文件到安装目录 cp /usr/local/src/redis-3.2.10/redis.conf /usr/local/redis-3.2.10/conf/ #复制ruby的脚本到bin目录下,可全局使用脚本 cp /usr/local/src/redis-3.2.10/src/redis-trib.rb /usr/local/bin/ #验证是否成功,在任意目录执行以下命令 redis-trib.rb
3.3、启动redis实例
redis-server /usr/local/redis-3.2.10/conf/redis.conf netstat -tlun | grep 6379 redis-cli -p 6379
四、安装ruby
为什么安装ruby,redis和ruby有啥关系? 那是因为redis的集群用了ruby的脚本语言写了一个执行脚本,用来创建redis的集群的,所以想要执行ruby的脚本 ,必须要有ruby环境, redis3.0的版本都要求ruby的版本是 >= 2.2 , centos的yum默认安装的是2.2版本, 所以用了源码安装,当然你也可以配置yum源,以下是源码安装ruby的过程
4.1、下载和编译安装
cd /usr/local/src/ wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.gz tar -zxvf ruby-2.3.7.tar.gz mkdir /usr/local/ruby-2.3.7 #编译, ./configure --prefix=/usr/local/ruby-2.3.7/ make && make install #测试是否安装成功 ruby -v gem -v
4.2、配置环境变量
vim /etc/profile #在文件里的最下在加入,保存 export PATH=/usr/local/ruby-2.3.7/bin:$PATH #保存退出之后,执行此命令 source /etc/profile
4.3 、安装ruby的扩展包redis
gem install redis
五、创建集群
上面的所有步骤并不是创建集群,只是准备了redis 和 ruby的环境,这一步当中才是真正的来创建集群
5.1、创建实例的文件夹
mkdir -p /usr/local/redis-cluster/{7000,7001,7002,7003,7004,7005} #创建一个redis的集群配置文件,分别复制到上面的文件夹内,端口对应的就是上面的文件夹 vim redis.conf port 7000 #对应不同的端口 daemonize yes cluster-enabled yes cluster-config-file nodes-7000.conf #对应不同的端口 cluster-node-timeout 5000 appendonly yes
5.2、分别启动六个redis实例,当然可以写个shell脚本来统一执行
redis-server /usr/local/redis-cluster/7000/redis.conf redis-server /usr/local/redis-cluster/7001/redis.conf redis-server /usr/local/redis-cluster/7002/redis.conf redis-server /usr/local/redis-cluster/7003/redis.conf redis-server /usr/local/redis-cluster/7004/redis.conf redis-server /usr/local/redis-cluster/7005/redis.conf #启动之后,查看六个实例是否启动 netstat -tlun | grep 700 # 查看带有700的端口
5.4、启动集群
redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
5.5、测试集群
redis-cli -c -p 7000 set name test get name
选项说明: -c 开启集群模式 -p 指定端口
六、php连接集群
6.1 、为php编译redis模块
wget https://pecl.php.net/get/redis-4.0.2.tgz tar -zxvf redis-4.0.2.tgz cd redis-4.0.2 phpize ./configure make && make install #编辑php配置文件 vim /etc/php.ini #在文件最末尾加入,重启apache extension=redis.so
6.2、写一个php测试
<?php $obj_cluster = new RedisCluster(NULL, ['127.0.0.1:7000']); $obj_cluster->set("name","test"); echo $obj_cluster->get("name")