redis哨兵集群搭建
下载redis jar包redis-4.0.11.tar.gz放在/data/redis目录下
解压 命令:tar -zxvf redis-4.0.11.tar.gz
解压后如图所示
在/usr/local目录下创建redis_sentinel文件夹
将/data/redis目录下解压后的redis文件夹移动到/usr/local/redis_sentinel目录下,命令 mv /data/redis/redis-4.0.11 /usr/local/redis_sentinel/
在/usr/local/redis_sentinel目录下创建6379 6380 6381 sentinel_server四个文件夹,命令 mkdir 6379 6380 6381 sentinel_server
进入到redis-4.0.11目录下,命令 make all
将redis-4.0.11/redis.conf文件分别拷贝到6379 6380 6381的目录下,将redis-4.0.11/sentinel.conf文件拷贝到sentinel_server的目录下如下图所示
我们将6379作为主服务,编辑6379下的redis.conf文件
daemonize 设置为 yes
protected-mode 设置为no 如果不设置为no,web服务是连接不上的
注释掉bind ip地址,或者设置为0.0.0.0否则远程连接是访问不了的
编辑6380下的redis.conf文件
daemonize 设置为 yes;protected-mode 设置为no;注释掉bind ip地址(这三步同上);
另外修改 port为6380
设置当前节点的主节点 slaveof 127.0.0.1 6379
编辑6381下的redis.conf文件
daemonize 设置为 yes;protected-mode 设置为no;注释掉bind ip地址(这三步同上);
另外修改 port为6381
设置当前节点的主节点 slaveof 127.0.0.1 6379sentinel monitor mymaster 127.0.0.1 6379 1
编辑sentinel_server下的sentinel.conf文件
设置sentinel monitor mymaster 127.0.0.1 6379 1 (mymaster可以随意取,但是下面的需要跟这里一致;如果要在web程序中使用,127.0.0.1必须改为对应的ip地址,否则会连不上)
设置sentinel down-after-milliseconds mymaster 10000 也可以默认不变
添加 daemonize yes
这里默认不变
设置 failover-timeout mymaster 60000
启动 6379 6380 6381三个节点服务,如下图所示
启动sentinel服务
进入6379节点,显示为 主节点;设置aaa 为 111,并且能获取成功
进入6380节点,显示为从节点,可以成功获取aaa的值,但是不能添加值,这就是redis读写分离
进入6381节点,同6380节点一样
现在我们尝试将6379节点shutdown
我们在进入6380节点,发现master已经变成6381节点了
进入6381节点,如下图所示
我们发现 6381节点确实变成主节点,而且可以设置新的值;这就是redis哨兵集群,当主节点down掉之后,会在从节点中选一个作为新的主节点