前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在CentOS 7上安装和配置Redis

在CentOS 7上安装和配置Redis

作者头像
GongAo啊_
发布2018-09-20 10:47:00
8.2K0
发布2018-09-20 10:47:00
举报
文章被收录于专栏:Maroon1105Maroon1105

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

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

在CentOS 7上部署Redis
在CentOS 7上部署Redis

在你开始之前

  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

代码语言:javascript
复制
redis-cli ping

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

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

代码语言:javascript
复制
redis-cli
127.0.0.1:6379> set 'a' 1
OK

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

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

代码语言:javascript
复制
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

更多信息

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在你开始之前
  • 安装Redis
    • 验证安装
    • 配置Redis
      • 持久性选项
        • 基本系统调整
          • 额外的交换
          • 分布式Redis
          • 设置Redis主/从复制
            • 准备你的Linodes
              • 配置主Linode
                • 配置Slave Linode
                  • 确认复制
                  • 保护Redis安装
                    • 使用密码验证
                    • 更多信息
                    相关产品与服务
                    云数据库 Redis
                    腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档