前提:

redis使用的版本是4.0.5,在centos7下安装。首先安装单机版,然后配置一主二从,最后配置哨兵。

一、单机版安装

1.redis安装包redis-4.0.5.tar.gz下载, 可以去redis的官网下载, 地址:Index of /releases/

2.将下载的安装包上传到linux的/usr/local目录, 并进行解压:

tar -zxvf redis-4.0.5.tar.gz

3.进入到解压完的redis目录中并执行安装(如果报错,重试执行):

cd redis-4.0.5

make && make test && make install

注意:如果以上安装报错如下

则需要先安装tcl8.6.1-src.tar.gz,再重新解压安装redis。安装tcl8.6.1-src.tar.gz步骤如下:

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz

tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/

cd /usr/local/tcl8.6.1/unix/

./configure

make

make install

4.进入redis的目录中的util目录下

cd utils

5.将该目录下的redis_init_script文件重命名为redis_6379(6379是redis启动的端口号, 如果要使用其他端口号, 可以将文件命名为其他名称, 端口的修改可以在redis_6379中的REDISPORT配置修改, 默认为6379):

mv redis_init_script redis_6379

6.然后将redis_6379移动到/etc/init.d目录下:

mv redis_6379 /etc/init.d

7.创建两个目录/etc/redis, /var/redis/6379:

cd /etc
mkdir redis(存放redis的配置文件)
cd /var
mkdir redis
cd redis
mkdir 6379(存放redis的持久化文件)

8.进入到redis的目录中, 找到redis的配置文件redis.conf, 拷贝到/etc/redis下:

cd /usr/local/redis-4.0.5

cp redis.conf /etc/redis/

9.并重命名为6379.conf

cd /etc/redis/

mv redis.conf 6379.conf

10.修改6379.conf中的配置,搜索以下蓝色字体属性并修改

1daemonizeyes (让redis以后台进行启动)

(2port6379redis的启动端口号

(3dir/var/redis/6379 持久化文件存储位置

(4)requirepassXXXX (删除前面的注释符号#,XXXX为自己的密码

(5)logfile ./redis.log

11.启动redis, 执行如下命令:

cd /etc/init.d

chmod 777 redis_6379
./redis_6379 start

12.确认redis进程是否启动:

ps -ef | grep redis

二、一主二从配置

1.准备三台机器

10.12.12.191(主)、10.12.12.192(从)、10.12.12.193(从)

按照上面单机版安装步骤安装好redis

2.修改10.12.12.191(主)配置文件6379.conf

cd /etc/redis/

vi 6379.conf

搜索以下蓝色字体属性并修改:

bind0.0.0.0表示允许所有远程访问

protected-modeno (关闭保护模式,可以外部访问)

masterauthXXXX (slave服务连接master的密码本机redis密码一致)

3.修改10.12.12.192(从)、10.12.12.193(从)配置文件6379.conf

cd /etc/redis/

vi 6379.conf

搜索以下蓝色字体属性并修改:

bind0.0.0.0表示允许所有远程访问

protected-modeno (关闭保护模式,可以外部访问)

masterauthXXXX (slave服务连接master的密码本机redis密码一致)

slaveof10.12.12.191 6379 (主redis服务器ip 主redis端口

注意:5.0以上版本 slaveof 属性关键字为replicaof

4.重启10.12.12.192(从)、10.12.12.193(从)的redis

ps -ef | grep redis

先找到对应$pid,再进行kill $pid

cd /usr/local/bin

./redis-server /etc/redis/6379.conf

5. 10.12.12.191(主)查看redis主从信息

先登录

cd /usr/local/bin

./redis-cli -h 127.0.0.1 -p 6379 -a Cmcc@123

info replication

如下截图,显示有两个slave已经连接上

6.测试验证

登录10.12.12.191(主)、10.12.12.192(从)

cd /usr/local/bin

./redis-cli -h 127.0.0.1 -p 6379 -a XXXX(你的密码)

在10.12.12.191(主)上set值,在10.12.12.192(从)上get键

三、哨兵模式配置

1.将10.12.12.191(主)、10.12.12.192(从)、10.12.12.193(从)三台机器目录/usr/local/redis-4.0.5下的sentinel.conf文件内容都修改为以下:

# 端口

port 26379

# 保护模式关闭,这样其他服务起就可以访问此台redis

protected-mode no

# 哨兵模式是否后台启动,默认no,改为yes

daemonize yes

pidfile /var/run/redis-sentinel.pid

# log日志保存位置

logfile /usr/local/redis-4.0.5/sentinel/redis-sentinel.log

# 工作目录

dir /usr/local/redis-4.0.5/sentinel

# master主机ip地址

sentinel monitor mymaster 10.12.12.191 6379 2

# master中redis的密码

sentinel auth-pass mymaster XXXX

# 哨兵从master节点宕机后,等待多少时间(毫秒),认定master不可用。默认30s

sentinel down-after-milliseconds mymaster 30000

# 当替换主节点后,剩余从节点重新和新master做同步的并行数量,默认为 1

sentinel parallel-syncs mymaster 1

# 主备切换的时间,若在3分钟内没有切换成功,换另一个从节点切换

sentinel failover-timeout mymaster 180000

2.三台机器都执行以下,创建目录

cd /usr/local/redis-4.0.5

mkdir sentinel

3.分别在10.12.12.191(主)、10.12.12.192(从)、10.12.12.193(从)三台机器中执行以下命令,启动哨兵

cd /usr/local/bin/

./redis-sentinel /usr/local/redis-4.0.5/sentinel.conf

4.查看10.12.12.192(从)、10.12.12.193(从)的执行日志

cd /usr/local/redis-4.0.5/sentinel/

tail -100f redis-sentinel.log

5.测试验证

三台机器先登录

cd /usr/local/bin

./redis-cli -h 127.0.0.1 -p 6379 -a XXXX(你的密码)

info replication

然后停止10.12.12.191(主)的redis

ps -ef | grep redis

先找到对应$pid,再进行kill $pid

等待30秒再查看10.12.12.192、10.12.12.193的主从信息:

可以看到192的主节点信息变为了193,193节点由从变为了主。

重启191节点

cd /usr/local/bin

./redis-server /etc/redis/6379.conf

查看主从信息

info replication

可以看到重启后的191变为了从机,主机为193。