# Redis 安装配置
# 参考文档
# Docker 安装
还不会 Docker?Docker 是啥
# 无密码
docker search redis
docker pull redis
docker run -itd --name redis-test -p 6379:6379 redis
docker exec -it redis-test /bin/bash
> redis-cli
> keys *
2
3
4
5
6
# 有密码
docker search redis
docker pull redis
docker run -itd --name redis-test -p 6379:6379 redis --requirepass "password"
# 添加密码后进入容器
docker exec -it redis-test /bin/bash
> redis-cli
# 这里直接使用会报错
> keys *
# 需要认证后才可以
> auth "password"
> keys *
2
3
4
5
6
7
8
9
10
11
# 源码安装
- 下载源码 redis-xxx.tar.gz 。
- 将压缩包放在
/usr/local/
下。 - 解压
tar -xzvf redis-xxx.tar.gz
cd redis-xxx
make
make install
redis-server
启动
# 配置密码
- 进入
/usr/local/redis-xxx/
,找到redis.conf
- 进入
vi
中,按下/
,然后输入requirepass
,找到这行,然后取消注释,把密码加上,重启服务。
# 添加 systemd 服务
进入
/usr/local/redis-xxx/
,找到redis.conf
将配置文件中的
daemonize no
改成daemonize yes
在
/etc/systemd/system/
创建redis.service
文件# 注意修改目录 [Unit] Description=Redis After=network.target [Service] Type=forking ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf ExecReload=/usr/local/redis/bin/redis-server -s reload ExecStop=/usr/local/redis/bin/redis-server -s stop PrivateTmp=true [Install] WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
12
13
14systemctl enable redis
# 主从复制模式安装
- 首先安装 Redis
使用 3 台服务器,分别安装 Redis:
no | ip | port | role | permission |
---|---|---|---|---|
1 | 192.168.1.1 | 6379 | master | 读、写 |
2 | 192.168.1.2 | 6379 | slave | 读 |
3 | 192.168.1.3 | 6379 | slave | 读 |
- 修改配置文件
Master 主节点配置如下:
# redis进程是否以守护进程的方式运行,yes为是,no为否。默认为no(不以守护进程的方式运行会占用一个终端)。
daemonize yes
# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和指定bind,可以开启。否则最好关闭设置为no。
protected-mode yes
# 绑定的主机地址,这里需要根据实际IP进行配置
bind 192.168.1.1
# redis进程的端口号
port 6379
# log文件输出位置,如果进程以守护进程的方式运行,此处又将输出文件设置为stdout的话,就会将日志信息输出到/dev/null里面去了
logfile /xxxxx/redis.log
# 设置redis连接密码,如果配置了连接密码,客户端在连接redis是需要通过AUTH<password>命令提供密码,默认关闭
requirepass xxxxxx
# 当master设置了密码保护时,slave服务连接master的密码
masterauth <master-password>
2
3
4
5
6
7
8
9
10
11
12
13
14
Slave 从节点配置如下:
与主节点配置相似,仅多配置一项
replicaof
指定主节点 IP、端口
# redis进程是否以守护进程的方式运行,yes为是,no为否。默认为no(不以守护进程的方式运行会占用一个终端)。
daemonize yes
# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和指定bind,可以开启。否则最好关闭设置为no。
protected-mode yes
# 绑定的主机地址,这里需要根据实际IP进行配置
bind 192.168.1.1
# redis进程的端口号
port 6379
# log文件输出位置,如果进程以守护进程的方式运行,此处又将输出文件设置为stdout的话,就会将日志信息输出到/dev/null里面去了
logfile /xxxxx/redis.log
# 设置redis连接密码,如果配置了连接密码,客户端在连接redis是需要通过AUTH<password>命令提供密码,默认关闭
requirepass xxxxxx
# 当master设置了密码保护时,slave服务连接master的密码
masterauth <master-password>
# 指定当本机为slave服务时,设置master服务的IP地址及端口,在redis启动的时候他会自动跟master进行数据同步
replicaof <masterip> <masterport>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
注意: 由于搭建的集群需要自动容灾切换,主数据库可能会变成从数据库,所以三台机器上都需要同时设置 requirepass
和 masterauth
配置项。
- 数据同步
以上配置修改后,重启 Redis 服务。
如果开启了防火墙则需要放行相应端口:
# 检查防火墙是否开启:
systemctl status firewalld
# dead : 未开启状态
# running : 开启状态
# 开启防火墙:
systemctl start firewalld
# 确认防火墙是否开启
systemctl status firewalld
# 配置防火墙放行 6379 端口
firewall-cmd --add-port=6379/tcp --permanent --zone=public
# 成功后出现 success,然后重启防火墙,三台都需要配置
firewall-cmd --reload
2
3
4
5
6
7
8
9
10
11
12
13
验证数据同步
三台机器分别进入 redis-cli
,然后执行 info replication
查看集群信息,可以看到主节点的 role 是 master,从节点是 slave。
然后从主节点执行 set a 111
,从 2 个从节点执行 get a
,查看是否能查到数据;然后从两个从节点执行 set b 222
,会提示没有写权限。
# 哨兵模式安装
Redis 一共三种集群模式,分别为 主从、哨兵、集群(分片);
哨兵模式安装需要先完成主从模式安装,见前面主从复制安装
哨兵模式就是在主从复制基础上添加了哨兵机制,实现了主从节点的自动切换。哨兵就是个脚本,包含在 Redis 代码内。
哨兵模式集群最少需要 3 台服务器,因为哨兵的选举机制需要按照少数服从多数原则进行选举主节点。
- 哨兵配置
# 哨兵的配置文件是 sentinel.conf
# 端口默认为26379。
port:26379
# 关闭保护模式,可以外部访问。
protected-mode:no
# 设置为后台启动。
daemonize:yes
# 日志文件。
logfile:./sentinel.log
# 指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换。
sentinel monitor mymaster 192.168.1.1 6379 2
# 当在Redis实例中开启了requirepass,这里就需要提供密码。
sentinel auth-pass mymaster 123456
# 这里设置了主机多少秒无响应,则认为挂了。
sentinel down-after-milliseconds mymaster 3000
# 主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。
sentinel parallel-syncs mymaster 1
# 故障转移的超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 180000
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
- 防火墙配置
# 放行26379 端口
firewall-cmd --add-port=26379/tcp --permanent --zone=public
# 重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
2
3
4
- 启动哨兵
redis-sentinel ../sentinel.conf
按照以上步骤将另外2台服务器的哨兵也配置下。
- 哨兵信息查看
执行 redis-cli -p 26379
进入客户端,然后执行 info sentinel
查看哨兵信息。
- 验证容灾(自动切换)
停止主节点服务,然后查看会不会自动选举出新的主节点;
将原来的主节点重新启动,会发现他会自动变成从节点。
# 讨论区
由于评论过多会影响页面最下方的导航,故将评论区做默认折叠处理。