专栏首页Maroon1105在CentOS 7上安装和配置Redis

在CentOS 7上安装和配置Redis

Redis是一个开源的内存数据结构存储库,具有用于持久性的可选磁盘写入。它可以用作键值数据库,也可以用作缓存和消息代理。Redis具有内置事务,复制和对各种数据结构(如字符串,哈希,列表,集等)的支持。Redis可以通过Redis Sentinel高度可用,并支持使用Redis Cluster自动分区。

本文档提供了部署Redis服务器的说明,以及在CentOS 7上维护Redis实例的最佳实践概述。由于Redis提供内存中的所有数据,因此我们建议在本指南中使用高内存Linode

在你开始之前

  1. 熟悉我们的入门指南并完成设置Linode主机名和时区的步骤。
  2. 完成“ 保护您的服务器 ”部分以创建标准用户帐户,加强SSH访问并删除不必要的网络服务。
  3. 更新您的系统: sudo yum update

注意本指南是为非root用户编写的。需要提升权限的命令带有前缀sudo。如果您不熟悉该sudo命令,可以查看我们的“ 用户和组”指南。 要使用本指南中的复制步骤,您至少需要两个Linode。

安装Redis

在本节中,您将添加EPEL存储库,然后使用它来安装Redis。

  1. 添加EPEL存储库,并更新YUM以确认您的更改: sudo yum install epel-release sudo yum update
  2. 安装Redis: sudo yum install redis
  3. 启动Redis: sudo systemctl start redis 可选:要在启动时自动启动Redis: sudo systemctl enable redis

验证安装

验证Redis是否正在运行redis-cli

redis-cli ping

如果Redis正在运行,它将返回:

PONG

配置Redis

在本节中,您将为Redis配置一些基本的持久性和调优选项。

持久性选项

Redis提供了两种磁盘持久性选项:

  • 按指定间隔(RDB)生成的数据集的时间点快照。
  • 仅附加服务器(AOF)执行的所有写入操作的日志。

每个选项都有自己的优点和缺点,Redis文档中对此进行了详细说明。为了获得最高级别的数据安全性,请考虑运行两种持久性方法。

由于默认情况下启用了Point-in-time快照持久性,因此您只需设置AOF持久性:

  1. 确保为以下设置appendonlyappendfsync设置设置了以下值redis.conf: /etc/redis.conf1 2 appendonly yes appendfsync everysec
  2. 重启Redis: sudo systemctl restart redis

基本系统调整

要提高Redis性能,请将Linux内核过载内存设置为1:

sudo sysctl vm.overcommit_memory=1

这会立即更改过度使用的内存设置,但更改将不会在重新启动后持续存在。要使其永久化,请添加vm.overcommit_memory = 1/etc/sysctl.conf

/etc/sysctl.conf中

1

vm.overcommit_memory = 1

额外的交换

根据您的使用情况,您可能会发现有必要添加额外的交换磁盘空间。您可以通过在Linode Manager中调整磁盘大小来添加交换。在Redis的文档建议您交换磁盘大小的可用内存量相匹配您的系统。

分布式Redis

Redis提供了几种用于设置分布式数据存储的选项。下面介绍的最简单的选项是主/从复制,它创建数据副本。只要所有写操作都由主服务器处理,它还允许在从副本组之间分配读取。

使用Redis Sentinel可以使上述主/从设置高度可用。可以将Sentinel配置为监视主实例和从属实例,并在主节点未按预期工作时执行自动故障转移。这意味着其中一个从节点将被选为主节点,所有其他从节点将被配置为使用新主节点。

使用Redis 3.0及更高版本,您可以使用Redis Cluster,这是一种自动管理复制和故障转移的数据分片解决方案。使用Redis Cluster,您可以在多个节点之间自动拆分数据集,这在数据集大于单个服务器的RAM时非常有用。它还使您能够在节点的子集遇到故障或无法与群集的其余部分通信时继续操作。

以下步骤将指导您完成主/从复制,并将从站设置为只读模式。

设置Redis主/从复制

对于本节,您将使用两个Linode,主服务器和从服务器。

注意要通过专用网络进行通信,主从Linode必须位于同一数据中心。

准备你的Linodes

  1. 使用本指南中的“ 安装配置”步骤,使用Redis实例设置两个Linode 。您还可以使用Linode Manager中的“ 克隆”选项将初始配置的磁盘复制到另一个Linode 。
  2. 在两个Linode上配置专用IP地址,并确保您可以从从属设备访问主Linode的专用IP地址。出于安全原因,您将仅使用私有地址进行复制流量。

配置主Linode

  1. 通过更新bind配置选项,配置主Redis实例以侦听专用IP地址redis.conf。替换192.0.2.100为主Linode的私有IP地址: /etc/redis.conf1 bind 127.0.0.1 192.0.2.100
  2. 重新启动Redis以应用更改: sudo systemctl restart redis

配置Slave Linode

  1. 通过将slaveof指令添加redis.conf到设置复制来配置从属实例。再次192.0.2.100使用主Linode的私有IP地址替换: /etc/redis.conf1 slaveof 192.0.2.100 6379该slaveof指令有两个参数:第一个是主节点的IP地址; 第二个是主服务器配置中指定的Redis端口。
  2. 重启从属Redis实例: sudo systemctl restart redis 重新启动后,从属Linode将尝试将其数据集同步到master,然后传播更改。

确认复制

测试复制是否有效。在主Linode上,运行redis-cli并执行命令set 'a' 1

redis-cli
127.0.0.1:6379> set 'a' 1
OK

键入exit或按Ctrl-C退出redis-cli提示。

接下来,redis-cli在slave Linode上运行并执行get 'a',它应该返回与master上相同的值:

redis-cli
127.0.0.1:6379> get 'a'
"1"

您的主/从复制设置正常。

保护Redis安装

由于Redis旨在在受信任的环境中工作并且与受信任的客户端一起工作,因此您应该控制对Redis实例的访问。一些建议的安全步骤包括:

此外,为了确保没有外部流量访问您的Redis实例,我们建议您只监听localhost接口或Linode的私有IP地址上的连接。

使用密码验证

要获得额外的安全层,请使用密码身份验证来保护主从Linode之间的连接。

  1. 在主Linode上,取消注释requirepassRedis配置中的行并master_password使用安全密码替换: /etc/redis.conf1 requirepass master_password
  2. 保存更改,并通过在主Linode上重新启动Redis来应用它们: sudo systemctl restart redis
  3. 在您的从属Linode上,将主密码添加到Redis配置下masterpass,然后为从属Linode创建一个唯一的密码requirepass: /etc/redis.conf1 2 masterpass master_password requirepass slave_password替换master_password为在主服务器上配置的密码,并替换slave_password为用于从服务器Linode的密码。
  4. 保存更改,然后在从属Linode上重新启动Redis: sudo systemctl restart redis
  5. 连接到redis-cli您的主Linode,并使用AUTH您的主密码进行身份验证: redis-cli 127.0.0.1:6379> AUTH master_password
  6. 通过身份验证后,您可以通过运行查看有关Redis配置的详细信息INFO。这提供了大量信息,因此您可以在命令中专门请求“复制”部分: 127.0.0.1:6379> INFO replication 输出应类似于以下内容: # Replication role:master connected_slaves:1 slave0:ip=192.0.2.105,port=6379,state=online,offset=1093,lag=1 它应该确认您的Linode的主要角色,以及有多少从属Linode连接到它。
  7. 从您的从属Linode,redis-cli使用您的从属密码连接并进行身份验证: redis-cli 127.0.0.1:6379> AUTH slave_password
  8. 经过身份验证后,用于INFO确认您的从属Linode角色及其与主服务器的连接: 127.0.0.1:6379> INFO replication # Replication role:slave master_host:192.0.2.100 master_port:6379 master_link_status:up

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

本文的版权归 GongAo啊_ 所有,如需转载请联系作者。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 学习如何安装Ansible和运行Playbooks

    考虑管理服务器机队的单调; 让它们全部更新,将更改推送给它们,复制文件等。事情可能会很快变得复杂和耗时,但它不一定是这样。

    GongAo啊_
  • 使用Terraform配置Linode环境

    基础架构代码(IaC)是一种软件,使开发人员能够使用高级配置语法构建,管理和配置计算环境。一些好处包括能够实施DevOps最佳实践,流程自动化以及使用版本控制系...

    GongAo啊_
  • WordPress之去掉顶部工具栏

    用WP搭建自己博客的人都会发现网站上面有一个黑色的工具栏,影响网站美观度,那么怎么去掉顶部工具栏呐?

    GongAo啊_
  • DotNetCore三大Redis客户端对比和使用心得

    稍微复杂一点的互联网项目,技术选型都会涉及Redis,.NetCore的生态越发完善,支持.NetCore的Redis客户端越来越多,

    小码甲
  • Redis高频面试题

    Redis,全称:Remote Dictionary Server,是一个基于内存的高性能key-value数据库,是应用服务提高效率和性能必不可少的一部分,因...

    小闫同学啊
  • 你好 Redis,能回答我 7 个问题吗?

    Redis 的通讯协议是文本协议,是的,Redis 服务器与客户端通过 RESP(Redis Serialization Protocol)协议通信。

    帅地
  • Redis面试必知必会

    Redis是单进程单线程的,Redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销。

    xcbeyond
  • Redis专题(1):构建知识图谱

    思考:很明显,小明同学在面试过程中关于Redis的表现和回答肯定是比较失败的。Redis是我们工作中每天都会使用到的东西,为什么一到面试却变成了丢分项呢?

    宜信技术学院
  • Redis应用及安装

    Redis听到最多的一句话就是Redis的使用难吗?不难,Redis用好容易吗?不容易,有时候觉得这句话说的挺好,但又是让读者挺心里咯噔一下的,还不如不说! 概...

    牛嗷嗷
  • 硬货 | Redis 性能问题分析

    嘿,我是咸鱼,之前给大家推荐过关于 redis 的不少干货,这次再一起学习一下 Redis 的性能分析。

    咸鱼学Python

扫码关注云+社区

领取腾讯云代金券