日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis 哨兵安装-Centos

發布時間:2023/12/18 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis 哨兵安装-Centos 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Redis 哨兵安裝-Centos

Redis官網
Redis中文網
Redis 命令參考

由于機器有限,所以接下來的教程都是在一臺虛擬機中進行部署安裝.

Redis哨兵高可用架構

sentinel哨兵是特殊的redis服務,不提供讀寫服務,主要用來監控redis實例節點。哨兵架構下client端第一次從哨兵找出redis的主節點,后續就直接訪問redis的主節點,不會每次都通過sentinel代理訪問redis的主節點,當redis的主節點發生變化,哨兵會第一時間感知到,并且將新的redis主節點通知給client端(這里面redis的client端一般都實現了訂閱功能,訂閱sentinel發布的節點變動消息)

搭建主從

參考上篇 Redis 主從安裝-Centos文章,先搭建Redis主從

搭建哨兵

因為電腦配置有限,我這里使用一臺服務器,分三個端口進行演示,由于是演示就不配置額外的參數。

其中6379 端口作為默認主節點,6380和6381端口作為slave節點。

創建Sentinel 端口號26379

  • 創建目錄和配置文件
  • $ mkdir -p /usr/local/sentinel/26379 $ vim /usr/local/sentinel/26379/sentinel.conf
  • 編輯sentinel.conf內容如下
  • # 端口 port 26379 # 是否后臺運行 daemonize yes # 禁止保護模式 protected-mode no pidfile /usr/local/sentinel/26379/sentinel.pid # 配置目錄 dir "/usr/local/sentinel/26379" # 配置監聽的主服務器,這里sentinel monitor代表監控,mymaster代表服務器的名稱,可以自定義,host代表監控的主服務器(需要使用真實ip,不然客戶端在連接時會連接本地),6379代表端口,2代表只有兩個或兩個以上的哨兵認為主服務器不可用的時候,才會進行failover操作。 sentinel monitor mymaster 192.168.0.138 6379 2 # sentinel author-pass 定義服務的密碼,mymaster是服務名稱,123456是Redis服務器密碼 sentinel auth-pass mymaster soft01

    創建Sentinel 端口號26380

  • 創建目錄和配置文件
  • $ mkdir -p /usr/local/sentinel/26380 $ vim /usr/local/sentinel/26380/sentinel.conf
  • 編輯sentinel.conf內容如下
  • # 端口 port 26380 # 是否后臺運行 daemonize yes # 禁止保護模式 protected-mode no pidfile /usr/local/sentinel/26380/sentinel.pid # 配置目錄 dir "/usr/local/sentinel/26380" # 配置監聽的主服務器,這里sentinel monitor代表監控,mymaster代表服務器的名稱,可以自定義,host代表監控的主服務器(需要使用真實ip,不然客戶端在連接時會連接本地),6379代表端口,2代表只有兩個或兩個以上的哨兵認為主服務器不可用的時候,才會進行failover操作。 sentinel monitor mymaster 192.168.0.138 6379 2 # sentinel author-pass 定義服務的密碼,mymaster是服務名稱,123456是Redis服務器密碼 sentinel auth-pass mymaster soft01

    創建Sentinel 端口號26381

  • 創建目錄和配置文件
  • $ mkdir -p /usr/local/sentinel/26381 $ vim /usr/local/sentinel/26381/sentinel.conf
  • 編輯sentinel.conf內容如下
  • # 端口 port 26381 # 是否后臺運行 daemonize yes # 禁止保護模式 protected-mode no pidfile /usr/local/sentinel/26381/sentinel.pid # 配置目錄 dir "/usr/local/sentinel/26381" # 配置監聽的主服務器,這里sentinel monitor代表監控,mymaster代表服務器的名稱,可以自定義,host代表監控的主服務器(需要使用真實ip,不然客戶端在連接時會連接本地),6379代表端口,2代表只有兩個或兩個以上的哨兵認為主服務器不可用的時候,才會進行failover操作。 sentinel monitor mymaster 192.168.0.138 6379 2 # sentinel author-pass 定義服務的密碼,mymaster是服務名稱,123456是Redis服務器密碼 sentinel auth-pass mymaster soft01

    啟動Sentinel

  • 先啟動redis主從(下面是我搭建的主從)
  • # 啟動主服務 $ /usr/local/redis/bin/redis-server /usr/local/master-slave/6379/redis.conf # 啟動從服務 $ /usr/local/redis/bin/redis-server /usr/local/master-slave/6380/redis.conf $ /usr/local/redis/bin/redis-server /usr/local/master-slave/6381/redis.conf$ ps -ef | grep redis root 9673 1 0 00:23 ? 00:00:06 /usr/local/redis/bin/redis-server *:6379 root 30195 1 0 10月18 ? 00:00:08 /usr/local/redis/bin/redis-server *:6380 root 130775 1 0 00:21 ? 00:00:06 /usr/local/redis/bin/redis-server *:6381
  • 分別啟動哨兵
  • $ /usr/local/redis/bin/redis-sentinel /usr/local/sentinel/26379/sentinel.conf $ /usr/local/redis/bin/redis-sentinel /usr/local/sentinel/26380/sentinel.conf $ /usr/local/redis/bin/redis-sentinel /usr/local/sentinel/26381/sentinel.conf$ ps -ef | grep sentinel root 116864 1 0 01:30 ? 00:00:00 /usr/local/redis/bin/redis-sentinel *:26379 [sentinel] root 119538 1 0 01:30 ? 00:00:00 /usr/local/redis/bin/redis-sentinel *:26380 [sentinel] root 119765 1 0 01:31 ? 00:00:00 /usr/local/redis/bin/redis-sentinel *:26381 [sentinel]

    啟動sentinel的方式:

    # 方式一 $ ./redis-sentinel sentinel.conf # 方式二 $ ./redis-server sentinel.conf --sentinel

    查看Redis信息

  • 查看redis服務的信息:
  • $ /usr/local/redis/bin/redis-cli -p 6379 -a soft01 127.0.0.1:6379> info # Replication role:master connected_slaves:2 slave0:ip=192.168.0.138,port=6380,state=online,offset=219732,lag=1 slave1:ip=192.168.0.138,port=6381,state=online,offset=219873,lag=0 master_replid:25a1a32168e72f2f5f6f5fc449c2f9b89f9eae66 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:219873 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:219873$ /usr/local/redis/bin/redis-cli -p 6380 -a soft01 127.0.0.1:6380> info # Replication role:slave master_host:192.168.0.138 master_port:6379 master_link_status:up master_last_io_seconds_ago:0 master_sync_in_progress:0 slave_repl_offset:227684 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:25a1a32168e72f2f5f6f5fc449c2f9b89f9eae66 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:227684 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:227684$ /usr/local/redis/bin/redis-cli -p 6381 -a soft01 127.0.0.1:6381> info # Replication role:slave master_host:192.168.0.138 master_port:6379 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:236482 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:25a1a32168e72f2f5f6f5fc449c2f9b89f9eae66 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:236482 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:236482
  • 查看哨兵配置文件變更信息:
  • $ less /usr/local/sentinel/26379/sentinel.conf sentinel myid 511958e1eac946e44dfb00a4a97764137839d8b2 #唯一標識 sentinel deny-scripts-reconfig yes # Generated by CONFIG REWRITE sentinel monitor mymaster 192.168.0.138 6379 2 sentinel auth-pass mymaster soft01 sentinel config-epoch mymaster 0 sentinel leader-epoch mymaster 0 sentinel known-replica mymaster 192.168.0.138 6381 # 監控到的從節點 sentinel known-replica mymaster 192.168.0.138 6380 # 監控到的從節點 sentinel known-sentinel mymaster 192.168.0.138 26380 e2dbf2594ddbef6088001be07f4a9651c18260a6 # 感知到的sentinel節點 sentinel known-sentinel mymaster 192.168.0.138 26381 8dd9dfd6d1a4234ee3d25a250f61cfd1fece419e # 感知到的sentinel節點 sentinel current-epoch 0$ less /usr/local/sentinel/26380/sentinel.conf sentinel myid e2dbf2594ddbef6088001be07f4a9651c18260a6 sentinel deny-scripts-reconfig yes # Generated by CONFIG REWRITE sentinel monitor mymaster 192.168.0.138 6379 2 sentinel auth-pass mymaster soft01 sentinel config-epoch mymaster 0 sentinel leader-epoch mymaster 0 sentinel known-replica mymaster 192.168.0.138 6381 sentinel known-replica mymaster 192.168.0.138 6380 sentinel known-sentinel mymaster 192.168.0.138 26381 8dd9dfd6d1a4234ee3d25a250f61cfd1fece419e sentinel known-sentinel mymaster 192.168.0.138 26379 511958e1eac946e44dfb00a4a97764137839d8b2 sentinel current-epoch 0$ less /usr/local/sentinel/26381/sentinel.conf sentinel myid 8dd9dfd6d1a4234ee3d25a250f61cfd1fece419e sentinel deny-scripts-reconfig yes # Generated by CONFIG REWRITE sentinel monitor mymaster 192.168.0.138 6379 2 sentinel auth-pass mymaster soft01 sentinel config-epoch mymaster 0 sentinel leader-epoch mymaster 0 sentinel known-replica mymaster 192.168.0.138 6380 sentinel known-replica mymaster 192.168.0.138 6381 sentinel known-sentinel mymaster 192.168.0.138 26380 e2dbf2594ddbef6088001be07f4a9651c18260a6 sentinel known-sentinel mymaster 192.168.0.138 26379 511958e1eac946e44dfb00a4a97764137839d8b2 sentinel current-epoch 0

    由此可知,6379是Redis的主節點,6380和6381是從節點。

    主節點故障測試

    kill主節點

    # 9673 是主節點的pid $ kill -9 9673

    正常啟動主從和哨兵后,根據配置文件我們知道,6379端口號對應的redis是主節點,我們現在將主節點殺掉。

    查看redis服務信息

    首先查看sentinel(26379、26380、26381)配置文件,發現它們都修改了監控主節點的配置信息:

    # 改之前 sentinel monitor mymaster 192.168.0.138 6379 2 # 改之后 sentinel monitor mymaster 192.168.0.138 6380 2

    等sentinel選舉完成后,查看redis服務信息,發現6380變為了新的主節點,6381變為6380的從節點。

    $ /usr/local/redis/bin/redis-cli -p 6380 -a soft01 127.0.0.1:6380> info # Replication role:master connected_slaves:1 slave0:ip=192.168.0.138,port=6381,state=online,offset=319536,lag=1 master_replid:723a15ea136602f4205288882d403e3734405fa0 master_replid2:25a1a32168e72f2f5f6f5fc449c2f9b89f9eae66 master_repl_offset:319677 second_repl_offset:277075 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:319677$ /usr/local/redis/bin/redis-cli -p 6381 -a soft01 127.0.0.1:6381> info # Replication role:slave master_host:192.168.0.138 master_port:6380 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:323935 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:723a15ea136602f4205288882d403e3734405fa0 master_replid2:25a1a32168e72f2f5f6f5fc449c2f9b89f9eae66 master_repl_offset:323935 second_repl_offset:277075 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:323935

    最后查看各個redis.conf的變化

    • /usr/local/master-slave/6379/redis.conf未變化,因為服務停止了
    • /usr/local/master-slave/6380/redis.conf 去掉了 replicaof 配置,因為它已經成為新的主節點了。
    • /usr/local/master-slave/6381/redis.conf內將replicaof 192.168.0.138 6379修改成replicaof 192.168.0.138 6380,指向了新的主節點。

    恢復6379服務

  • 啟動6379
  • $ /usr/local/redis/bin/redis-server /usr/local/master-slave/6379/redis.conf
  • 查看/usr/local/master-slave/6379/redis.conf文件新增了replicaof 192.168.0.138 6380,自動轉為6380的從節點。
  • 查看redis服務信息,6380主節點,6379和6381都是它的從節點
  • $ /usr/local/redis/bin/redis-cli -p 6379 -a soft01 127.0.0.1:6379> info # Replication role:slave master_host:192.168.0.138 master_port:6380 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:568652 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:723a15ea136602f4205288882d403e3734405fa0 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:568652 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:544774 repl_backlog_histlen:23879$ /usr/local/redis/bin/redis-cli -p 6380 -a soft01 127.0.0.1:6380> info # Replication role:master connected_slaves:2 slave0:ip=192.168.0.138,port=6381,state=online,offset=580566,lag=1 slave1:ip=192.168.0.138,port=6379,state=online,offset=580566,lag=1 master_replid:723a15ea136602f4205288882d403e3734405fa0 master_replid2:25a1a32168e72f2f5f6f5fc449c2f9b89f9eae66 master_repl_offset:580989 second_repl_offset:277075 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:580989$ /usr/local/redis/bin/redis-cli -p 6381 -a soft01 127.0.0.1:6381> info # Replication role:slave master_host:192.168.0.138 master_port:6380 master_link_status:up master_last_io_seconds_ago:0 master_sync_in_progress:0 slave_repl_offset:587094 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:723a15ea136602f4205288882d403e3734405fa0 master_replid2:25a1a32168e72f2f5f6f5fc449c2f9b89f9eae66 master_repl_offset:587094 second_repl_offset:277075 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:587094

    這樣就完成了故障轉移。

    總結

    當主節點宕機后,sentinel會在slave中選舉一個變成新的master,將其他節點指向新的主節點(解決了主從模式不能自動恢復的問題)。
    但是在主節點異常,哨兵進行選舉時,會出現Redis短暫的不可以用。

    總結

    以上是生活随笔為你收集整理的Redis 哨兵安装-Centos的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。