首先准备redis的安装包:redis-3.0.4.tar.gz
如果安装过程中遇到错误,可以参考以下内容:
[Linux] 安装软件时libc.so.6()错误
[Linux] 安装软件时make gcc找不到错误
下面是安装步骤
第一步:
#创建redis目录#
mkdir /usr/redis
第二步:
#解压文件至/usr/redis#
tar -xzvf redis -C /usr/redis
第三步:
#进入redis目录,make#
cd /usr/redis/redis-3.0.4/
在redis目录下执行make命令
make
mkdir /usr/redis/redis
make PREFIX=/usr/redis/redis install
第四步:
#拷贝哨兵脚本(不需要可以省略)
cd /usr/redis/redis-3.0.4/src/
cp redis-sentinel /usr/redis/redis
第五步:
配置环境变量
vim ~/.bash_profile
export REDIS_HOME=/usr/redis/redis
export PATH=$PATH:$REDIS_HOME/bin
source ~/.bash_profile
第六步:
//将redis做成后台服务
cd /usr/redis/redis-3.0.4/utils/
./install_server.sh
//全部回车即可
//修改服务名称
mv /etc/init.d/redis_6379 /etc/init.d/redisd
service redisd restart
//查看进程6379
ps -aux | grep 6379
redis-cli -p 6379
至此,redis安装完毕。
Redis集群主从复制
首先我们启动三个Redis
#创建三个conf文件
cd /etc/redis/
cp 6379.conf 6380.conf
cp 6379.conf 6381.conf
#修改端口
vim 6380.conf
port 6380
vim 6381.conf
port 6381
#启动
redis-server /etc/redis/6379.conf --port 6379
redis-server /etc/redis/6380.conf --port 6380
redis-server /etc/redis/6381.conf --port 6381
主从复制
#将6379为主,6380与6381为从
$6380> slaveof Hadoop1 6379
$6381> slaveof Hadoop1 6379
#当然,我们可以不通过命令来切换主从,通过Redis配置文件也可以,这里不做过多详解
注:从节点恢复自身身份
$6380> slaveof NO ONE
至此,主从复制就完成了,但是还存在问题,假设我们的主节点挂掉了,整个Redis集群就不完整了,所以我们下面要使用哨兵来解决这个问题
哨兵
我们首先启动三个redis服务,如果与上面那样启动过一次,就不用再次启动了,跳过此步
redis-server /etc/redis/6379.conf --port 6379
redis-server /etc/redis/6380.conf --port 6380
redis-server /etc/redis/6381.conf --port 6381
配置主从
#将6379为主,6380与6381为从
$6380> slaveof Hadoop1 6379
$6381> slaveof Hadoop1 6379
编辑哨兵配置文件
cd /usr/redis/redis
vim sentinel.conf
port 26379
sentinel monitor mymaster Hadoop1 6379 1 #1代表投票超过1,说明主节点挂掉
daemonize yes #以后端运行
启动哨兵
redis-sentinel sentinel.conf
这样我们就实现了通过哨兵实现主从切换,解决了单点故障,但是当哨兵挂掉时,又存在新的问题
哨兵集群
这里我们一共准备三份sentinel.conf的配置文件
cd /usr/redis/redis
cp sentinel.conf sentinel_6380.conf
cp sentinel.conf sentinel_6381.conf
修改三个配置文件
vim sentinel.conf
port 26380
sentinel monitor mymaster 192.168.211.128 6379 2
#daemonize yes
vim sentinel_6380.conf
port 26380
sentinel monitor mymaster 192.168.211.128 6379 2
#daemonize yes
vim sentinel_6381.conf
port 26381
sentinel monitor mymaster 192.168.211.128 6379 2
#daemonize yes
#注:上面的配置中 6379 1 修改为了 6379 2 , 意味着投票过2票 , 代表主节点挂掉
这时我们分别连接三个Redis
redis-cli -p 6379
redis-cli -p 6380
redis-cli -p 6381
#全部恢复成主节点,随从将6379变为主,6380与6381为从
$6379> slaveof NO ONE
$6380> slaveof NO ONE
$6381> slaveof NO ONE
$6380> slaveof Hadoop1 6379
$6381> slaveof Hadoop1 6379
启动哨兵集群
redis-sentinel sentinel.conf
redis-sentinel sentinel_6380.conf
redis-sentinel sentinel_6381.conf
这时我们 kill 6379
观察Redis日志,我们可以发现,随后将6381切换为主节点,6380为从节点
补充
由于本人是在单机器上完成的所有测试工作,所以启动Redis的时候一定要使用三个不同的配置文件 6379.conf , 6380.conf , 6381.conf
启动redis时,下面这种方式会有问题,例如
redis-server /etc/redis/6379.conf --port 6379
redis-server /etc/redis/6379.conf --port 6380
redis-server /etc/redis/6379.conf --port 6381
因为在Redis的哨兵机制中,Redis会修改配置文件,若公用一个配置文件6379.conf , 整个Redis集群和哨兵集群在重启后会无法选举Master,造成故障
至此,整个Redis就介绍完了