이 글에서는 Redis의 Sentinel 메커니즘을 이해하고 Sentinel을 실행하는 두 가지 방법을 소개하겠습니다. 도움이 되길 바랍니다.
Redis-Sentinel은 Redis에서 공식적으로 권장하는 고가용성(HA) 솔루션입니다. Master-Slave용 고가용성 솔루션으로 Redis를 사용할 때, Master가 Down되면 Redis는 Redis-sentinel 자체는(많은 클라이언트 포함) 자동 마스터-슬레이브 전환을 구현하지 않으며 Redis-sentinel 자체도 독립적으로 실행되는 프로세스입니다. 여러 마스터-슬레이브 클러스터를 모니터링하고 마스터가 발견된 후 자체 이해 전환을 수행할 수 있습니다. 다운되었습니다. [관련 권장 사항: Redis 동영상 튜토리얼]
주요 기능은 다음과 같습니다.
분명히 단일 sentinel 프로세스만 사용하여 redis 클러스터를 모니터링하는 것은 신뢰할 수 없습니다. sentinel 프로세스가 다운되면 (sentinel 자체에도 단일 지점 문제가 있습니다. -of -failure) 전체 클러스터 시스템이 예상대로 작동하지 않습니다. 따라서 Sentinel을 클러스터링하는 것이 필요하며 이는 여러 가지 장점이 있습니다.
Sentinel의 현재 최신 안정 버전은 Sentinel 2라고 합니다(이전 Sentinel 1과 구별하기 위해). redis2.8 설치 패키지와 함께 출시되었습니다. Redis2.8을 설치한 후 redis2.8/src/에서 Redis-sentinel 시작 프로그램을 찾을 수 있습니다.
강력히 권장: redis2.6(sentinel 버전은 sentinel 1)을 사용하는 경우, sentinel 2의 redis2.8 버전을 사용하는 것이 좋습니다. 왜냐하면 sentinel 1에는 버그가 많고 공식적으로 더 이상 사용되지 않기 때문입니다. redis2.8 및 sentinel 2를 사용하는 것이 좋습니다.
sentinel을 실행하는 방법에는 두 가지가 있습니다:
redis-sentinel /path/to/sentinel.conf
redis-sentinel /path/to/sentinel.conf
redis-server /path/to/sentinel.conf --sentinel
以上两种方式,都必须指定一个sentinel的配置文件sentinel.conf,如果不指定,将无法启动sentinel。sentinel默认监听26379端口,所以运行前必须确定该端口没有被别的进程占用。
Redis源码包中包含了一个sentinel.conf文件作为sentinel的配置文件,配置文件自带了关于各个配置项的解释。典型的配置项如下所示:
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1 sentinel monitor resque 192.168.1.3 6380 4 sentinel down-after-milliseconds resque 10000 sentinel failover-timeout resque 180000 sentinel parallel-syncs resque 5
上面的配置项配置了两个名字分别为mymaster和resque的master,配置文件只需要配置master的信息就好啦,不用配置slave的信息,因为slave能够被自动检测到(master节点会有关于slave的消息)。需要注意的是,配置文件在sentinel运行期间是会被动态修改的,例如当发生主备切换时候,配置文件中的master会被修改为另外一个slave。这样,之后sentinel如果重启时,就可以根据这个配置来恢复其之前所监控的redis集群的状态。
接下来我们将一行一行地解释上面的配置项:
sentinel monitor mymaster 127.0.0.1 6379 2
redis-server /path/to/sentinel.conf --sentinel
🎜🎜위의 두 가지 방법을 모두 지정해야 합니다 A sentinel 구성 파일 sentinel.conf를 지정하지 않으면 sentinel이 시작되지 않습니다. Sentinel은 기본적으로 포트 26379를 수신하므로 이를 실행하기 전에 다른 프로세스가 해당 포트를 점유하고 있지 않은지 확인해야 합니다. 🎜🎜sentinel monitor mymaster 127.0.0.1 6379 2🎜
🎜sentinel down-after-milliseconds mymaster 60000 sentinel 장애 조치 시간 초과 mymaster 180000 sentinel 병렬-동기화 mymaster 1 sentinel monitor resque 192.168.1.3 6380 4 sentinel down-after-milliseconds resque 10000 sentinel failure-timeout resque 180000 sentinel parallel-syncs resque 5🎜🎜위 구성 항목은 mymaster와 resque라는 두 가지 이름을 구성합니다. 파일에는 마스터 정보만 구성하면 되고, 슬레이브는 자동으로 감지할 수 있기 때문에 슬레이브 정보를 구성할 필요가 없습니다(마스터 노드는 슬레이브에 대한 메시지를 갖습니다). Sentinel이 실행되는 동안 구성 파일이 동적으로 수정된다는 점에 유의해야 합니다. 예를 들어, 마스터-슬레이브 전환이 발생하면 구성 파일의 마스터가 다른 슬레이브로 수정됩니다. 이렇게 하면 나중에 Sentinel을 다시 시작하면 이 구성을 기반으로 이전에 모니터링했던 Redis 클러스터의 상태를 복원할 수 있습니다. 🎜🎜다음으로 위 구성 항목을 한 줄씩 설명하겠습니다. 🎜🎜
sentinel monitor mymaster 127.0.0.1 6379 2
🎜이 줄은 센티넬이 모니터링하는 마스터의 이름이 mymaster이고 주소가 127.0.0.1:6379임을 나타냅니다. 줄 끝의 마지막 2는 무엇을 의미하나요? 우리는 네트워크가 신뢰할 수 없다는 것을 알고 있습니다. 때로는 센티널이 네트워크 정체로 인해 마스터 Redis가 작동하지 않는다고 잘못 생각할 수도 있습니다. 센티널이 클러스터링되면 이 문제에 대한 해결책은 매우 간단해집니다. . 마스터가 실제로 죽었는지 확인하기 위해 통신합니다. 이는 클러스터에 마스터가 죽었다고 생각하는 두 개의 센티널이 있는 경우 마스터를 실제로 사용할 수 없는 것으로 간주할 수 있음을 의미합니다. (센티넬 클러스터의 각 센티널도 가십 프로토콜을 통해 서로 통신합니다.)
더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !
위 내용은 Redis의 Sentinel 메커니즘에 대해 이야기하고 사용법을 소개하겠습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!