linux安装redis(单机模式,哨兵模式,分布模式)

1.单机版安装

		1.下载redis安装包到/usr/local/目录下面
		   [下载地址](wget http://download.redis.io/releases/redis-3.2.1.tar.gz)
		
		2.解压
			tar -zxvf redis-3.2.1.tar.gz
		
		3.移动文件
			mkdir redis
			mv 解压后到文件 redis/
		
		4.安装
			cd redis/文件名称
			make && make install
		
		5.配置环境变量 vi /etc/profile 增加下,:号后面是redis的目录
			export PATH=$PATH:/usr/local/redis/redis-3.2.1/src
			export PATH=$PATH:/usr/local/redis/redis-3.2.1
			
		
		6.修改redis.conf配置文件如下 vi redis.conf
			daemonize:yes,是否以守护线程的方式启动(后台启动)
			requirepass:设置认证密码,永久生效
			
			下面是设置端口号的(不设置默认是6379)
			#pidfile文件对应 7000
			pidfile  			/var/run/redis_7000.pid
			#端口号
			port				7000
			#集群配置文件首次启动自动生成
			cluster-config-file   nodes_7000.conf
			
			最后保存退出

		7.启动redis(去往redis.conf文件放置的目录下)
			redis-server ./redis.conf
		
		8.连接redis客户端
			redis-cli -h  ip地址 -p 端口号 -a 密码

		9.开放端口号
			 /sbin/iptables -I INPUT -p tcp --dport 需要开放redis的端口号 -j ACCEPT
			 保存:/etc/rc.d/init.d/iptables save
			 查看端口是否开放:/sbin/iptables -L -n
			 重启服务:/etc/init.d/iptables restart   (如果 不行 在重启服务)

2.哨兵模式安装

1.安装redis

		1.下载redis安装包到/usr/local/目录下面
		   [下载地址](wget http://download.redis.io/releases/redis-3.2.1.tar.gz)
		
		2.解压
			tar -zxvf redis-3.2.1.tar.gz
		
		3.移动文件
			mkdir redis
			mv 解压后到文件 redis/
		
		4.安装
			cd redis/文件名称
			make && make install
		
		5.配置环境变量 vi /etc/profile 增加下,:号后面是redis的目录
			export PATH=$PATH:/usr/local/redis/redis-3.2.1/src
			export PATH=$PATH:/usr/local/redis/redis-3.2.1
2.配置redis
	1.在redis目录下创建三个文件夹 (注意不是在redis安装目录下)
		mkdir master slave1 slave2

	2.将redis安装目录下的redis.conf 和 sentinel.conf 复制到 master slave1 slave2 下面
		cp redis.conf  ../master/
		cp sentinel.conf  ../master/
		cp redis.conf  ../slave1/
		cp sentinel.conf  ../slave1/
		cp redis.conf  ../slave2/
		cp sentinel.conf  ../slave2/

	3.前往master 目录下 编辑 redis.conf 和 sentinel.conf 配置文件
		cd ../master

		vi redis.conf 
			修改如下:
					#默认是127.0.0.1,如果用其他ip,springboot连接redis可能不会太顺利 
					bind  0.0.0.0       
					Protected-mode no
					port 7000         
					#redis可以带配置文件后台运行 
					daemonize yes
					#对应7000,7001,7002
					pidfile "/var/run/redis_7000.pid"
					# 数据存放位置
					dir “/usr/local/redis/master/data”
					slave-priority 100  
					appendonly yes
					appendfsync everysec 
					masterauth "123456"
					requirepass "123456"
		
		vi sentinel.conf 
			修改如下:
					daemonize yes 
					port 27000
					#指定工作目录
					dir "/usr/local/redis/master/data"
					logfile "./sentinel.log" 
					#指定别名  主节点地址  端口  哨兵个数(需要几个确认)
					sentinel monitor mymaster 127.0.0.1 7000 2
					#如果哨兵3s内没有收到主节点的心跳,哨兵就认为主节点宕机了,默认是30秒  
					sentinel down-after-milliseconds mymaster 3000
					#选举出新的主节点之后,可以同时连接从节点的个数
					sentinel parallel-syncs mymaster 1
					#如果10秒后,master仍没活过来,则启动failover,默认180s  
					sentinel failover-timeout mymaster 10000 
					#配置连接redis主节点密码  
					sentinel auth-pass mymaster 123456  


	4.前往slave1 目录下 编辑 redis.conf 和 sentinel.conf 配置文件
		cd ../salve1
		
		vi redis.conf 
			修改如下:
					bind  127.0.0.1
					Protected-mode no
					port 7001                            
					daemonize yes 
					pidfile "/var/run/redis_7001.pid"   
					dir "/usr/local/redis/slave1/data”
					#地址为主机的ip +端口
					slaveof 127.0.0.1 7000
					#由于是从机设置为只读
					slave-read-only yes
					#当master挂掉的时候sentinel会选择slave-priority较小的值作为 新的master
					slave-priority 90
					appendonly yes
					appendfsync everysec 
					masterauth "123456"
					requirepass "123456"
		
		vi sentinel.conf 
			修改如下:
					daemonize yes 
					port 27001
					#指定工作目录
					dir "/usr/local/redis/master/data”
					logfile "./sentinel.log" 
					#指定别名  主节点地址  端口  哨兵个数(需要几个确认)
					sentinel monitor mymaster 127.0.0.1 7000 2
					#如果哨兵3s内没有收到主节点的心跳,哨兵就认为主节点宕机了,默认是30秒  
					sentinel down-after-milliseconds mymaster 3000
					#选举出新的主节点之后,可以同时连接从节点的个数
					sentinel parallel-syncs mymaster 1
					#如果10秒后,master仍没活过来,则启动failover,默认180s  
					sentinel failover-timeout mymaster 10000 
					#配置连接redis主节点密码  
					sentinel auth-pass mymaster 123456  


	5.前往slave2 目录下 编辑 redis.conf 和 sentinel.conf 配置文件
		cd ../salve2
		
		vi redis.conf 
			修改如下:
					bind  127.0.0.1
					Protected-mode no
					port 7002                            
					daemonize yes 
					pidfile "/var/run/redis_7002.pid"   
					dir "/usr/local/redis/slave2/data”
					#地址为主机的ip +端口
					slaveof 127.0.0.1 7000
					#由于是从机设置为只读
					slave-read-only yes
					#当master挂掉的时候sentinel会选择slave-priority较小的值作为 新的master
					slave-priority 80
					appendonly yes
					appendfsync everysec 
					masterauth "123456"
					requirepass "123456"
		
		vi sentinel.conf 
			修改如下:
				daemonize yes 
				port 27002
				#指定工作目录
				dir “/usr/local/redis/master/data” 
				logfile "./sentinel.log" 
				#指定别名  主节点地址  端口  哨兵个数(需要几个确认)
				sentinel monitor mymaster 127.0.0.1 7000 2
				#如果哨兵3s内没有收到主节点的心跳,哨兵就认为主节点宕机了,默认是30秒  
				sentinel down-after-milliseconds mymaster 3000
				#选举出新的主节点之后,可以同时连接从节点的个数
				sentinel parallel-syncs mymaster 1
				#如果10秒后,master仍没活过来,则启动failover,默认180s  
				sentinel failover-timeout mymaster 10000 
				#配置连接redis主节点密码  
				sentinel auth-pass mymaster 123456  
3.启动
	1.启动redis
		cd /usr/local/redis/master
		mkdir data
		redis-server  ./redis.conf
		
		cd /usr/local/redis/slave
		mkdir data
		redis-server  ./redis.conf
		
		cd /usr/local/redis/slave2
		mkdir data
		redis-server  ./redis.conf

	2.启动sentinel
		cd /usr/local/redis/master
		redis-sentinel  ./sentinel.conf
		
		cd /usr/local/redis/slave
		redis-sentinel  ./sentinel.conf
		
		cd /usr/local/redis/slave2
		redis-sentinel  ./sentinel.conf
4.基本操作命令

	#进入redis客户端
		redis-cli -h 127.0.0.1 -p 7000 -a 123456

	#查看节点信息
		info replication

3.分布式安装

备注:
redis-check-rdb 	redis-cli 执行文件都在 redis目录下的src里面
1:安装ruby环境(只需要在一台上面安装即可,用来执行redis-trib.rb命令)
	
	#前往loacl目录下
		cd /usr/loacl/

	#创建ruby目录
		mkdir ruby

   #下载ruby安装包 (wget url)
   	   [下载链接](https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz)

	#解压
		tar zxf ruby-2.5.1.tar.gz
	
	#删除安装包
		rm -rf ruby-2.5.1.tar.gz

	#进入ruby目录
		cd ruby-2.5.1

	#配置
		./configure --prefix=/usr/local/ruby

	#安装
		make && make install

	#设置环境变量 vi /etc/profile
		export PATH=$PATH:/usr/local/ruby/bin:

	#更新配置
		source /etc/profile

	#配置zlib
		#添加zlib库
			yum install zlib-devel

		#去到ruby安装包的ext/zlib目录
			ruby extconf.rb

		#修改 vi ext/zlib/MakeFIle
			增加:top_srcdir = ../..
			保存推出 wq!
			再次执行 make && make install
			
	#配置openssl库
		#添加openssl库
			yum install openssl-devel

		#去到ruby安装包的ext/openssl目录
			ruby extconf.rb

		#修改 vi ext/openssl/MakeFIle
			增加:top_srcdir = ../..
			保存推出 wq!
			再次执行 make && make install

	#镜像加速
		gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
		gem sources -l

	#安装redis集群需要的配置
		gem install redis
2.安装redis

		1.下载redis安装包到/usr/local/目录下面
		   [下载地址](wget http://download.redis.io/releases/redis-3.2.1.tar.gz)
		
		2.解压
			tar -zxvf redis-3.2.1.tar.gz
		
		3.移动文件
			mkdir redis
			mv 解压后到文件 redis/
		
		4.安装
			cd redis/文件名称
			make && make install
		
		5.修改redis.conf 配置文件 vi redis.conf
			修改如下:
				#外网可以访问的地址
				Bind 127.0.0.1
			
				#redis后台运行
				daemonize   yes
			
				#pidfile文件对应 7000,7001,7002  。。。
				pidfile  			/var/run/redis_7000.pid
			
				#端口号 对应 7000,7001,7002,。。。
				port				7000
			
				#开启集群
				cluster-enabled      yes
			
				#集群配置文件首次启动自动生成 7001,7002,7003 。。。
				cluster-config-file   nodes_7000.conf
			
				#请求超时设置 5秒
				cluster-node-timeout    5000
			
				#aof日志开启
				appendonly		     yes
3.部署集群

	#1.在redis文件下创建redis_cluster文件夹和子文夹
			mkdir redis_cluster
			mkdir 7000 7001 7002 7003 7004 7005
			cd redis_cluster

	#2.复制上次修改的redis.conf文件到 7000 -- 7005 中,并修改其中的7000关键字符即可
		cp ../redis/redis.conf 7000/
		cp ../redis/redis.conf 7001/
		cp ../redis/redis.conf 7002/
		cp ../redis/redis.conf 7003/
		cp ../redis/redis.conf 7004/
		cp ../redis/redis.conf 7005/
		
	#3.启动全部redis
		#先回到redis目录下
		cd ../redis/
		redis-server ../redis_cluster/7000/redis.conf
		redis-server ../redis_cluster/7001/redis.conf
		redis-server ../redis_cluster/7002/redis.conf
		redis-server ../redis_cluster/7003/redis.conf
		redis-server ../redis_cluster/7004/redis.conf
		redis-server ../redis_cluster/7005/redis.conf

	#4.启动集群 先去到 redis 下的 src 里面 才有 redis-trib.rb 脚本
		./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
4.配置redis集群密码
	
	1.设置集群密码 进入各个实例进行设置:(如果redis挂掉后,重启后不会自动连接集群,因为密码重置为null了,需要进去在设置一次密码,方可自动重新连接集群)
		./redis-cli -h 127.0.0.1 -c -p 7000
		config set masterauth 123456
		auth 123456
		config set requirepass 123456
		auth 123456
		config rewrite

	2.之后登录集群使用 ./redis-cli -h 127.0.0.1 -c -p 7000 -a 123456 这样格式

	3.修改ruby中的client.rb文件
		#查找这个文件(需要在root用户 或是 su 权限)
			find / -name "client.rb"

		#出现类似这个文件/usr/local/ruby/lib/ruby/gems/2.5.0/gems/redis-4.1.3/lib/redis/client.rb 带有redis字眼的,vi 编辑他
			vi 	client.rb文件路径
			修改 password 的属性,使其变成 :password => "你的redis密码",
5.集群的基本操作

	#1.备注
		重启集群只需要重启各个实例的redis即可(即关闭所有redis,在重新启动)
		添加环境变量,在任何目录下都可以使用redis命令,:号后面是redis的目录
		export PATH=$PATH:/usr/local/redis/redis-3.2.1/src
		export PATH=$PATH:/usr/local/redis/redis-3.2.1


	#2.启动redis(记得前往redis目录下)
		redis-server ../redis_cluster/7000/redis.conf


	#3.关闭redis(记得前往redis目录下)
		ps -ef | grep redis
		kill -9 redis实例的进程号
		
		
	#4.检查集群状态
		./redis-trib.rb check 127.0.0.1:7000


	#5.查看集群信息
		./redis-trib.rb info 127.0.0.1:7000


	#6.修复集群 只能修复如下两种情况
		1. 节点中存在处于迁移中(importing或migrating状态)的slot。
		2. 节点中存在未分配的slot
			./redis-trib.rb fix 127.0.0.1:7000


	#7.在线迁移slot(槽)
		1:--from 参数后面填   源节点id,如果有多个源节点,使用逗号分隔,如果是all,则源节点为集群内出目标节点外的其它所有主节点
		2:--to:目标节点id,只能填写一个。
		3:--slots:需要迁移槽的总数量。
		4:--yes:迁移无需用户手动确认。
		5:--timeout:控制每次migrate操作的超时时间,默认为60000毫秒。
		6:--pipeline:控制每次批量迁移键的数量,默认为10。
			
			./redis-trib.rb reshard host:port --from 参数 --to 参数 --slots 参数 --yes --timeout 参数 --pipeline 参数


	#8.删除节点
		在删除节点之前,其对应的槽必须为空,所以,在进行节点删除动作之前,必须使用redis-trib.rb reshard将其迁移出去。
		需要注意的是,如果某个节点的槽被完全迁移出去,其对应的slave也会随着更新,指向迁移的目标节点。
			./redis-trib.rb del-node ip地址:端口号 节点id


	#9.添加主节点
		./redis-trib.rb add-node 	新的ip:新的端口号 	任意redis实例的ip:任意redis实例的端口号
		最后按照上面的命令分配槽(slot)(这里就不写了)
		
		
	#10.添加从节点(可不设置--master-id,此时会随机选择主节点。)
		./redis-trib.rb add-node --slave --master-id	 主节点的id 	需要添加从节点的ip:端口号 主节点的ip:端口号


	#11.设置节点超时时间,其实就是设置redis.conf配置文件中的cluster-node-timeout参数。这里采用命令添加
		./redis-trib.rb set-timeout ip地址:端口号 毫秒数值

	#12.创建redis集群 1表示 前面3个是主节点 后面3个是从节点
			./redis-trib.rb create --replicas 1 ip地址:端口号 ip地址:端口号 ip地址:端口号 ip地址:端口号 ip地址:端口号 ip地址:端口号

	#13.重新创建redis集群
		1.暂停全部redis
		2.删除持久化文件和节点信息文件
			rm -rf appendonly.aof  dump.rdb redis.conf nodes-7000.conf nodes-7001.conf nodes-7002.conf nodes-7003.conf nodes-7004.conf nodes-7005.conf
		3.重新创建集群,命令在上面

	#14.开启对外端口
		/sbin/iptables -I INPUT -p tcp --dport 7000 -j ACCEPT
		/sbin/iptables -I INPUT -p tcp --dport 7001 -j ACCEPT
		/sbin/iptables -I INPUT -p tcp --dport 7002 -j ACCEPT
		/sbin/iptables -I INPUT -p tcp --dport 7003 -j ACCEPT
		/sbin/iptables -I INPUT -p tcp --dport 7004 -j ACCEPT
		/sbin/iptables -I INPUT -p tcp --dport 7005 -j ACCEPT

		保存:/etc/rc.d/init.d/iptables save
		查看端口是否开放:/sbin/iptables -L -n
		重启服务:/etc/init.d/iptables restart   (如果 不行 在重启服务)

	#15.创建sh脚本执行启动redis
			前往/usr/local/redis/redis_cluster/目录下
			cd /usr/local/redis/redis_cluster/
			
			新建文件 vi redis-cluster-start-all.sh,新增如下:
			cd /usr/local/redis/redis_cluster/7000/
			redis-server ./redis.conf
			cd /usr/local/redis/redis_cluster/7001/
			redis-server ./redis.conf
			cd /usr/local/redis/redis_cluster/7002/
			redis-server ./redis.conf
			cd /usr/local/redis/redis_cluster/7003/
			redis-server ./redis.conf
			cd /usr/local/redis/redis_cluster/7004/
			redis-server ./redis.conf
			cd /usr/local/redis/redis_cluster/7005/
			redis-server ./redis.conf
			保存退出
			将文件设置成可执行文件
			chmod +x redis-cluster-start-all.sh

			执行文件
			./redis-cluster-start-all.sh
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值