> 백엔드 개발 > PHP 튜토리얼 > PHP 개발: Redis 및 Sentinel을 사용하여 HA 모드 및 장애 조치 구현

PHP 개발: Redis 및 Sentinel을 사용하여 HA 모드 및 장애 조치 구현

王林
풀어 주다: 2023-06-17 11:30:01
원래의
1302명이 탐색했습니다.

기존 단일 노드 아키텍처에서는 애플리케이션에 대한 모든 요청이 동일한 서버로 전송됩니다. 이 아키텍처는 상대적으로 단순하지만 단일 실패 지점이 발생할 위험이 있습니다. 애플리케이션이 위치한 서버가 다운되면 모든 요청이 실패합니다.

이 문제를 해결하려면 고가용성(HA) 모드 및 장애 조치를 달성하기 위해 여러 서버에 애플리케이션을 배포해야 합니다. 이 문서에서는 Redis와 Sentinel을 사용하여 고가용성 및 장애 조치를 구현하는 방법을 다룹니다.

Redis는 캐싱, 큐잉, 실시간 분석 및 메시징에 일반적으로 사용되는 빠른 인 메모리 데이터 스토리지 시스템입니다. Redis는 단일 스레드 설계를 특징으로 하며 메모리를 저장소로 사용합니다. 이는 Redis에 뛰어난 성능과 확장성을 제공합니다.

Sentinel은 Redis를 위한 고가용성 솔루션입니다. Redis 인스턴스를 모니터링하고 기본 노드에 장애가 발생하면 자동으로 백업 노드로 전환할 수 있습니다. 이 자동 장애 조치를 통해 Redis 인스턴스를 항상 사용할 수 있습니다.

Redis와 Sentinel을 사용하여 고가용성 및 장애 조치를 구현하는 단계는 다음과 같습니다.

첫 번째 단계, Redis 및 Sentinel 설치

CentOS에서는 다음 명령을 사용하여 Redis 및 Sentinel을 설치할 수 있습니다.

yum install redis sentinel
로그인 후 복사

Ubuntu에서는 다음 명령을 사용하여 Redis 및 Sentinel을 설치할 수 있습니다.

apt-get install redis sentinel
로그인 후 복사

두 번째 단계, Redis 구성 파일 수정

기본 노드와 백업 노드에서 Redis 구성 파일을 수정해야 합니다. CentOS에서는 구성 파일이 /etc/redis.conf에 있고, Ubuntu에서는 구성 파일이 /etc/redis/redis.conf에 있습니다. /etc/redis.conf,在 Ubuntu 上,配置文件位于 /etc/redis/redis.conf

在配置文件中,需要将 bind 参数设置为节点的 IP 地址。如果您想允许来自任何 IP 的客户端连接到 Redis,可以将 bind 参数设置为 0.0.0.0。

您还需要将 requirepass 参数设置为密码,以确保只有授权用户才能访问 Redis。

最后,将 daemonize 参数设置为 yes,以确保 Redis 在后台运行。

bind 192.168.0.1
requirepass mypassword
daemonize yes
로그인 후 복사

对于备份节点,还需要将 slaveof 参数设置为主节点的 IP 地址和端口号。

slaveof 192.168.0.1 6379
로그인 후 복사

第三步,修改 Sentinel 配置文件

在 CentOS 上,Sentinel 配置文件位于 /etc/redis-sentinel.conf,在 Ubuntu 上,Sentinel 配置文件位于 /etc/redis/sentinel.conf

在 Sentinel 配置文件中,需要设置 bind 参数,以确保 Sentinel 接收来自客户端的请求。如果您想允许来自任何 IP 地址的客户端连接到 Sentinel,可以将 bind 参数设置为 0.0.0.0。

您还需要设置 sentinel monitor 参数,用于监视 Redis 实例。该参数包含了 Redis 实例的名称、IP 地址、端口号和故障转移阈值。

bind 192.168.0.2
sentinel monitor mymaster 192.168.0.1 6379 2
로그인 후 복사

这个例子中,Sentinel 将监视名为 mymaster 的 Redis 实例。如果主节点失效了,Sentinel 将在备份节点上自动启动新的 Redis 实例并将其升级为主节点。

第四步,启动 Redis 和 Sentinel

在每个节点上,启动 Redis 和 Sentinel:

systemctl start redis
systemctl start redis-sentinel
로그인 후 복사

在主节点启动后,Sentinel 将开始监视 Redis 实例。如果主节点失效,Sentinel 将在备份节点上自动启动新的 Redis 实例并将其升级为主节点。在这个过程中,客户端将自动切换到新的主节点,应用程序将继续正常工作。

您可以使用以下命令检查 Redis 实例的状态:

redis-cli -h 192.168.0.1 -p 6379 ping
로그인 후 복사

您可以使用以下命令检查 Sentinel 的状态:

redis-cli -h 192.168.0.2 -p 26379 sentinel slaves mymaster
로그인 후 복사

这个例子中,我们将 Sentinel 连接到 192.168.0.2 的端口 26379,并检查名为 mymaster

구성 파일에서 bind 매개변수는 노드의 IP 주소로 설정되어야 합니다. 모든 IP의 클라이언트가 Redis에 연결하도록 허용하려면 bind 매개변수를 0.0.0.0으로 설정하면 됩니다.

인증된 사용자만 Redis에 액세스할 수 있도록 requirepass 매개변수를 비밀번호로 설정해야 합니다.

마지막으로 daemonize 매개변수를 yes로 설정하여 Redis가 백그라운드에서 실행되고 있는지 확인하세요.

rrreee

백업 노드의 경우 slaveof 매개변수도 기본 노드의 IP 주소와 포트 번호로 설정해야 합니다. 🎜rrreee🎜세 번째 단계는 Sentinel 구성 파일을 수정하는 것입니다🎜🎜CentOS에서 Sentinel 구성 파일은 /etc/redis-sentinel.conf에 있습니다. Ubuntu에서는 Sentinel 구성 파일이 있습니다. /etc /redis/sentinel.conf에 있습니다. 🎜🎜Sentinel 구성 파일에서 Sentinel이 클라이언트의 요청을 수신하도록 bind 매개변수를 설정해야 합니다. 모든 IP 주소의 클라이언트가 Sentinel에 연결되도록 허용하려면 bind 매개변수를 0.0.0.0으로 설정하면 됩니다. 🎜🎜Redis 인스턴스를 모니터링하려면 sentinel monitor 매개변수도 설정해야 합니다. 이 매개변수에는 Redis 인스턴스의 이름, IP 주소, 포트 번호, 장애 조치 임계값이 포함됩니다. 🎜rrreee🎜이 예에서 Sentinel은 mymaster라는 Redis 인스턴스를 모니터링합니다. 기본 노드에 장애가 발생하면 Sentinel은 자동으로 백업 노드에서 새 Redis 인스턴스를 시작하고 이를 기본 노드로 승격합니다. 🎜🎜4단계, Redis 및 Sentinel 시작🎜🎜각 노드에서 Redis 및 Sentinel을 시작합니다. 🎜rrreee🎜마스터 노드가 시작된 후 Sentinel은 Redis 인스턴스 모니터링을 시작합니다. 기본 노드에 장애가 발생하면 Sentinel은 자동으로 백업 노드에서 새 Redis 인스턴스를 시작하고 이를 기본 노드로 승격합니다. 이 프로세스 동안 클라이언트는 자동으로 새 마스터 노드로 전환되며 애플리케이션은 계속해서 정상적으로 작동합니다. 🎜🎜다음 명령을 사용하여 Redis 인스턴스의 상태를 확인할 수 있습니다. 🎜rrreee🎜 다음 명령을 사용하여 Sentinel의 상태를 확인할 수 있습니다. 🎜rrreee🎜이 예에서는 Sentinel을 192.168.0.2의 포트 26379에 연결하고 확인합니다. 이름 mymaster. 🎜🎜요약🎜🎜이 기사에서는 Redis와 Sentinel을 사용하여 고가용성 및 장애 조치를 달성하는 방법을 다루었습니다. 여러 서버에 애플리케이션을 배포하고 자동 장애 조치를 사용하면 기본 노드에 장애가 발생하더라도 애플리케이션이 계속 제대로 작동하도록 보장할 수 있습니다. 🎜🎜이렇게 하면 애플리케이션의 가용성을 높이고 단일 실패 지점의 위험을 줄일 수 있습니다. 이 기사가 도움이 되기를 바라며 Redis와 Sentinel을 사용하여 행운이 따르기를 바랍니다. 🎜

위 내용은 PHP 개발: Redis 및 Sentinel을 사용하여 HA 모드 및 장애 조치 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿