Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。和Memcached类似,但它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set -有序集合)和hash(哈希类型)。与Memcached相同的是,为了保证访问效率,数据都是缓存在内存中;与Memcached不同的是,redis会周期性的把更新的数据写入磁盘或者写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis的数据可以从master(主)服务器向任意数量的slave(从)服务器上同步,从服务器也可以是关联其他从服务器的主服务器,执行单层树复制,是Redis集群的一个重要特性。Redis集群最少要求6个节点,共需要6台机器,由于资源有限,我这边准备了3台机器,每台机器上配置两个节点。
系统环境
主机名 | IP地址 | 操作系统 | 节点 |
---|---|---|---|
Redis1 | 192.168.2.206 | Centos 7.5 64位 | Master port 7001、slave port 7002 |
Redis2 | 192.168.2.209 | Centos 7.5 64位 | Master port 7001、slave port 7002 |
Redis3 | 192.168.2.210 | Centos 7.5 64位 | Master port 7001、slave port 7002 |
一、安装redis
1、安装编译相关软件包
[[email protected] ~]# yum -y install make gcc gcc-c++ wget
2、下载redis并解压
[[email protected] tmp]# wget http://download.redis.io/releases/redis-5.0.0.tar.gz
[[email protected] tmp]# scp redis-5.0.0.tar.gz [email protected]:/tmp/
[[email protected] tmp]# scp redis-5.0.0.tar.gz [email protected]:/tmp/
[[email protected] tmp]# tar zxvf redis-5.0.0.tar.gz
3、安装redis
[[email protected] tmp]# cd redis-5.0.0/
[[email protected] redis-5.0.0]# make
[roo[email protected] redis-5.0.0]# make install PREFIX=/data/redis
出现上图画面表示安装成功
二、配置集群环境
1、复制配置文件
注:每台机器两个实例,故需要复制两份对应的配置文件
[[email protected] redis-5.0.0]# mkdir /data/redis/conf
[[email protected] redis-5.0.0]# cp redis.conf /data/redis/conf/redis-7001.conf
[[email protected] redis-5.0.0]# cp redis.conf /data/redis/conf/redis-7002.conf
2、修改配置文件
修改以下地方
bind 192.168.2.206 #redis监听的本地IP地址
port 7001 #监听端口,另一个节点改为7002
daemonize yes #开启后台运行,no表示运行在前台
pidfile /var/run/redis_7001.pid #pid文件,另一个节点改为7002
appendonly yes #开启aof日志,每次写操作都会记录一条日志
cluster-enabled yes #开启集群,把注释#去掉
cluster-config-file nodes-7001.conf #集群的配置文件,首次启动会自动创建,另一个节点改为7002
cluster-node-timeout 15000 #集群节点连接超时时间,15秒
3、添加firewalld防火墙允许端口
[[email protected] redis-5.0.0]# firewall-cmd --permanent --add-port=7001-7002/tcp
[[email protected] redis-5.0.0]# firewall-cmd --permanent --add-port=17001-17002/tcp
[[email protected] redis-5.0.0]# firewall-cmd --reload
4、启动redis服务
创建启动脚本,redis-all.sh
#!/bin/bash
/data/redis/bin/redis-server /data/redis/conf/redis-7001.conf
/data/redis/bin/redis-server /data/redis/conf/redis-7002.conf
将脚本分发到另外两台主机上
[[email protected] ~]# scp redis-all.sh [email protected]:/root/
[[email protected] ~]# scp redis-all.sh [email protected]:/root/
运行脚本,启动redis,每个节点都要启动
[[email protected] ~]# sh redis-all.sh
5、启动集群
创建启动集群脚本,redis-cluster.sh
#!/bin/bash
/data/redis/bin/redis-cli --cluster create 192.168.2.206:7001 192.168.2.209:7001 192.168.2.210:7001 192.168.2.206:7002 192.168.2.209:7002 192.168.2.210:7002 --cluster-replicas 1
参数说明
--cluster create:表示创建redis集群
--cluster-replicas 1:表示为集群中的每一个主节点指定一个从节点,即一比一的复制。
将脚本分发到另外两台主机上
[[email protected] ~]# scp redis-cluster.sh [email protected]:/root/
[[email protected] ~]# scp redis-cluster.sh [email protected]:/root/
运行脚本,启动集群,只需要在其中一个节点启动即可
[[email protected] ~]# sh redis-cluster.sh
注:中途需要输入yes来确认
三、测试
1、设置redis集群密码
注:所有节点都需要设置密码,且密码必须一致。
[[email protected] ~]# /data/redis/bin/redis-cli -h 192.168.2.206 -p 7001 -c
192.168.2.206:7001> config set masterauth xuad123456
192.168.2.206:7001> config set requirepass xuad123456
192.168.2.206:7001> exit
2、将密码写入配置文件
注:所有节点都需要将密码写入配置文件
[[email protected] ~]# /data/redis/bin/redis-cli -h 192.168.2.206 -p 7001 -c -a xuad123456
192.168.2.206:7001> config rewrite
192.168.2.206:7001> exit
3、查看密码
[[email protected] ~]# /data/redis/bin/redis-cli -h 192.168.2.206 -p 7001 -c -a xuad123456
192.168.2.209:7001> config get masterauth
192.168.2.209:7001> config get requirepass
原文地址:http://blog.51cto.com/andyxu/2319767