天天看點

Ubuntu 18.04搭建Redis一主兩從三哨兵

案例環境

NAT模式

系統:Ubuntu 18.04.3
軟體版本:Redis 4.0.14.tar.gz
           
主機名 IP位址 角色
Redis-master 192.168.118.128 Master、sentinel
Redis-slave 192.168.118.129 slave、sentinel
Redis-slave 192.168.118.135 slave、sentinel

ubuntu18.04配置阿裡源

  • 以防出錯,先備份

    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

  • 編輯元清單檔案

    sudo vim /etc/apt/sources.list 或 sudo gedit /etc/apt/sources.list

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
           
  • 更新軟體清單

    sudo apt-get update

  • 更新軟體包

    sudo apt-get upgrade

關于清單裡内容不盡相同的問題:

元清單裡的bionic是18.04的版本号,每一版内容不同的地方就是版本号(或者官方一點的說:系統代号)

檢視新版本資訊

lsb_release -c

我們可以看到新版本的Ubuntu系統代号為bionic

同樣的我們也可以得到之前版本的系統代号:

Ubuntu 12.04 (LTS)代号為precise。

Ubuntu 14.04 (LTS)代号為trusty。

Ubuntu 15.04 代号為vivid。

Ubuntu 15.10 代号為wily。

Ubuntu 16.04 (LTS)代号為xenial

因為更改apt安裝源時用的系統不一樣,元清單中系統代号也不同,不同版本的ubuntu系統源清單更改時需注意版本代号的不同

基本環境配置

  • 關閉防火牆、selinux

    sudo ufw disable

    sudo setenforce 0

  • 修改root密碼

    sudo passwd root

  • 更新軟體源清單

    sudo apt-get update

  • 安裝 ftp、ssh、nfs、vim

    sudo apt-get install -y vsftpd openssh-server nfs-kernel-server portmap vim

  • 修改主機名

    sudo hostnamectl set-hostname Redis-master

    sudo hostnamectl set-hostname Redis-slave1

    sudo hostnamectl set-hostname Redis-slave2

  • 修改Host檔案

    vim /etc/hosts

    192.168.118.128    Redis-master
    192.168.118.135    Redis-slave1
    192.168.118.129    Redis-slave2
               

安裝redis

  • 解壓編譯安裝

    tar zxvf redis-4.0.14.tar.gz

    mv redis-4.0.14 /usr/local/redis

    cd /usr/local/redis

    make

報錯,原因是沒有安裝gcc

Ubuntu 18.04搭建Redis一主兩從三哨兵

apt-get –y install gcc g++

make distclean

make

make install

主從/哨兵配置

redis.conf配置主從, sentinel.conf配置哨兵

Ubuntu 18.04搭建Redis一主兩從三哨兵
  • 【通用配置】

    下面3項,在每個

    redis.conf

    裡進行修改,在每個

    sentinel.conf

    裡新增
#支援内網/本地通路,比如 bind 172.31.175.142 127.0.0.1
bind 本機内網IP 127.0.0.1
#支援背景運作,預設值為no
daemonize yes
#日志檔案,比如redis.log、sentinel.log
logfile xxx.log
           
  • 【slave的配置】

    在2個slave的

    redis.conf

    下指定master

    vim /usr/local/redis/redis.conf

#指定master
slaveof 192.168.118.128  6379
#設定從庫隻讀
slave-read-only yes  
           
  • 【3台機器的sentinel的配置】

    vim /usr/local/redis/sentinel.conf

    在 entinel.conf下指定監控的master
#指定監控的master  ,  “2”表明故障恢複需要的哨兵數量
sentinel monitor mymaster 192.168.118.128  6379 2
           

啟動

分别啟動主從redis, 檢視端口運作狀态,驗證沒問題

[email protected]:/usr/local/redis# redis-server redis.conf
[email protected]:~# netstat -anptu | grep redis
           
Ubuntu 18.04搭建Redis一主兩從三哨兵
[email protected]:/usr/local/redis# redis-server redis.conf
[email protected]:~# netstat -anptu | grep redis
           
Ubuntu 18.04搭建Redis一主兩從三哨兵
[email protected]:/usr/local/redis# redis-server redis.conf
[email protected]:~# netstat -anptu | grep redis
           
Ubuntu 18.04搭建Redis一主兩從三哨兵

關閉

redis-cli shutdown

連接配接redis檢視主從資訊

cli連接配接redis成功後, 輸入

info replication

  • 下面是master的replication資訊
[email protected]:/usr/local/redis# redis-cli 
127.0.0.1:6379> info replication
           
Ubuntu 18.04搭建Redis一主兩從三哨兵
  • 登入從庫可以看到主庫的狀态
[email protected]:/usr/local/redis#  redis-cli 
127.0.0.1:6379> info replication
           
Ubuntu 18.04搭建Redis一主兩從三哨兵

測試主從同步

  • 在master 端操作
    Ubuntu 18.04搭建Redis一主兩從三哨兵
  • 在selave 端檢視
    • slave1
      Ubuntu 18.04搭建Redis一主兩從三哨兵
    • slave2
      Ubuntu 18.04搭建Redis一主兩從三哨兵

啟動哨兵

---- (有部署哨兵的都啟動) ----

[email protected]:/usr/local/redis# redis-sentinel  sentinel.conf
[email protected]:~# netstat -anptu | grep redis
           
Ubuntu 18.04搭建Redis一主兩從三哨兵

故障轉移

  • 關閉Redis-master的redis-server程序.
redis-cli -h 192.168.118.128-p 6379 shutdown
           
  • 檢視主從資訊
    • slave1(192.168.118.129)

      master已經轉移到Slave2(192.168.118.135)上

      當故障轉移成功後, redis就是一主一從

      Ubuntu 18.04搭建Redis一主兩從三哨兵
      Ubuntu 18.04搭建Redis一主兩從三哨兵
      Ubuntu 18.04搭建Redis一主兩從三哨兵
    • slave2(192.168.118.135)

      slave從節點現在變為192.168.188.128和192.168.118.129

      Ubuntu 18.04搭建Redis一主兩從三哨兵

當你的才華還撐不起你的野心時,那你就應該靜下心來學習~~

繼續閱讀