下载安装
我们将redis安装到/usr/local/目录下
cd /usr/local/
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xzf redis-5.0.5.tar.gz
cd redis-5.0.5
make
创建文件夹
mkdir /usr/local/redis/bin
mkdir /usr/local/redis/conf
mkdir /usr/local/redis/data
mkdir /usr/local/redis/logs
命令复制
我们将常用的命令(/usr/local/redis-5.0.5/src目录下)复制到/usr/local/redis/bin中
cp /usr/local/redis-5.0.5/src/redis-server mkdir /usr/local/redis/bin
cp /usr/local/redis-5.0.5/src/redis-cli mkdir /usr/local/redis/bin
准备配置文件
我们搭建一主两从的模式
复制出三份配置文件
cp /usr/local/redis-5.0.5/redis.conf /usr/local/redis/conf/redis-6379.conf
cp /usr/local/redis-5.0.5/redis.conf /usr/local/redis/conf/redis-6380.conf
cp /usr/local/redis-5.0.5/redis.conf /usr/local/redis/conf/redis-6381.conf
修改以下内容
#后台启动的意思
daemonize yes
#端口号
port 6379
#IP绑定,直接绑定0.0.0.0没毛病
bind 0.0.0.0
#这个文件会自动生成(如果同一台服务器上启动,注意要修改为不同的端口)
pidfile /var/run/redis_6379.pid
我这里是在同一台服务器上起三个redis服务,端口分别为6379、6380、6381
启动服务
启动三个redis服务
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6379.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6380.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6381.conf
配置一主二从,6379为master,6380、6381为replication
/usr/local/redis/bin/redis-cli -p 6380 slaveof 192.168.80.130 6379
/usr/local/redis/bin/redis-cli -p 6381 slaveof 192.168.80.130 6379
检查
查看进程 ps -ef | grep redis
查看主从配置 /usr/local/redis/bin/redis-cli -p 6379 info Replication
哨兵模式
至此基本的主从复制模式以及搭建完毕
下面在这基础上搭建哨兵模式
我们准备3个哨兵节点,端口分别为26379、26380、26381
准备配置文件
复制三份哨兵配置文件到 /usr/local/redis/conf
cp /usr/local/redis-5.0.5/sentinel.conf /usr/local/redis/conf/redis-26379.conf
cp /usr/local/redis-5.0.5/sentinel.conf /usr/local/redis/conf/redis-26380.conf
cp /usr/local/redis-5.0.5/sentinel.conf /usr/local/redis/conf/redis-26381.conf
修改以下配置
#配置文件:sentinel.conf,在sentinel运行期间是会被动态修改的
#sentinel如果重启时,根据这个配置来恢复其之前所监控的redis集群的状态
#绑定IP
bind 0.0.0.0
#后台运行
daemonize yes
#默认yes,没指定密码或者指定IP的情况下,外网无法访问
protected-mode no
#哨兵的端口,客户端通过这个端口来发现redis
port 26379
#哨兵自己的IP,手动设定也可自动发现,用于与其他哨兵通信
#sentinel announce-ip
#临时文件夹
dir /tmp
#日志
logfile “/usr/local/redis/logs/sentinel-26380.log”
#sentinel监控的master的名字叫做mymaster,初始地址为 192.168.80.130 6379,2代表两个及以上哨兵认定为死亡,才认为是真的死亡
sentinel monitor mymaster 192.168.80.130 6379 2
#发送心跳PING来确认master是否存活
#如果master在“一定时间范围”内不回应PONG 或者是回复了一个错误消息,那么这个sentinel会主观地(单方面地)认为这个master已经不可用了
sentinel down-after-milliseconds mymaster 1000
#如果在该时间(ms)内未能完成failover操作,则认为该failover失败,failover即故障转移
sentinel failover-timeout mymaster 3000
#指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长
sentinel parallel-syncs mymaster 1
启动哨兵节点
/usr/local/redis/bin/redis-server /usr/local/redis/conf/sentinel-26379.conf --sentinel
/usr/local/redis/bin/redis-server /usr/local/redis/conf/sentinel-26380.conf --sentinel
/usr/local/redis/bin/redis-server /usr/local/redis/conf/sentinel-26381.conf --sentinel
检查
查看redis进程 ps -ef | grep redis
我们可以通过 redis-cli -p 6379 monitor 查看哨兵的监控状态
端口开放
如果客户端工具连接不上,确认redis端口是否开放
我这里是centOS7
查看已经开放的端口
firewall-cmd --list-ports
开启端口
firewall-cmd --zone=public --add-port=26379/tcp --permanent
开启后重启防火墙
firewall-cmd --reload
我们需要把上面的端口都开放,应用程序才可以连接上。