提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、Redis是什么?
- 二、搭建Redis集群步骤
- 1.环境和版本
- 2.Redis 安装部署
- 3.主从同步配置
- 4.哨兵模式配置
- 5.代理predixy配置
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
搭建了一个 Redis 服务器集群(主从复制+哨兵模式+代理),实现了主从配置和容灾部署,使得主机出现故障时,可自动进行容灾切换,现详细记录下搭建过程以及遇到的问题
提示:以下是本篇文章正文内容,下面案例可供参考
一、Redis是什么?
Redis(Remote Dictionary Server 远程字典服务)是一个开源的高性能key-value数据库,它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型,官网:https://redis.io/。
1、Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2、Redis不仅仅支持简单的key-value类型的数据,同时还提供 list,set,zset,hash等数据结构的存储。
3、Redis支持数据的备份,即master-slave模式的数据备份。
不多说网上资料很多
二、搭建Redis集群步骤
1.环境和版本
操作系统:Linux Centos7
Redis版本:redis-5.0.14
Predixy版本:predixy-1.0.5
准备四台Linux服务器centos7系统
服务器IP | 服务器名 | 节点类型 | 进程 |
---|---|---|---|
10.20.32.75 | gremastersvr1 | predixy | predixy |
10.20.32.76 | grestandsvr1 | master | redis,sentinel |
10.20.32.77 | gresegsvr1 | slave | redis,sentinel |
10.20.32.78 | gresegsvr2 | slave | redis,sentinel |
2.Redis 安装部署
Master,Slave 三台服务器上分别安装Redis
代码如下(示例):
----#安装Redis
root: mkdir -p /data/redis
root: cd /data/redis
##--解压
root: tar -zxvf redis-5.0.14.tar.gz
root: cd redis-5.0.14
root: make
##命令安装redis到/usr/local/redis中
root: make PREFIX=/usr/local/redis install
root: cd /usr/local/redis/bin
##进入到redis-5.0.14中复制redis.conf 到 /usr/local/redis/bin下面
##将redis.conf修改daemonize yes 以后端模式启动
##将redis.config里面的bind 127.0.0.1修改为0.0.0.0,不然只允许本机连接,客户端连接的话会拒绝连接
##将redis.config里面的requirepass 123456
##并且将protected-mode no改为yes,意思是是否开启保护模式
root: ./redis-server redis.conf
##查看进程
root: ps -aux | grep redis
##杀死进程
root:kill -9 840
3.主从同步配置
代码如下(示例):
10.20.32.76 主服务(读写)
10.20.32.77 从服务(读)
10.20.32.78 从服务(读)
##主redis.config配置
bind:0.0.0.0 #Redis 默认只允许本机访问,把 bind 修改为 0.0.0.0 表示允许所有远程访问,如果想指定限制访问,可设置对应的 ip。
port:6379 # 监听端口默认为6379,想改其他也行。
protected-mode:no #关闭保护模式,可以外部访问。
daemonize:yes #设置为后台启动
logfile:./redis.log #日志文件,这里放置在当前配置文件目录下,生成后在 bin 目录下可找到
requirepass:123456 #设置 redis 连接密码,如果不需要则可以不用配置
masterauth:123456 #slave 服务连接 master 的密码,如果master没有设置密码则可以不用配置
##从redis.config配置
bind:0.0.0.0 #Redis 默认只允许本机访问,把 bind 修改为 0.0.0.0 表示允许所有远程访问,如果想指定限制访问,可设置对应的 ip。
port:6379 # 监听端口默认为6379,想改其他也行。
protected-mode:no #关闭保护模式,可以外部访问。
daemonize:yes #设置为后台启动
logfile:./redis.log #日志文件,这里放置在当前配置文件目录下,生成后在 bin 目录下可找到
requirepass:123456 #设置 redis 连接密码,如果不需要则可以不用配置
masterauth:123456 #slave 服务连接 master 的密码,如果master没有设置密码则可以不用配置
replicaof 10.20.32.76 6379 ## 指定当本机为slave服务时,设置master服务的IP地址及端口,在redis启动的时候他会自动跟master进行数据同步,master主机可以不用配置
master服务器发送
set k1 zhanglong
slave2从自动获取值
slave1从自动获取值
主从复制配置成功
4.哨兵模式配置
哨兵可以进行故障转移,如果主宕机了,会投票选出一个新的主,然后原来的主上线后自动变成从机,保证服务的高可用
代码如下(示例):
##修改sentinel.conf配置文
//端口默认为26379。
port 26379
//关闭保护模式,可以外部访问。
protected-mode no
//设置为后台启动。
daemonize yes
//日志文件。
logfile ./sentinel.log
//指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换。
sentinel monitor mymaster 10.20.32.76 6379 2
//当在Redis实例中开启了requirepass,这里就需要提供密码。如果没有设置密码则不需要
sentinel auth-pass mymaster 123456
//这里设置了主机多少秒无响应,则认为挂了。
sentinel down-after-milliseconds mymaster 3000
//主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。
snetinel parallel-syncs mymaster 1
//故障转移的超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 180000
##sentinel.conf复制到/usr/local/redis/bin下面
##启动哨兵
root: cd /usr/local/redis/bin
root: ./redis-sentinel sentinel.conf
#查看哨兵信息
root: ./redis-cli -p 26379
info sentinel
将Master 的Redis进程Kill
通过代理发送值
其他Redis服务器能获取值
Master 自动切换到gresegsvr2
哨兵模式配置成功
5.代理predixy配置
代码如下(示例):
root: mkdir -p /data/predixy
root: cd /data/predixy
root: tar -xzf predixy-1.0.5-bin-amd64-linux.tar.gz
##部署到工作目录
root: mv predixy-1.0.5 /usr/local/
##修改配置文件
root: cd /usr/local/predixy-1.0.5/conf/
##predixy的配置类似redis, 具体配置项的含义在配置文件里有详细解释,请参考下列配置文件:
##predixy.conf:整体配置文件,会引用下面的配置文件
##cluster.conf:用于Redis Cluster时,配置后端redis信息
##sentinel.conf:用于Redis Sentinel时,配置后端redis信息
##auth.conf:访问权限控制配置,可以定义多个验证密码,可每个密码指定读、写、管理权限,以及定义可访问的健空间
##dc.conf:多数据中心支持,可以定义读写分离规则,读流量权重分配
##latency.conf: 延迟监控规则定义,可以指定需要监控的命令以及延时时间间隔
##修改配置文件predixy.conf
Bind 0.0.0.0:7617
Include sentinel.conf
# Include try.conf
##因为我们的集群就是主从集群+sentinel监控,所以主要配置sentinel.conf
SentinelServerPool {
Password 123456
Databases 16
Hash crc16
HashTag "{}"
Distribution modula
MasterReadPriority 60
StaticSlaveReadPriority 50
DynamicSlaveReadPriority 50
RefreshInterval 1
ServerTimeout 1
ServerFailureLimit 10
ServerRetryTimeout 1
KeepAlive 120
Sentinels {
+ 10.20.32.76:26379
+ 10.20.32.77:26379
+ 10.20.32.78:726379
}
Group mymaster {
+ 10.20.32.76:6379
+ 10.20.32.77:6379
+ 10.20.32.78:6379
}
}
##启动predixy
root: cd /usr/local/predixy-1.0.5/
root: /usr/local/predixy-1.0.5/bin/predixy /usr/local/predixy-1.0.5/conf/predixy.conf
工具连接代理服务器
通过代理发送设置的值
Redis三台服务器获取代理发送的值
代理配置成功
总结
记录点点滴滴