搭建Redis哨兵集群
1. 环境准备
准备3台服务器地址为:
192.163.1.11
192.163.1.12
192.163.1.13
并且保证三台机器能供互相ping通
至于容器间相互访问的方法,我采用docker方式:
2. 安装Redis
2.1 下载
http://download.redis.io/releases/redis-5.0.7.tar.gz
2.2 解压缩
#放入系统文件夹中,进入到该文件夹,我的文件夹在/usr/local/environment
tar xzf redis-5.0.7.tar.gz
2.3 编译
cd redis-5.0.7/
make
2.4 安装
cd src/
make install PREFIX=/usr/local/environment/redis
安装成功可以看到在/usr/local/environment/redis 路径下,多了一个bin文件夹,其中包含基本得命令脚本
2. 整理配置文件
由于我们是将运行文件install到了/usr/local/environment/redis路径下,所以我们还需要将配置文件拷贝进来。
这一步只是为了集中的管理文件,方便查找。
2.1 创建etc和logs文件夹
在/usr/local/environment/redis文件夹中创建etc文件夹和logs文件夹
cd /usr/local/environment/redis
mkdir etc
mkdir logs
结果如下图:
2.2 复制.conf文件到etc
进入解压缩后的redis-5.0.7文件夹中
复制redis.conf以及sentinel.conf
cp redis.conf ../redis/etc
cp sentinel.conf ../redis/etc
3. 修改配置文件
3.1 修改Redis.conf
3.1.1 主节点配置
我们选择192.168.1.11 作为主节点服务器
进入redis/etc文件夹
cd /usr/local/environment/redis/etc
vim redis.conf
修改内容如下:
1 bind:0.0.0.0 ##Redis 默认只允许本机访问,把 bind 修改为 0.0.0.0 表示允许所有远程访问。如果想指定限制访问,可设置对应的 ip。
2 port:6379 ##redis启动接口
3 protected-mode:no ##关闭保护模式,可以外部访问
4 daemonize:yes ##设置为后台启动
5 pidfile "/usr/local/environment/redis/var/run/redis_6379.pid" ##redi pid存储位置,建议加上端口,便于区分
6 logfile "/usr/local/environment/redis/logs/redis_6379.log" ##日志文件存储位置
7 requirepass 12345 ##设置 redis 连接密码
8 masterauth 12345 ##slave 服务连接 master 的密码
3.1.2 从节点配置
我们选择 192.168.1.12和192.168.1.13作为从节点服务器。
安装步骤同上。
修改内容如下:
1 bind:0.0.0.0
2 port:6378
3 protected-mode:no
4 daemonize:yes
5 pidfile "/usr/local/environment/redis/var/run/redis_6379.pid"
6 logfile "/usr/local/environment/redis/logs/redis_6379.log"
7 requirepass:12345
8 masterauth:12345
9 replicaof 192.168.1.11 6379 ##主节点的IP 端口
注意:
-
replicaof属性
从机的配置和主机相似,不同的地方是需要使用replicaof指定主机(master)的IP地址和端口,需要注意的是老版本使用的是 slaveof,目前我使用的5.0.7版本要使用 replicaof。replicaof XX.XX.XX.XX 6379 指定当本机为 slave 服务时,设置 master 服务的IP地址及端口,在 redis 启动的时候会自动跟 master 进行数据同步,所以两台从机都这样配置即可。
3.2 修改Sentinel.conf
编辑
vim sentinel.conf
修改内容如下:
1 port:26379 ## 默认端口为26379。
2 protected-mode:no ## 关闭保护模式,可以外部访问
3 daemonize:yes ##设置为后台启动
4 pidfile "/usr/local/environment/redis/var/run/redis-sentinel_26379.pid" ##redis sentinel pid文件位置
5 logfile "/usr/local/environment/redis/logs/sentinel_26379.log" ##日志文件
6 sentinel monitor master 192.168.1.11 6379 2 ##指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换
7 sentinel auth-pass master 12345 ##当在Redis实例中开启了requirepass,这里就需要提供密码
8 sentinel down-after-milliseconds master 3000 ##这里设置了主机多少秒无响应,则认为挂了
9 snetinel parallel-syncs master 1 ##主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1
10 sentinel failover-timeout master 180000 ##故障转移的超时时间,这里设置为三分钟
sentinel.conf文件主从都一致。三台保持一致就可以。
4. 连接节点查看信息
4.1 运行Redis
进入redis/bin文件夹,运行命令: 优先启动主节点
./redis-server ../etc/redis.conf ##启动redis
./redis-sentinel ../etc/sentinel.conf ##启动哨兵
由于我们设置了log文件的地址,所有在前端控制台不显示运行结果状态。如果想要查看启动情况,可以去logs文件夹中查看。
4.2 连接redis
连接master节点,进入redis/bin文件夹,运行命令:
./redis-cli -h 192.168.1.11 -p 6379
#返回结果后输入密码
auth 12345
#然后运行命令
info replication
结果如下:
至此,redis哨兵模式搭建完成