mac机器上安装
选择从homebrew安装最快最方便
brew search ** //查找某个软件包 brew list //列出已经安装的软件的包 brew install ** //安装某个软件包,默认安装的是稳定版本 brew uninstall **//卸载某个软件的包 brew upgrade ** //更新某个软件包 brew info ** //查看指定软件包的说明 brew cache clean //清理缓存
#首先查找redis版本brew search redis
//出现如下 ==> Searching local taps... hiredis redis redis-leveldb redis
brew install redis@4.0
………………此处抽根烟压压惊………………
结束后
echo 'export PATH="/usr/local/Cellar/redis@4.0/4.0.14/bin
:$PATH"' >> ~/.bash_profile
source ~/.base_profile
## 如果使用了iterm2代替了自带的终端,
需要在检查一下.zshrc环境变量中是否导入了.bash_profile,
如果没有,配置以下这行命令,就可以在iterm2窗口的任何路径下使用redis相关命令。
# User configuration
source ~/.bash_profile
Linux下部署(推荐使用)
1、下载
wget http://download.redis.io/releases/redis-4.0.8.tar.gz
或者curl;本地化安装
2、解压:
tar xzvf redis-4.0.8.tar.gz
3、make编译.c文件
cd redis-4.0.8 make
三台机器或者一台机器上三个redis实例。
分别为A,B,C机器。
A: 172.16.5.163B: 172.16.1.163C: 172.16.5.101
以上操作在三台机器上同样的操作。就算是安装好redis。
4.、修改A机器上的conf配置文件,去掉无用注释
cat sentinel.conf | grep -v "#" | grep -v "^$" > sentinel-26379.conf cat redis.conf | grep -v "#" | grep -v "^$" > redis-6379.conf rm -rf sentinel.conf redis.conf mv sentinel-26379.conf sentinel.conf
mv redis-6379.conf redis.conf
redis.conf 配置如下红框,其他不用修改保持默认
配置主从模式
5、把A机器上的redis.conf文件复制到B,C机器上。直接覆盖B、C实例中已经存在的文件
6、启动三台redis实例
src/redis-server ./redis.conf
7、建立主从模式
# 在B机器上执行 src/redis-cli -p 6379 SLAVEOF 172.16.5.163 6379 # 在C机器上执行 src/redis-cli -p 6379 SLAVEOF 172.16.5.163 6379
8、查看主从模式是否建立
# 分别在三台机器上登陆客户端
src/redis-cli
- A机器显示:
> set name sunhan显示:OK> info replication显示:role:master
- B机器显示:
- C机器显示:
到这里主从模式成功
配置哨兵模式
9、配置sentinel.conf文件
vim sentinel.conf
# 查看文件下面的配置字段有没有 port、bind、daemonize、protected-mode这四个字段一定要如下面配置
port 26379
bind 0.0.0.0
daemonize yes
protected-mode no
sentinel monitor mymaster 172.16.5.163(A机器的IP) 6379 2
sentinel config-epoch mymaster 1
sentinel leader-epoch mymaster 1
sentiinel.conf文件 中以上字段在A、B、C机器配置的都是相同的
# 分别在三台机器启动哨兵进程
src/redis-sentinel ./sentiinel.conf
10、监控哨兵集群是否生效
# 分别在三台机器查看sentinel集群信息
src/redis-ci -p 26379
> info sentinel
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.16.5.163:6379,slaves=2,sentinels=3
*******************以上哨兵模式搭建完成:**********
11、模拟哨兵模式下master宕机
## 这时候连接A机器上redis实例,进行关闭A机器上的redis进程 src/redis-cli shutdown
- 值得注意的是不能使用 pkill -9 redis 这样会把该redis实例下面中的sentinel进程也杀掉
- sentinel进程与redis进程不是一个进程,redis-work主线程宕机了,sentinel进程也不一定会宕机的
- redis-work与sentinel它们是相互独立的进程
- 这也意味着sentinel可以不依赖redis安装包下sentinel完全可以在别的服务器、或者额外的实例下进行搭建sentinel集群
12、测试failover机制
## 过了10秒中左右,在B机器上查看当前redis主从信息: src/redis-cli
> info replicatioon
这时候B机器已经变成master节点了。试一下是否可以进行set操作
这说明redis主从已经切换过来了,因为只有主服务才可以set操作。failover成功!
finally、以前的master恢复服务后结果如何,数据一致性是否安全
## 如果以后A机器重新启动了,A服务器曾经的王者 只能变成slaveof从节点做小弟了。