redis
集群安装
node
环境
redis
版本:
5.0.5
redis
操做系统:
ubuntu 14.04
以上版本或内核
4.2.0-27-generic
以上
ubuntu
ruby:sudo apt-get install ruby
ruby
单节点安装
下载
http://download.redis.io/releases/redis-5.0.5.tar.gz
app
解压
tar -xvf redis-5.0.5.tar.gz
测试
编译安装
咱们安装到
opt
下面
ui
sudo mv redis-5.0.5 /opt/redis
spa
给当前用户赋权
(root
不须要此操做
)
操作系统
sudo chown -R
用户名
:
用户组
/opt/redis
线程
进入到
/opt/redis
cd /opt/redis
编译
make
编译测试
make test
![]()
配
置redis.confvi redis.conf修改daemonizeno为daemonizeyes修改最大内存2G(redis的内存为物理内存的0.75,就是说,物理内存*0.75/节点数)修改#maxmemory为maxmemory 2147483648修改日志文件logfile "redis.log"启动服务:./src/redis-server redis.conf验证是否启动:ps -ef|grep reids
测试
./src/redis-cli
set aa 1
get aa
del aa
keys *
到此,咱们单节点redis安装成功
配置密码
中止
redis
服务
./src/redis-cli shutdown
配置redis.confvi redis.conf修改#requirepass foobared为requirepass 123456(密码123456,能够本身修改。删除#)启动服务:./src/redis-server redis.conf
登录加-a 指定密码
./src/redis-cli -a 123456
集群计划3主、三从,一共六个节点。生产状况下,须要6台主机。最低两个主机,三个主节点在一个主机,三个从节点在一个主机。本地模拟配置,是一个主机。
规划主节点端口:700一、700二、7003
从节点端口:700四、700五、7006
sudo mkdir /opt/redis_cluster
sudo mkdir /opt/redis_cluster/
sudo mkdir /opt/redis_cluster/7001
sudo mkdir /opt/redis_cluster/7002
sudo mkdir /opt/redis_cluster/7003
sudo mkdir /opt/redis_cluster/7004
sudo mkdir /opt/redis_cluster/7005
sudo mkdir /opt/redis_cluster/7006
给文件夹赋权
sudo chown -R 用户名:用户组 /opt/redis_cluster/
复制redis.conf文件到/opt/redis_cluster/7001
sudo cp /opt/redis/redis.conf /opt/redis_cluster/7001/
配置redis.conf文件
vi /opt/redis_cluster/7001/redis.conf
修改:
端口
port 7001启用集群cluster-enabled yes集群节点文件cluster-config-file nodes.conf集群超时设置cluster-node-timeout 5000开启aof模式appendonly yes修改线程问家pidfile /var/run/redis_7001.pid配置访问密码
requirepass 123456
配置访问主节点 的密码
masterauth 123456
后台运行
daemonize yes
数据存放目录
dir /opt/redis_cluster/7001
注释bind
#bind 127.0.0.1
修改最大内存2G(redis的内存为物理内存的0.75,就是说,物理内存*0.75/节点数)修改#maxmemory为maxmemory 2147483648修改日志保存文件logfile "redis.log"
把/opt/redis_cluster/7001/redis.conf复制到/opt/redis_cluster/700二、/opt/redis_cluster/700三、/opt/redis_cluster/700四、/opt/redis_cluster/700五、/opt/redis_cluster/7006下
cp /opt/redis_cluster/7001/redis.conf /opt/redis_cluster/7002/
cp /opt/redis_cluster/7001/redis.conf /opt/redis_cluster/7003/
cp /opt/redis_cluster/7001/redis.conf /opt/redis_cluster/7004
cp /opt/redis_cluster/7001/redis.conf /opt/redis_cluster/7005
cp /opt/redis_cluster/7001/redis.conf /opt/redis_cluster/7006
修改端口、和线程文件
sed -i "s/7001/7002/g" /opt/redis_cluster/7002/redis.conf
sed -i "s/7001/7003/g" /opt/redis_cluster/7003/redis.conf
sed -i "s/7001/7004/g" /opt/redis_cluster/7004/redis.conf
sed -i "s/7001/7005/g" /opt/redis_cluster/7005/redis.conf
sed -i "s/7001/7006/g" /opt/redis_cluster/7006/redis.conf
启 动redis
cd /opt/redis_cluster/7001
/opt/redis/src/redis-server redis.conf
cd /opt/redis_cluster/7002
/opt/redis/src/redis-server redis.conf
cd /opt/redis_cluster/7003
/opt/redis/src/redis-server redis.conf
cd /opt/redis_cluster/7004
/opt/redis/src/redis-server redis.conf
cd /opt/redis_cluster/7005
/opt/redis/src/redis-server redis.conf
cd /opt/redis_cluster/7006
/opt/redis/src/redis-server redis.conf
![]()
![]()
![]()
查看启动节点ps -ef|grep redis建立集群/opt/redis/src/redis-cli --cluster create 192.168.3.153:7001 192.168.3.153:7002 192.168.3.153:7003 --cluster-replicas 0 -a 123456配置集群主从复制查看集群状态/opt/redis/src/redis-cli -c -p 7001 -a 123456 cluster nodes动态添加节点添加节点/opt/redis/src/redis-cli -c -a 123456 -p 7001 cluster meet 192.168.3.153 7004/opt/redis/src/redis-cli -c -a 123456 -p 7001 cluster meet 192.168.3.153 7005/opt/redis/src/redis-cli -c -a 123456 -p 7001 cluster meet 192.168.3.153 7006设置7004为7001的节点/opt/redis/src/redis-cli -c -a 123456 -p 7004 cluster REPLICATEbd88b8e1a32341b90eb0174cc13f227110d4cd45(是主节点的编号,须要自行修改)设置7005为7002的节点/opt/redis/src/redis-cli -c -a 123456 -p 7005 cluster REPLICATE bd88b8e1a32341b90eb0174cc13f227110d4cd45(是主节点的编号,须要自行修改)设置7006为7003的节点/opt/redis/src/redis-cli -c -a 123456 -p 7006 cluster REPLICATE b7716a9a899e4b12a2f368e2e07f0c97fdefa248(是主节点的编号,须要自行修改)查看集群信息集群搭建完毕
验证
登录:
/opt/redis$ src/redis-cli -c -a 123456 -p 7001
set aa 1
set bb 1
![]()
![]()
咱们发现aa写在7001节点上,bb写在7002节点上中止7001节点shutdown咱们发现aa还能够取到1,可是在7004个节点上查看集群状态cluster nodes咱们发现7001已经disconnected了,7004是master节点启动7001/opt/redis/src/redis-server /opt/redis_cluster/7001/redis.conf查看集群状态我
们看到7001已经恢复,变为slave节点咱们的高可用配置成功。任何一个节点挂了不受影响。可是若是是主从都挂了,还会损失数据,这个损失部署不是平均1/3直接,是根据key的hash分布来讲的。
哨兵模式
哨兵模式是对于单个主历来说的。安装一个主节点、两个从节点、三个哨兵主节点:8001从节点:8002、8003三个哨兵:12001、12002、12003、
安装
创建
redis
文件夹
sudo mkdir /opt/sentinel/redis8001
sudo mkdir /opt/sentinel/redis8002
sudo mkdir /opt/sentinel/redis8003
创建
sentinel
文件夹
sudo mkdir /opt/sentinel/sentinel12001
sudo mkdir /opt/sentinel/sentinel12002
sudo mkdir /opt/sentinel/sentinel12003
cp
/opt/redis/sentinel.conf
/opt/sentinel/sentinel12001
cp
/opt/redis/sentinel.conf
/opt/sentinel/sentinel12002
cp
/opt/redis/sentinel.conf
/opt/sentinel/sentinel12003
修改权限
(root
用户不须要
)
sudo chown -R
用户名
:
用户组
/opt/sentinel/
配置
redis
节点
配置
redis8001
节点
vi /opt/sentinel/redis8001/redis.conf
注释
bind
#bind 127.0.0.1
修改端口
port 8001
在后台执行
daemonize yes
数据存放目录
dir /opt/sentinel/redis8001
主节点密码masterauth 123456本节点密码requirepass 123456修改最大内存2G(redis的内存为物理内存的0.75,就是说,物理内存*0.75/节点数)修改#maxmemory为maxmemory 2147483648修改日志文件logfile "redis.log"
配置
redis8002
节点
cp /opt/sentinel/redis8001/redis.conf /opt/sentinel/redis8002/redis.conf
vi /opt/sentinel/redis8002/redis.conf
注释
bind
#bind 127.0.0.1
修改端口
port 8002
在后台执行
daemonize yes
数据存放目录
dir /opt/sentinel/redis8002
配置复制节点replicaof 192.168.3.153 8001主节点密码masterauth 123456本节点密码requirepass 123456
配置
redis8003
节点
cp /opt/sentinel/redis8001/redis.conf /opt/sentinel/redis8003/redis.conf
vi /opt/sentinel/redis8002/redi3.conf
注释
bind
#bind 127.0.0.1
修改端口
port 8003
在后台执行
daemonize yes
数据存放目录
dir /opt/sentinel/redis8003
配置复制节点replicaof 192.168.3.153 8001主节点密码masterauth 123456本节点密码requirepass 123456启动redis节点/opt/redis/src/redis-server /opt/sentinel/redis8001/redis.conf/opt/redis/src/redis-server /opt/sentinel/redis8002/redis.conf/opt/redis/src/redis-server /opt/sentinel/redis8003/redis.conf
配置
sentinel
配置
sentinel12001
节点
vi /opt/sentinel/sentinel12001/sentinel.conf
修改端口
port 12001
后台运行
daemonize yes
进程文件
pidfile /var/run/redis-sentinel-12001.pid
监控主节点名称,当有两个
sentinel
发现主节点挂了,切换节点。
sentinel monitor mymaster 192.168.3.153 8001 2sentinel心跳每隔1分钟发送心跳sentinel down-after-milliseconds mymaster 60000当failover开始后,在此时间内仍然没有触发任何failover操做,当前sentinel 将会认为这次failoer失败sentinel failover-timeout mymaster 180000当新master产生时,同时进行slaveof到新master并进行同步复制的slave个数,也就是同时几个slave进行同步。由于在salve执行salveof与新master同步时,将会终止客户端请求,所以这个值须要权衡。此值较大,意味着“集群”终止客户端请求的时间总和和较大,此值较小,意味着“集群”在故障转移期间,多个salve向客户端提供服务时仍然使用旧数据sentinel parallel-syncs mymaster 1配置sentinel 12002节点cp /opt/sentinel/sentinel12001/sentinel.conf /opt/sentinel/sentinel12002/sentinel.conf把端口改成12002sed -i 's/12001/12002/g' /opt/sentinel/sentinel12002/sentinel.conf配置sentinel 12003节点cp /opt/sentinel/sentinel12001/sentinel.conf /opt/sentinel/sentinel12003/sentinel.conf把端口改成12003sed -i 's/12001/12003/g' /opt/sentinel/sentinel12003/sentinel.conf启动哨兵节点/opt/redis/src/redis-sentinel /opt/sentinel/sentinel12001/sentinel.conf/opt/redis/src/redis-sentinel /opt/sentinel/sentinel12002/sentinel.conf/opt/redis/src/redis-sentinel /opt/sentinel/sentinel12003/sentinel.conf查看哨兵ps -ef|grep sentinel
![]()
![]()
![]()
验证登录主节点/opt/redis/src/redis-cli -p 8001 -a 123456设置aa等于1set aa 1关闭主节点shutdown退出exit登录8002节点/opt/redis/src/redis-cli -p 8002 -a 123456查看复制节点信息info replication当前节点是从节点登录8003节点/opt/redis/src/redis-cli -p 8003 -a 123456查看复制节点信息info replication8003节点是主节点设置aa为3set aa 3get aa启
动8001节点/opt/redis/src/redis-server /opt/sentinel/redis8001/redis.conf查看ps -ef|grep redis|grep 800登录8001节点/opt/redis/src/redis-cli -p 8001 -a 123456查看复制节点info replication查
看aa的值为3,刚才在8003上给aa赋值3已经同步过来了
安装中问题
Increased maximum number of open files to 10032 (it was originally set to 1024).
解决办法
#查看系统限制
ulimit -a
#设置“open files”数量
ulimit -n 10032