虚拟主机域名注册-常见问题服务器知识 → 操作系统

CentOS 8怎么设置Redis集群(启用集群模式)

  Redis Cluster是一个内置的Redis功能,它支持自动分片、复制和高可用性,以前是通过Sentinels实现的。它的设计有两个主要目的:一是在多个实例之间自动拆分数据集;二是在分区期间提供一定程度的可用性;当某些实例(尤其是主实例)发生故障或无法与大多数实例通信时,继续操作集群中的节点。

  但是,如果发生较大故障(例如,大多数主实例不可用时),集群将停止运行。此外,如果主服务器和从服务器同时发生故障,集群将无法继续正常运行(尽管解决方法是在集群中添加更多节点或创建不对称性,以自动更改集群布局)。

  根据Redis集群文档,按预期工作的“ 最小集群 ”要求至少包含3个主节点。但是,最适合高可用性的设置应该至少有6个节点,其中包含三个主节点和三个从节点,每个主节点都有一个从节点。

  重要提示:Redis Cluster还具有一些局限性,例如,对NATted环境以及在Docker下重新映射IP地址或TCP端口的环境缺乏支持。此外,并非每个客户端库都支持它。

  本文展示了如何在CentOS 8中设置Redis集群(禁用集群模式)。它包括如何安装Redis,配置集群节点,创建集群以及测试集群故障转移。

  注意:在本文中,我们将使用全新安装的Redis实例来运行集群模式。集群模式不适用于我们的Redis系列的前两个建议中完成的某些配置,特别是在使用参数副本时无法使用。

  准备工作:

  安装了CentOS 8系统的服务器

  测试环境设置

  Redis Master1: 10.42.0.247

  Redis Master2: 10.42.0.197

  Redis Master3: 10.42.0.132

  Redis Slave1: 10.42.0.200

  Redis Slave2: 10.42.0.21

  Redis Slave3: 10.42.0.34

  Redis集群逻辑图

  我们的设置有3个读/写主节点和3个只读副本节点,每个主节点都有一个副本,因此三个分片包含每个节点中所有集群的数据。应用程序API或CLI客户端只能写入主节点,但可以读取集群中的任何节点。

  步骤1:在所有节点上安装Redis

  1.通过SSH登录所有实例,然后运行以下命令以使用DNF软件包管理器安装Redis模块。

  # dnf module install redis

  2.接下来,启动Redis服务,使其在系统启动时自动启动,并检查其状态以验证其是否正在运行(在所有6个实例上验证该服务):

  # systemctl start redis

  # systemctl enable redis

  # systemctl status redis

  步骤2:在所有节点上配置Redis实例

  3.本节介绍如何配置Redis集群节点。请记住在这里在所有节点上执行配置。

  使用/etc/redis.conf配置文件来配置Redis服务器。建议的做法是,在使用所选的命令行文本编辑器编辑原始文件之前,先对其进行备份。

  # cp /etc/redis.conf /etc/redis.conf.orig

  # vi /etc/redis.conf

  4.接下来,找到以下配置参数并编辑它们的值,如图所示。该绑定参数集Redis的服务器的接口将监听,其值设置为实例LAN IP。删除127.0.0.1,因为我们意识到将其保留在其中会减慢集群创建的过程,特别是加入集群的阶段。

  bind 10.42.0.247

  然后将保护模式设置no为允许来自集群中其他实例的连接。

  protected-mode no

  port参数定义Redis服务器将侦听连接的端口,默认值为6379。这是用于与客户端通信的数据端口。

  port 6379

  设置Redis监听接口和端口

  5.下一组参数将启用集群模式并设置其一些有用的功能。在启用集群的参数,设置为yes,激活集群模式。

  cluster-enabled yes

  接下来,cluster-config-file参数设置集群节点的集群配置文件的名称(例如,nodes-6379.conf)。该文件在工作目录中创建(默认是使用dir参数定义的/ var / lib / redis),并且用户不可编辑。

  cluster-config-file nodes-6379.conf

  下一个有用的集群选项是cluster-node-timeout,用于设置实例不可用的最长时间(以毫秒为单位),以将其视为故障状态。值15000等于15秒。

  cluster-node-timeout 15000

  设置集群节点超时

  6.我们还需要在磁盘上启用Redis持久性。我们可以使用一种持久性模式,即“ Append Only File”(AOF):它记录服务器成功接收的每个写入操作(在工作目录下创建的appendonly.aof文件中)。数据将在服务器启动期间播放,以重建原始数据集。

  要启用它,请将appendonly参数设置为yes。

  appendonly yes

  设置持久性选项

  7.进行所有更改后,在所有节点上重新启动Redis服务以应用最近的更改。

  # systemctl restart redis

  8.此时,每个集群节点现在都应具有一个ID。您可以在/var/log/redis/redis.log的日志文件中进行检查。

  # cat /var/log/redis/redis.log

  检查集群节点日志文件

  9.接下来,在所有实例上打开端口6397和16379。后面的端口用于集群总线(使用二进制协议的节点到节点通信通道)。这是Redis集群TCP连接的基本要求。

  # firewall-cmd --zone=public --permanent --add-port=6379/tcp

  # firewall-cmd --zone=public --permanent --add-port=16379/tcp

  # firewall-cmd --reload

  第三步:创建Redis集群

  10.要创建集群,请使用redis-cli命令行客户端,如下所示。使用 --cluster create 可以创建集群,而 --cluster-replicas 1 表示每个主节点创建一个副本。

  对于具有6个节点的设置,我们将有3个主节点和3个从节点。

  注意,前6个节点将被视为主节点(M),后3个节点将被视为从节点(S)。第一个从属节点即10.42.0.200:6379复制第一个主节点即10.42.0.247:6379,第二个从属节点依次复制第二个主节点。

  下面的命令格式化后的结果将代表上面的逻辑设置。

  # redis-cli --cluster create 10.42.0.247:6379 10.42.0.197:6379 10.42.0.132:6379 10.42.0.200:6379 10.42.0.21:6379 10.42.0.34:6379 --cluster-replicas 1

  创建Redis集群

  11.成功创建集群后,在任何主机上运行以下命令(使用该-h标志指定其IP地址)以列出所有集群节点。

  # redis-cli -h 10.42.0.247 -p 6379 cluster nodes

  您应该能够看到所有集群节点,从节点表示其主节点,如以下屏幕截图所示。

  检查任何节点上的所有集群节点

  不同的字段按以下顺序排列:节点ID,IP地址:端口,标志,发送的最后ping,接收的最后的pong,配置时期,链接状态,插槽(对于主设备)。

  步骤4:测试Redis集群故障转移

  12.在本节中,我们将演示如何测试集群故障转移。首先,让我们注意master。

  # redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master

  列出Redis集群主机

  另外,请注意Redis从主机。

  # redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep slave

  列出所有Redis集群从站

  13.接下来,让我们在一个主节点(例如10.42.0.197)上停止Redis服务,并检查集群中的所有主节点。

  # systemctl stop redis

  # redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master

  从下面的截图中,可以看到该节点10.42.0.197:6367处于失效状态,其从10.42.0.21:6379已经晋升为大师地位。

  检查集群故障转移状态

  14.现在,让我们在发生故障的节点上再次启动Redis服务,并检查集群中的所有主服务器。

  # systemctl start redis

  # redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master

  检查所有Redis集群主服务器状态

  另外,检查集群从属服务器,以确认发生故障的主服务器现在是从属服务器。

  # redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep slave

  检查所有Redis集群从站

  步骤5:测试跨Redis集群的数据复制

  15.最后一部分说明了如何验证集群数据复制。我们将在其中一个主节点上创建一个键和值,然后尝试从所有集群节点中读取它,如下所示。使用该-c开关在redis-cli实用程序下启用集群支持,并在集群模式下访问数据。

  # redis-cli -c -h 10.42.0.247 -p 6379 set name 'a5idc.net'

  # redis-cli -c -h 10.42.0.247 -p 6379 get name

  # redis-cli -c -h 10.42.0.21 -p 6379 get name

  # redis-cli -c -h 10.42.0.132 -p 6379 get name

  # redis-cli -c -h 10.42.0.200 -p 6379 get name

  # redis-cli -c -h 10.42.0.197 -p 6379 get name

  # redis-cli -c -h 10.42.0.34 -p 6379 get name

  验证Redis集群数据复制

  Redis集群是获得自动分片,复制和高可用性的首选方法。至此,Redis教程系列三部分就到此结束了。




免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:bkook@qq.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
【 双击滚屏 】 【 推荐朋友 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体: 】 
上一篇:Ubuntu Linux上怎么安装PowerShell
下一篇:在 Linux 中怎么使用 pushd 和 popd 进行高效的文件目录导航
  >> 相关文章
没有相关文章。
0

在线
客服

在线客服服务时间:9:00-18:00

客服
热线

19899115815
7*24小时客服服务热线

关注
微信

关注官方微信
顶部