主从+哨兵架构图
一个主节点(master)可拥有多个从节点(slave),从节点实现对主节点的复制,保证数据同步。而哨兵(sentinel)则对各节点进行监控,主要包括主节点存活检测、主从运行情况检测等,一旦主节点宕机,哨兵可自动进行故障转移 (failover)、主从切换。接下来就开始搭建这样一个集群,首先是主从结构,然后是哨兵模式
1.下载redis安装包
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
2.将压缩包解压到当前目录,并进入解压文件目录中
tar xzf redis-5.0.7.tar.gz
cd redis-5.0.7
3. 使用make命令对解压的 redis 文件进行编译
make MALLOC=libc
make install
4.修改配置文件将redis后台启动,注释bind
vim /opt/redis-5.0.4/redis.conf
daemonize yes ###后台运行
#bind 127.0.0.1 ###将bind注释掉
redis-server /opt/redis-5.0.4/redis.conf ###启动redis
redis主从配置
IP地址 | 端口 | 角色 |
192.168.2.241 | 6379 | master |
192.168.2.242 | 6379 | slave1 |
192.168.2.243 | 6379 | slave2 |
master配置
bind:0.0.0.0
port:6379
protected-mode:no
daemonize:yes
logfile:./redis.log
requirepass:resset@2022 //三台redis认证密码设置一致
masterauth:resset@2022
slave1配置
bind:0.0.0.0
port:6379
protected-mode:no
daemonize:yes
logfile:./redis.log
requirepass:resset@2022
masterauth:resset@2022
replicaof 192.168.2.241 6379
slave2配置
bind:0.0.0.0
port:6379
protected-mode:no
daemonize:yes
logfile:./redis.log
requirepass:resset@2022
masterauth:resset@2022
replicaof 192.168.2.241 6379
下面我们需要设置一下防火墙,否则主从机之间无法同步数据,命令如下,这里根据自己设置的端口进行更改。
firewall-cmd --add-port=6379/tcp --permanent --zone=public
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reloa
启动redis
redis-server /usr/local/src/redis-5.0.7/redis.conf
验证
Master
到slave1验证查看
到slave2验证查看
配置哨兵模式
部署三个哨兵,每台服务器一个哨兵,配置方式相同,如下
1.创建etc目录, 为了方便管理,将sentinel.conf复制到 etc 下
mkdir -p /usr/local/src/redis-5.0.7/etc
cd /data/redis-5.0.7/
cp sentinel.conf /data/redis-5.0.7/etc/
2.修改配置文件
vi sentinel.conf
配置文件修改如下,修改完毕后先按 esc ,然后:wq命令保存退出。
//端口默认为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 pwdtest@2019
//这里设置了主机多少秒无响应,则认为挂了。
sentinel down-after-milliseconds mymaster 3000
//主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。
sentinel parallel-syncs mymaster 1
//故障转移的超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 180000
3.防火墙设置
命令如下,这里根据自己设置的端口进行更改。
firewall-cmd --add-port=26379/tcp --permanent --zone=public
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
4.启动三个哨兵
redis-sentinel /usr/local/src/redis-5.0.7/etc/sentinel.conf
三个哨兵都启动后,可使用如下命令查看哨兵信息
redis-cli -p 26379
info sentinel
可以看到,哨兵已经监听到当前的主机IP端口和运行状态,并且有2台从机,3个哨兵。
容灾切换
现在我们模拟主机宕机,将主机 redis 服务关闭,如下,243现在为master
到另一台查看master切换到哪一台了,已经切换到2.242主机上了