redis集群主从(一主二从)+哨兵模式的安装部署

本文内容主要来自链接: https://stor.51cto.com/art/202004/614443.htm

以实际操作步骤记录本笔记(主要记录了笔记,详细内容的了解还是看上面的链接)

redis安装卸载的链接:https://www.cnblogs.com/zerotomax/p/7468833.html#uninstall

 一、下载安装包并解压

1、在官网下载安装包:wget http://download.redis.io/releases/redis-5.0.7.tar.gz

2、解压安装包:tar -zxvf redis-5.0.7.tar.gz

3、将redis文件夹移动到/usr/local/redis下:mv redis-5.0.7 /usr/local/redis (因为搜到的各种安装,都是安装到该路径下,为了方便操作,我也使用相同目录)

4、切换到/usr/local/redis目录下:cd /usr/local/redis

二、编译及安装

1、yum安装gcc-c++:

        yum install gcc-c++

2、执行make进行编译:

[root@localhost redis]# make
cd src && make all
make[1]: Entering directory `/usr/local/redis/src'
    CC Makefile.dep
.
.
.
.
Hint: It's a good idea to run 'make test' ;)

make[1]: Leaving directory `/usr/local/redis/src'
[root@localhost redis]#

  然后可以在src目录下看到,有这几个文件:

redis-server、 redis-sentinel、 redis-cli、 redis-benchmark、 redis-check-rdb、 redis-check-aof

3、编译成功后,进入 src 文件夹,执行 make install 进行 Redis 安装。

[root@localhost redis]# make install
cd src && make install
make[1]: Entering directory `/usr/local/redis/src'
    CC Makefile.dep
make[1]: Leaving directory `/usr/local/redis/src'
make[1]: Entering directory `/usr/local/redis/src'

Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: Leaving directory `/usr/local/redis/src'
[root@localhost redis]#

  切换到/usr/local/bin目录下,查看,可看到第2步的几个文件已经在bin下了

[root@localhost bin]# ll 
总用量 30908
-rwxr-xr-x. 1 root root 4985275 9月   3 10:16 redis-benchmark
-rwxr-xr-x. 1 root root 7185836 9月   3 10:16 redis-check-aof
-rwxr-xr-x. 1 root root 7185836 9月   3 10:16 redis-check-rdb
-rwxr-xr-x. 1 root root 5092431 9月   3 10:16 redis-cli
lrwxrwxrwx. 1 root root      12 9月   3 10:16 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 7185836 9月   3 10:16 redis-server
[root@localhost local]#

  

 4、由于 src 下文件非常多,我们可以将几个常用的命令和 conf 配置文件复制出来进行统一管理,如下:(本步骤不是必须执行的,直接使用原本路径下的redis.conf、mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-rdb、redis-cli、redis-server、redis-sentinel等文件也可以)

(1)新建 bin 和 etc 文件夹

 切换到/usr/local/redis目录下:cd /usr/local/redis

新建bin目录:mkdir bin

新建etc目录:mkdir etc

(2)回到安装目录,将redis.conf复制到 etc文件夹下,如下:

 切换到/usr/local/redis目录下:cd /usr/local/redis

复制redis.conf到etc目录下:cp redis.conf /usr/local/redis/etc 

 (3)进入 src 文件夹下,将mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-rdb、redis-cli、redis-server、redis-sentinel文件复制到 bin 文件夹,如下:

 切换到/usr/local/redis/src目录下:cd /usr/local/redis/src

复制以上文件到bin目录下:

cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server redis-sentinel /usr/local/redis/bin/ 

 5、启动redis(若未执行第4步,则可使用/usr/local/redis/src路径下的redis-server进行启动)

 切换到 bin 目录,使用./redis-server即可启动 redis 服务,但是这种方式没有指明配置文件,redis 将采用默认配置,所以我们需要让 redis 按照我们的配置文件来启动,如下,启动时指定刚才我们复制到 etc 文件夹下的redis.conf。

命令如下:

cd /usr/local/redis/bin 
./redis-server /usr/local/redis/etc/redis.conf 

 启动成功会在最后一行显示ready to accept connections

  • 测试redis服务是否成功启动:

(1)启动后查看redis的进程,6379端口就是我们运行的 redis 服务(配置文件中默认端口为6379)。

使用命令:ps -aux | grep redis  或者使用命令:ps -ef | grep redis

 (2)使用redis-cli命令连接客户端,如下:

命令:redis-cli -p 6379

6、关闭redis服务

如果需要关闭redis服务,使用如下命令即可关闭。

命令:

redis-cli -p 6379 

shutdown 

或者使用kill -9 pid强制删除进程(实在没办法时使用kill -9命令)。

三、Redis 集群 

使用以上步骤在另外两台服务器上安装好redis,即三台服务器redis均安装完成,再进行以下操作。

 1、Redis 主从配置

 (1)进入主机(三台服务器可任选一台作为主机)的/usr/local/redis/etc路径下,修改redis.conf配置文件:vi redis.conf

修改以下配置:

bind:0.0.0.0  #Redis 默认只允许本机访问,把 bind 修改为 0.0.0.0 表示允许所有远程访问。如果想指定限制访问,可设置对应的 ip。
port:6379  #监听端口默认为6379,想改其他也行。
protected-mode:no  #关闭保护模式,可以外部访问。
daemonize:yes #设置为后台启动。
logfile:./redis.log  #redis 日志文件,生成后在 bin 目录下可找到。
requirepass:Passw0rd #设置 redis 连接密码。
masterauth:Passw0rd #slave 服务连接 master 的密码(从服务连接主服务的密码)。

注意:若不设置密码,则可将requirepass、masterauth两行注释掉。在前面加#即可。 

(2)在从机修改如下配置(除主机之外的两台服务器均需修改):

bind:0.0.0.0 
port:6379 
protected-mode:no 
daemonize:yes 
logfile:./redis.log 
requirepass:Passw0rd 
masterauth:Passw0rd 
replicaof 192.168.231.130 6379  #指定当本机为 slave 服务时,设置 master 服务的IP地址及端口,在 redis 启动的时候会自动跟 master 进行数据同步,所以两台从机都这样配置即可。

注:由于我们搭建的集群需要自动容灾切换,主数据库可能会变成从数据库,所以三台机器上都需要同时设置 requirepass 和 masterauth 配置项。若不设置密码,则三台服务器都不设置,三台服务器都注释掉密码的设置

 2、数据同步

 上面我们主从节点的配置文件配置好后,重启 redis 服务,进入 bin 目录即可查看配置文件中指定的redis.log日志文件。

 查看日志使用命令cat redis.log 或者tail -f redis.log 或者tail -n 30 redis.log(任意一个命令都可以,其中30这个数字可修改)

(1)设置防火墙

下面我们需要设置一下防火墙,否则主从机之间无法同步数据,命令如下,这里根据自己设置的端口进行更改。

firewall-cmd --add-port=6379/tcp --permanent --zone=public 
#重启防火墙(修改配置后要重启防火墙) 
firewall-cmd --reload 

 linux7防火墙重启命令:systemctl restart firewalld.service

(2)查看三台机器的信息

至此主从结构搭建完毕,不出意外主从机已经可以数据同步,下面我们分别查看三台机器的信息,如下:

连接redis命令:redis-cli -p 6379

使用命令:info replication 

三台机器的情况分别如下:

主机:

 从机:

 (3)主从验证

接下来我们在主机(master)添加几条数据,看从机(slave)是否可以获取到,如果能获取,说明数据已经同步到了从机,主机添加数据,如下:

 主机:

在主机执行:

set name test(test可换成其他任意字符)

get name

如下图所示:

 两台从机均可获取到数据:

如上操作,两台从机已经获取到数据,证明主从搭建成功并可同步数据。

四、哨兵模式搭建

 这里我们部署三个哨兵,每台服务器一个哨兵,配置方式相同,如下

(1)同样为了方便管理,首先将sentinel.conf复制到 etc 下

 切换到redis安装路径下:cd /usr/local/redis/

复制文件至etc下:cp sentinel.conf /usr/local/redis/etc/ 

(2)编辑sentinel.conf

切换路径:cd /usr/local/redis/etc/ 

vi sentinel.conf

//端口默认为26379。 
port:26379 
//关闭保护模式,可以外部访问。 
protected-mode:no 
//设置为后台启动。 
daemonize:yes 
//日志文件。 
logfile:./sentinel.log 
//指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换。 
sentinel monitor mymaster 192.168.231.130 6379 2 
//当在Redis实例中开启了requirepass,这里就需要提供密码,若不设置密码,则注释掉。 
sentinel auth-pass mymaster Passw0rd 
//这里设置了主机多少秒无响应,则认为挂了。 
sentinel down-after-milliseconds mymaster 3000 
//主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。 
snetinel parallel-syncs mymaster 1 
//故障转移的超时时间,这里设置为三分钟。 
sentinel failover-timeout mymaster 180000 

(3)防火墙设置 

命令如下,这里根据自己设置的端口进行更改。

firewall-cmd --add-port=26379/tcp --permanent --zone=public 
#重启防火墙(修改配置后要重启防火墙) 
firewall-cmd --reload 

(4)启动三个哨兵: 

切换路径:cd /usr/local/redis/bin

启动哨兵:redis-sentinel /usr/local/redis/etc/sentinel.conf 

三个哨兵都启动后,可使用如下命令查看哨兵信息:

redis-cli -p 26379

info sentinel 

可以看到,哨兵已经监听到当前的主机IP端口和运行状态,并且有2台从机,3个哨兵。

 五、容灾切换(验证主从哨兵模式是否成功部署)

1、模拟主机宕机

我们模拟主机宕机,将主机 redis 服务关闭,如下:

  • 主机启动redis服务,命令:redis-server /usr/local/redis/etc/redis.conf 
  • 再查看redis的信息,命令:

    redis-cli -p 6379

    info replication

  可以看到主机已经变成了从机。

 

 使用相同的命令查看原从机,发现有一台从机已经变成了主机。

命令:redis-cli -p 6379

   info replication

2、查看日志

需要注意的是,主从切换后配置文件已经被自动进行了更改,我们现在看一下新上位的主机 redis 日志,如下

  可以看到,当主机挂了的时候,一直连接主机被拒绝,当哨兵选举它为主机后,它成功执行重写的配置文件,并且连接了其他从机。

至此,主从+哨兵的集群架构搭建完毕。

 

附:对redis主从及哨兵模式的理解

(1)redis主从

redis主从搭建完成后,若主机宕机,从机不会自动升级为主机,可手动更改配置,将从机升级为主机。但是新主机只有主机,没有从节点。

原主机重新启动后,从节点仍可连接到主节点。

(2)哨兵

哨兵模式就是为了解决redis主从仍需手动修改配置的问题的。

哨兵 Sentinel 可以不用人为干预而应对各种redis集群的故障。

哨兵Sentinel的作用:

  • 监控所有redis主服务器、从服务器是否运行正常。
  • 自动故障迁移,redis主服务器出故障时,可自动选择一台从服务器作为主服务器,其他从服务器也会成为新主服务器的从节点服务。原主机重启后,会成为新主机的从机。
posted @ 2021-01-15 16:34  灿烂初秋  阅读(653)  评论(0编辑  收藏  举报