> 文档中心 > 11_Linux RAM架构_安装Redis集群(一主两从三哨兵)-银河麒麟V10(Kylin Linux V10)操作系统

11_Linux RAM架构_安装Redis集群(一主两从三哨兵)-银河麒麟V10(Kylin Linux V10)操作系统


        大家好,我是星仔。本博客收录于华星详谈-学习中心。本学习中心收集了Java整个技术体系的所有技术要点。每篇博客后面或者知识点结尾都附带有面试题,提供给大家巩固本章内容。

为各位同胞们能够系统性的掌握整个Java技术体系而建立的学习中心。星仔正在努力的更新学习中心中的内容。望诸君共勉!!!

一、准备工作

1.1、软件架构:

        生产环境使用三台服务器搭建redis哨兵集群,3个redis实例(1主2从)+ 3个哨兵实例。生产环境能够保证在哨兵存活两台的情况下,只有一台redis也能够继续提供服务(一主两从三哨兵)。

1.2、Redis主从配置服务器

主服务器

从服务器1

从服务器2

10.200.14.201

10.200.14.202

10.200.14.203

1.3、软件安装包下载

        执行如下命令,获取Redis源码。如果服务器在内网无法访问的话则用一台能够访问的服务器先把redis-4.0.9.tar.gz包下载下来,在用xftp上传上去。

wget http://download.redis.io/releases/redis-4.0.9.tar.gz

二、首先安装Redis 单机版

        分别在三台服务器上安装并启动Redis单机版,先确保单机版的Redis是部署成功的。

由于篇幅有限,具体的安装步骤又前面的博客中有写。故Redis单机版安装步骤请移步《05_Linux RAM架构-安装Redis 单机版-银河麒麟V10操作系统》icon-default.png?t=M3K6https://blog.csdn.net/a767815662/article/details/122138388

三、Redis集群安装(一主两从三哨兵)

        在上面的步骤中,我们确保了三台服务器各自的Redis单机版是部署成功的之后,接下来就要把上述三台Redis单机模式改为集群模式。

3.1 首先把单机版改为主从配置

3.1.1 修改主服务器中的redis.conf 配置

a、进入到redis文件夹

cd /usr/local/redis-4.0.9/

b、修改redis.conf配置

vim redis.conf

redis.conf文件修改如下配置

# 修改redis配置文件:/usr/local/redis-4.0.9/redis.conf# 1. 修改绑定ip为服务器内网ip地址,做绑定,三台各自填写各自的ip地址bind 10.200.14.201# 2. 保护模式修改为否,允许远程连接protected-mode no# 4. 设定密码requirepass "Geostar@2022"# 5. 设定主库密码与当前库密码同步,保证从库能够提升为主库masterauth "Geostar@2022"# 6. 打开AOF持久化支持appendonly yes

c、启动主服务器redis节点

cd src./redis-server ../redis.conf

d、验证是否启动成功

[root@app--0002 ~]# ps -ef|grep redisroot      6217291  0 19:10 ? 00:00:04 ./redis-server 10.200.14.201:6379root      631933  631886  0 21:09 pts/2    00:00:00 grep redis

说明主服务器的Redis节点启动成功。

3.1.2 修改两个从服务器中的redis.conf 配置

a、进入到redis文件夹

cd /usr/local/redis-4.0.9/

b、修改redis.conf配置

从库基本配置和主库相同,bind ip地址各自对应各自的。唯一区别是从库需要添加主库同步配置(步骤7)。

vim redis.conf

redis.conf文件修改如下配置

# 修改redis配置文件:/usr/local/redis-4.0.9/redis.conf# 1. 修改绑定ip为服务器内网ip地址,做绑定,三台各自填写各自的ip地址bind 10.200.14.202# 2. 保护模式修改为否,允许远程连接protected-mode no# 4. 设定密码requirepass "Geostar@2022"# 5. 设定主库密码与当前库密码同步,保证从库能够提升为主库masterauth "Geostar@2022"# 6. 打开AOF持久化支持appendonly yes# 7. 指定master主库slaveof 10.200.14.201 6379

c、启动从服务器redis节点

cd src./redis-server ../redis.conf

d、验证是否启动成功

[root@app--0002 ~]# ps -ef|grep redisroot      6217291  0 19:10 ? 00:00:04 ./redis-server 10.200.14.201:6379root      631933  631886  0 21:09 pts/2    00:00:00 grep redis

说明从服务器的Redis节点启动成功,另一个按照这四个步骤部署就好。

3.1.3 验证主从配置是否部署成功

查看redis主从情况命令:redis -cli -h {IP} -p 6379 -a {password} info replication

redis-cli -h 10.200.14.201 -p 6379 -a Geostar@2022 info replication

如下图是部署成功之后主从配置信息。

3.2 其次增加哨兵配置

3.2.1 三台服务器的哨兵模式配置

        哨兵配置三台服务器中的配置基本相同,唯一不同的是 bind 绑定的ip不同。

a、进入到redis文件夹

cd /usr/local/redis-4.0.9/

b、修改sentinel.conf配置

vim sentinel.conf

sentinel.conf文件修改如下配置

# 修改redis-sentinel配置文件# 1. 绑定的地址 支持内网/本地访问,比如 bind 10.100.14.201 127.0.0.1bind 10.100.14.201 127.0.0.1# 2. 保护模式修改为否,允许远程连接protected-mode no# 3. 设定sentinel myid 每个都不一样,安装的时候默认就有生成sentinel myid 04d9d3fef5508f60498ac014388571e719188527# 4. 设定监控地址,为对应的主redis库的内网地址sentinel monitor mymaster 10.100.14.201 6379 1# 5. 设定5秒内没有响应,说明服务器挂了,需要将配置放在sentinel monitor master 127.0.0.1 6379 1下面sentinel down-after-milliseconds mymaster 5000# 6. 设定15秒内master没有活起来,就重新选举主sentinel failover-timeout mymaster 15000# 7. 表示如果master重新选出来后,其它slave节点能同时并行从新master同步缓存的台数有多少个,显然该值越大,所有slave节点完成同步切换的整体速度越快,但如果此时正好有人在访问这些slave,可能造成读取失败,影响面会更广。最保定的设置为1,只同一时间,只能有一台干这件事,这样其它slave还能继续服务,但是所有slave全部完成缓存更新同步的进程将变慢。sentinel parallel-syncs mymaster 1# 8. 主数据库密码,需要将配置放在sentinel monitor master 127.0.0.1 6379 1下面sentinel auth-pass mymaster 123456789# 9. 配置后台启动,默认的是前台启动方式daemonize yes

c、依次启动三台服务器中的redis哨兵节点

cd src./redis-sentinel  ../sentinel.conf

d、验证单台服务器的哨兵端口是否启动成功

26379 为哨兵的默认端口,以下日志则说明单台服务器的哨兵端口启动成功

[root@app--0002 redis-4.0.9]# ps -ef|grep redisroot      6217291  0 19:10 ? 00:00:10 ./redis-server 10.200.14.201:6379root      6242531  0 19:39 ? 00:00:13 ./redis-sentinel 10.200.14.201:26379 [sentinel]root      645013  643737  0 23:45 pts/0    00:00:00 grep redis

 

3.2.2 验证哨兵模式是否部署成功

        查看redis哨兵情况命令:redis-cli -h {IP} -p 26379 -a {password} info sentinel

redis-cli -h {IP} -p 26379 -a {password} info sentinel

如下图是部署成功之后的哨兵配置信息。

至此,Redis的集群(一主两从三哨兵)模式配置成功。

 

注意事项:

        1、Redis集群启动时遵循先启动主节点,然后启动从节点,最后启动哨兵端口的规则:按照Master->Slave->Sentinel的顺序进行启动

四、Redis集群高可用性验证

4.1 连接redis库脚本

# 主服务器redis-cli -h 10.200.14.201 -p 6379 -a Geostar@2022# 从服务器1redis-cli -h 10.200.14.202 -p 6379 -a Geostar@2022# 从服务器2redis-cli -h 10.200.14.203 -p 6379 -a Geostar@2022

4.2 主库写入测试同步

主库set数据set huaxing huaxingxiangtan从库读取数据keys *get huaxing

插入的时候出现以下错误提示,则说明从库只读。

10.200.14.202:6379> set huaxing1 huaxing1(error) READONLY You can't write against a read only slave.