[toc] 从今天开始开辟Redis相关方面的东西 上一节说了如何安装和配置redis 还有主从如何搭建 这节内容为哨兵的相关内容 关于哨兵大家可自行在网上搜索其用途和工作原理 系统为 Redhat 7.4 数据库为 Redis 5.0.8 ### 1. redis规划 | IP地址| 主机名|端口| 配置及数据文件位置|角色| | --------- | --------- |--------- |--------- |--------- | | 172.18.95.83 | SYTEST1|6380|/home/redis|master| | 172.18.95.84 |SYTEST2| 6380|/home/redis|slave| | 172.18.95.85 |SYTEST3| 6380|/home/redis|slave| ### 2. 哨兵规划 | IP地址| 主机名|端口| 文件位置| | --------- | --------- |--------- |--------- | | 172.18.95.83 | SYTEST1|26380|/home/redis| | 172.18.95.84 |SYTEST2| 26380|/home/redis| | 172.18.95.85 |SYTEST3| 26380|/home/redis| ### 3. 搭建3套redis和主从 首先我们根据以前的内容搭建3套redis 并全部启动 之后配置同步关系,即SYTEST3和SYTEST2同步SYTEST1 ### 4.哨兵配置文件 接下来我们分别在/home/redis目录下建立哨兵配置文件 **SYTEST1** ``` $ cat /home/redis/sentinel_26380.conf daemonize yes port 26380 bind 172.18.95.83 127.0.0.1 logfile "/home/redis/sentinel_26380.log" dir "/home/redis" sentinel monitor master_name 172.18.95.83 6380 2 sentinel down-after-milliseconds master_name 30000 sentinel parallel-syncs master_name 1 sentinel failover-timeout master_name 180000 sentinel auth-pass master_name 123456 ``` **SYTEST2** ``` $ cat /home/redis/sentinel_26380.conf daemonize yes port 26380 bind 172.18.95.84 127.0.0.1 logfile "/home/redis/sentinel_26380.log" dir "/home/redis" sentinel monitor master_name 172.18.95.83 6380 2 sentinel down-after-milliseconds master_name 30000 sentinel parallel-syncs master_name 1 sentinel failover-timeout master_name 180000 sentinel auth-pass master_name 123456 ``` **SYTEST3** ``` $ cat /home/redis/sentinel_26380.conf daemonize yes port 26380 bind 172.18.95.85 127.0.0.1 logfile "/home/redis/sentinel_26380.log" dir "/home/redis" sentinel monitor master_name 172.18.95.83 6380 2 sentinel down-after-milliseconds master_name 30000 sentinel parallel-syncs master_name 1 sentinel failover-timeout master_name 180000 sentinel auth-pass master_name 123456 ``` - daemonize 后台运行 - port 哨兵的监听端口,这里是26380,同样的一台机器可以启多个哨兵进程,但端口必须不一致 - bind 哨兵绑定的IP地址,这里填写本地IP - logfile 哨兵的日志文件 - dir 哨兵的工作目录 - sentinel monitor 后第一个参数指定哨兵监控的master的名称,可根据应用名称来命令,之后跟的是redis主库的IP地址 ,后面是redis的端口,最后是哨兵进程的仲裁数,这里3台哨兵设为2,代表当掉一个哨兵进程不影响功能 - sentinel down-after-milliseconds 代表哨兵判断主库主观下线需要的时间,为30s - parallel-syncs 代表failover时同时可以多少备库同步主库,这里是一台 - failover-timeout 代表故障转移的超时时间为180s - auth-pass代表连接redis进程判断其存活时的密码 如无特殊要求,哨兵的配置文件只需更改如下内容 - port 监听的端口 -- 第二行 - bind绑定的地址 -- 第三行 - master_name的值,根据应用来定,便于区分业务常见 -- 第四行 - 主库的地址 -- 第四行 - 哨兵仲裁节点的数量 -- 第四行 - 一个哨兵可监控多套主从环境,只需在此加入最后五行内容,注意修改相关内容 ### 5.启动主从和哨兵 按照如下顺序来启动哨兵 - 启动主redis - 启动备redis - 启动所有哨兵(不分顺序) **启动redis** ``` su - redis redis-server /home/redis/redis_6380.conf ``` **启动哨兵** ``` su - redis redis-sentinel /home/redis/sentinel_26380.conf ``` [image:936 size:orig] 这里我们看到启动哨兵后自动在配置文件加入了一些内容 可以很容易的看到 - 哨兵根据我们提供的主库找到另外两个从库 - 同样也找到了另外两个哨兵进程 - epoch为纪元,可以理解为切换一次+1,当前为0 ### 6. 关闭主从和哨兵 - 关闭所有哨兵(不分顺序) - 关闭从库 - 关闭主库 ### 7.连接哨兵 我们采取和连接redis一样的方式连接哨兵,只不过需要更改端口 ``` su - redis redis-cli -p 26380 -a 123456 ``` 同样我们可以使用info命令来查看哨兵状态 [image:937 size:orig] - status 为ok - address为主redis的地址和端口 - slaves代表主库的从库数量 - sentinels代表有三个哨兵进程,注意非存活的数量,我们关闭一台哨兵这里仍显示3