此文章不再更新,最新版文章请查看我的个人博客:
右键在新标签页中打开链接即可。
---------------------------------------------------- 分割线 ----------------------------------------------------
redis作为一个高性能内存数据库,也常用于系统的缓存数据库,与memcache类似,再生产环境中,当然需要做高可用的结构,即主从复制,替换等功能,可以实现主数据库挂掉,从库自动补上,不影响正常使用。
redis的主从,哨兵配置也非常简单,一主N从,N哨兵都可以。具体的配置方法下面记录一下:
预设环境: 一主,2丛,3哨兵
1. master主机设置:
$ vim /etc/redis/6379.conf (编辑redis数据库配置文件)
--------------------------------------------------------------------------------------------
# bind 127.0.0.1 (注释掉这个配置项,允许任意用户连接)
protected-mode no (关闭保护进程)
daemonize yes (开启守护进程)
timeout 300 (客户端限制300秒后关闭连接,0则为不启动此功能)
#save 900 1 (注释掉三个数据持久化的选项,这样数据就会一直存于内存中, 不会持久化写入磁盘)
#save 300 10
#save 60 10000
maxmemory 2gb (最大内存限制,根据实际情况自定义)
----------------------------------------------------------------------------------------------
2. 从机,salve端的配置
$ vim /etc/redis/6379.conf (编辑配置文件)
------------------------------------------------------------
matser端的所有更改,这里也要更改
在此基础上,额外修改下面配置:
slaveof 192.168.9.79 6379 (指定matser机的IP和端口)
masterauth 123456 (指定主机master的redis连接密码,如果没有密码则不需要配置)
----------------------------------------------------------
3. 依次开启matser机,salve机的redis-server,然后运行下面的命令可测试是否设置成功
$ redis-cli -a 123456 (登陆redis)
127.0.0.1:6379>info (查看信息)
-----------------------------------------------------------------------------------------------
# Replication
role:master
connected_slaves:2
slave0:ip=172.18.42.180,port=6379,state=online,offset=874800532,lag=1
slave1:ip=172.18.42.181,port=6379,state=online,offset=874800532,lag=1
-----------------------------------------------------------------------------------------------
出现上面的内容,即证明主从设置成功
4. 哨兵的配置,哨兵可以不需要另外的电脑,一台主机可以同时开启一个server服务,一个sentinel哨兵服务。
$ vim /usr/local/redis-4.0.1/sentinel.conf ( 安装后就会有一个哨兵配置文件,修改之)
---------------------------------------------------------------------------------------------------------
daemonize yes ( 新添加的配置,启用守护进程)
logfile "/var/log/redis/sentinel-1.log" (新添加的,只当日志文件位置)
protected-mode no (关闭保护模式)
port 26379 (端口)
sentinel monitor mymaster 172.18.42.179 6379 2 (设定matser主机的IP和端口,后面的2,表示有两台或以上哨兵认定master挂掉了,则可认为master挂掉,进行master的切换,这里设置三台哨兵)
sentinel auth-pass mymaster xingqi (指定master主机的密码)
---------------------------------------------------------------------------------------------------------
5. 依次启动哨兵服务
$ redis-sentinel sentinel.conf (指定配置文件,启动哨兵服务)
6. 测试哨兵集群是否正常启动
$ redis-cli -p 26379 (登陆哨兵服务
127.0.0.1:26379>info sentinel
---------------------------------------------------------------------------
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=172.18.42.179:6379,slaves=2,sentinels=3
----------------------------------------------------------------------------------------------------------
出现上面的信息,则证明成功开启了主从哨兵集群。注明了matser机的IP,从机的数量和哨兵的数量。
OK,到此即可正常使用,可以自行进行测试,master关掉服务后,是否会自动切换matser,主从是否能正常复制数据等。