番外1:redis集群搭建:主从及哨兵模式

redis集群

1. 三种集群

1.1 主从模式

  • 特点

      1.主从模式中redis数据库分为两种:主数据库(master)和从数据库(slave)	
      2.主数据库负责读写,从数据库只能读数据,主数据库实时同步数据到从数据库。
      3.一个master可以有多个slave,一个slave只能有一个master
      4.master挂了不影响从库的读数据,但是整个集群此时不能写数据,当master重启后,集群继续支持读数据。
      5.slave挂了不影响整个集群的读写数据,但是此slave停止服务,当重启后继续提供服务。
      6.salve不能提升为master。
      7.整个集群向外提供服务。
    
    • 优势

        搭建简单
      
    • 缺点

        数据库master存在单点故障,整个集群不能提供完全的高可用。
        单机的内存限制了整个集群可写的数据量。
      

1.2 sentinel模式

sentinel模式中文读作哨兵模式,是从主从模式上发展过来的。

  • 特点

      1.在主从模式的基础上,增加了哨兵。
      2.当master挂了后,sentinel会从slave从选择一个作为master,并修改他们的配置文件,其他slave的配置slaveof也会被修改。
      3.当挂了的master重启后,将不再作为master,而是降级为slave。
      4.为了防止sentinel挂了,整个集群停止服务,启动多个sentinel形成sentinel集群。
      5.多个sentinel之间会自动监控
    
      6.sentinel最好不要和redis部署在同一台机器上,不然redis的服务挂了后,sentinel也挂了。
      7.sentinel集群对外提供服务,不需要直连master,slave
    
  • 优势

      	整个集群不存在单点故障,master挂了后,选择slave自动提升为master。
    
  • 缺点

     	由于本质还是主从模式,所以整个集权可写入的数据大小受限于
     	单个机器内存的大小。
    

1.3 cluster模式

cluster的出现是为了解决单机容量有限的集群方案,会对写入的数据进行分片,写入多个Redis实例中。

  • 特点

      	1.多个redis节点网络互联,数据共享
      	2.如果配置了俩个副本三个分片,则需要六个Redis实例,当数据过大时,可以增加机器扩容。
      	3.每个集群至少需要三个主数据库才能正常运行。
      	4.所有节点都是一主一从(可以配置一主多从),其中slave不提供服务,只作为备用
      	5.不支持批量命令(如:mget,mset),因为redis需要把key均匀的分布到多个节点上。	
    
  • 优点

     	集群写入数据容量没有限制,支持大量数据缓存。高可用
    
  • 缺点

     	client实现复杂,提升了开发的难度
    

2.搭建

2.1单机安装redis安装

下载源码包

https://blog.csdn.net/u013565163/article/details/104278827

	
	// redis命令默认目录
	/usr/local/bin
	// 我们新建的目录
		//日志,aof,备份存放目录
		/homepa1/redis/redisdataX
		//配置文件的目录
		/homepa1/redis/redisconf
		//redis解压的源码
		/homepa1/redis/redis-5.0.7
		

2.2 配置主从模式

机器信息

我们在一台机器上模拟。

ip 主从 端口
192.168.0.1 6000
192.168.0.1 6001
192.168.0.1 6002

master-6000配置

		cd /homepa1/redis/redisconf
		vim redis6000.conf
	
		bind   192.168.0.1  //监听ip, 多个ip以空格分割,客户端 -h 配置的参数(如果服务器有多个网卡,指定暴露服务的ip)
		port    6000 //监听端口
		daemonize yes // 允许后台启动
		logfile "/homepa1/redis/redisdata6000/redis.conf" //日志文件
		dir   /homepa1/redis/redisdata600 //数据库备份文件存放目录
		masterauth pass9527 //slave连接密码
		requirepass pass9527 //master连接密码
		appendonly yes /在配置的dir目录下生成,appendonly.aof文件,将每一次写操作请求都追加到appendonly.aof文件
		

slave-6001配置

	
cd /homepa1/redis/redisconf
vim redis6001.conf
		
bind   192.168.0.1  	//监听ip,多个ip以空格分割,客户端 -h 配置的参数(如果服务器有多个网卡,指定暴露服务的ip)
port    6001 			//监听端口
replicaof 192.168.0.1 6000 		// mastert ip和端口
daemonize yes 			// 允许后台启动
logfile "/homepa1/redis/redisdata6001/redis.conf" 		//日志文件
dir   /homepa1/redis/redisdata6001 		//数据库备份文件存放目录
masterauth pass9527 	//slave连接密码
requirepass pass9527 	//master连接密码
appendonly yes 		//在配置的dir目录下生成,appendonly.aof文件,将每一次写操作请求都追加到appendonly.aof文件
		

slave-6002配置

	
cd /homepa1/redis/redisconf
vim redis6002.conf
		
		
bind   192.168.0.1  //监听ip, 多个ip以空格分割,客户端 -h 配置的参数(如果服务器有多个网卡,指定暴露服务的ip)
port    6002 //监听端口
replicaof 192.168.0.1 6000 // mastert ip和端口
daemonize yes // 允许后台启动
logfile "/homepa1/redis/redisdata6002/redis.conf" //日志文件
dir   /homepa1/redis/redisdata6002 //数据库备份文件存放目录
masterauth pass9527 //slave连接密码
requirepass pass9527 //master连接密码
appendonly yes /在配置的dir目录下生成,appendonly.aof文件,将每一次写操作请求都追加到appendonly.aof文件

分别启动三个redis实例

redis-server /homepa1/redis/redisconf/redis6000.conf
redis-server /homepa1/redis/redisconf/redis6001.conf
redis-server /homepa1/redis/redisconf/redis6002.conf	

2.3 配置哨兵模式

机器信息

我们在一台机器上模拟。

ip 主从 端口
192.168.0.1 6000
192.168.0.1 6001
192.168.0.1 6002
192.168.0.1 哨兵 6003
192.168.0.1 哨兵 6004

master和slalve的参考【配置主从模式】

配置sentinel-6003

cd /homepa1/redis/redisconf
vim sentinel6003.conf
		
daemonize yes  //后台启动
logfile "/homepa1/redis/redisdata6003/sentinel.log"  //日志文件
dir /homepa1/redis/redisdata6003 // 工作目录
sentinel monitor mymaster 192.168.0.1 6000 2 //判断master失效至少需要2个sentinel同意,建议设置为n/2+1,n为sentinel个数 
sentinel auth-pass mymaster pass9527 // password
sentinel down-after-milliseconds mymaster 30000 //判断master主观下线时间,默认30s

配置sentinel-6004

cd /homepa1/redis/redisconf
vim sentinel6004.conf
		
daemonize yes  //后台启动
logfile "/homepa1/redis/redisdata6004/sentinel.log"  //日志文件
dir /homepa1/redis/redisdata6004 // 工作目录
sentinel monitor mymaster 192.168.0.1 6000 2 //判断master失效至少需要2个sentinel同意,建议设置为n/2+1,n为sentinel个数 
sentinel auth-pass mymaster pass9527 // password
sentinel down-after-milliseconds mymaster 30000 //判断master主观下线时间,默认30s

启动哨兵

redis-sentinel /homepa1/redis/redisconf/sentinel6003.conf
redis-sentinel /homepa1/redis/redisconf/sentinel6004.conf

参考

https://blog.csdn.net/miss1181248983/article/details/90056960

发布了121 篇原创文章 · 获赞 56 · 访问量 167万+

猜你喜欢

转载自blog.csdn.net/u013565163/article/details/104824448