配置Redis主从机器,搭建高可用集群(redis配置主从机器)
配置Redis主从机器,搭建高可用集群
Redis是一个高性能、可扩展的NoSQL数据库,以其速度快、性能高、数据持久性好等特点,逐渐成为了很多Web应用的首选缓存技术。为了保证Redis的高稳定性和可用性,常常需要配合一些高可用的部署方案,例如主从复制、哨兵以及集群等。本篇文章将介绍如何配置Redis主从机器,搭建高可用集群。
第一步:安装Redis
我们需要在所有Redis节点机器上安装Redis软件包。假设命令行已经可以ping通各个节点之间的IP地址,且每个节点的操作系统均为Ubuntu 16.04。
在Ubuntu系统下,可以通过以下命令安装Redis:
sudo apt-get install redis-server
安装完成后,可通过以下命令检查Redis服务是否启动:
redis-cli ping
如果返回结果为“PONG”,则说明Redis服务正常运行。
第二步:配置主从机器
在一般的应用场景中,我们通常会将Redis的读操作和写操作分别分配到不同的Redis节点上,以此来降低主节点IO压力,提高Redis整体性能。这就要求我们部署Redis主从机器。
以两台主从机器为例,假设我们将其中一台Ubuntu机器设为Redis主节点,以IP地址为192.168.1.100、端口号为6379,另一台Ubuntu机器设为Redis从节点,以IP地址为192.168.1.101、端口号为6380。
在Redis主节点上,我们需要对Redis的配置文件进行相应修改,以打开主从同步机制并允许Redis从节点可以连上主节点,将从节点设置成Redis主节点的从节点。
修改Redis主节点的配置文件/etc/redis/redis.conf,将以下内容添加进去:
# 允许从节点同步此主节点
slave-serve-stale-data yesslave-read-only no
# 开启主从同步masterauth
requirepass
其中,为Redis主节点的密码。
修改Redis从节点的配置文件/etc/redis/redis.conf,将以下内容添加进去:
# 启用Redis从节点
slaveof 192.168.1.100 6379
# 从节点需要验证才能连上主节点masterauth
requirepass
重启Redis主机和从机后,即可建立Redis主从复制机制。
第三步:搭建高可用集群
Redis主从机器的搭建并不是最终目标,我们需要搭建高可用集群,使得Redis不会因为任意一台节点的宕机而影响整个集群对外提供的服务。
以三台节点为例,我们将其中一台Ubuntu机器设为Redis主节点,以IP地址为192.168.1.100、端口号为6379,另外两台Ubuntu机器设为Redis从节点,以IP地址分别为192.168.1.101、192.168.1.102、端口号为6380、6381。
在Redis主节点上,我们需要对Redis配置文件进行修改,以设置该节点为Redis集群的主节点,并记录其节点ID,然后启动Redis服务。
# 打开集群模式
cluster-enabled yes
# 节点ID,可以改成其他字符串,但要求唯一cluster-node-id
# 集群由6个slots组成,将这6个slots分配给主节点cluster-slave-validity-factor 0
cluster-config-file /etc/redis/nodes.conf
其中,为该Redis主节点在整个Redis集群中的唯一标识符,通常为40个字符的字符串。
在Redis从节点上,修改Redis配置文件/etc/redis/redis.conf,将下面的内容添加进去:
# 配置此Redis从节点所对应的Redis主节点的IP和端口号
slaveof 192.168.1.100 6379
# 从节点需要验证才能连接上主节点masterauth
requirepass
# 打开集群模式cluster-enabled yes
启动Redis从节点后,能够自动从Redis主节点获取其节点ID,并向主节点执行CLUSTER.SLAVES指令,告诉主节点其作为从节点的实例ID和它的IP地址和端口。
在集群中的任意一台节点上,可以使用以下命令创建一个具有6个slots的集群。
redis-cli --cluster create 192.168.1.100:6379 192.168.1.101:6380 192.168.1.102:6381 --cluster-replicas 1
其中,–cluster-replicas 1表示为集群创建1个从节点。
至此,我们已经完成了Redis主从机器的配置和高可用集群的搭建,可以愉快地使用Redis提供的高性能、高可用性服务了。