1. 程式人生 > 其它 >Redis主從和哨兵模式搭建

Redis主從和哨兵模式搭建

一、系統環境和redis版本:

    1. 系統:CentOS-7-x86_64
    2. Redis:redis-5.0.2
    3. 環境配置:一臺master,二臺slave

名稱

IP

密碼

Master

192.168.8.111

6379

1+1=2?Yes

Slave

192.168.8.112

6379

1+1=2?Yes

slave

192.168.8.113

6379

1+1=2?Yes

二、安裝配置CentOS7:

    1. 安裝系統太簡單不描述,linux主要系統目錄如下:

/etc/sysconfig/network-scripts/ifcfg-eth0 #網絡卡配置檔案

/etc/resolv.conf #客戶端DNS

/etc/hosts #本地的主機名解析的檔案

/etc/sysconfig/network #主機名

/etc/fstab #開機磁碟自動掛載的檔案

/etc/rc.local #把命令寫在此處,系統自啟動時會執行

/etc/inittab #開機載入先後級別的指令碼

/etc/init.d # yum、rpm安裝的軟體預設的啟動命令放在目錄下

/etc/profile #全域性(所有使用者)

/etc/bashrc #全域性(所有使用者)

~/.bashrc #區域性(當前使用者)

/usr/local #C盤Program預設的安裝目錄

/usr/src #原始碼安裝目錄

/var/log/messages #系統日誌

/var/log/secure #安全日誌

  1. 配置網路:

vim /etc/sysconfig/network-scripts/ifcfg-eth0 # 網絡卡配置檔案一般為ifcfg-xxxxxx

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=eth0

UUID=7a752861-020f-427c-bc29-fd8f1eeb80bc

DEVICE=eth0

ONBOOT=yes

IPADDR=192.168.8.111

PREFIX=24

GATEWAY=192.168.8.1

DNS1=114.114.114.114

Service network restart

Ip addr

  1. 防火牆策略:

firewall-cmd --zone=public --add-port=6379/tcp --permanent # 開放6379埠

firewall-cmd --zone=public --remove-port=6379/tcp --permanet # 刪除6379埠

firewall-cmd --zone=public --add-port=26379/tcp --permanent # 開放26379埠

firewall-cmd --zone=public --remove-port=26379/tcp --permanet # 刪除26379埠

firewall-cmd --reload # 配置立即生效

firewall-cmd --zone=public --list-ports # 檢視當前防火牆開放的埠

systemctl stop firewalld.service # 關閉防火牆

firewall-cmd --state # 檢視防火牆狀態

netstat -lnpt # 檢視埠開放狀態

ss -tanl #檢視埠

  1. 配置環境:

yum-yinstallgccautomakeautoconflibtoolmake

yum -y install tcl

yum -y install telnet

yum -y install openssh*

systemctl enable sshd

vim /etc/ssh/sshd_config # 配置ssh檔案

Port 22

ListenAddress 192.168.8.111

PermitRootLogin yes

PasswordAuthentication yes

AllowUsers root #新增允許遠端SSH登陸的使用者名稱,空格隔開(需reboot)

三、配置redis:

    1. 上傳或wget得到redis-5.0.2.tar.gz壓縮包:

cd /root

wget http://download.redis.io/releases/redis-5.0.2.tar.gz

  1. 安裝redis:

tar -xzvf redis-5.0.2.tar.gz

ll

cd redis-5.0.2 #進入redis目錄

make # 編譯

make install # 執行安裝,可用引數指定安裝路徑”PREFIX=/xxx/xxx”

  1. 測試redis正確安裝:

redis-server redis.conf # 啟動redis服務,順便看一下是否安裝成功

redis-cli -h 192.168.8.111 -p 6379 -a 1+1=2?Yes # 登陸redis命令介面

redis-cli -h 192.168.8.111 -p 6379 -a 1+1=2?Yes shutdown # 關閉redis程序或kill

  1. 配置主從複製模式:
    1. Master端,修改conf檔案:

vim /root/redis-5.0.2/redis.conf #修改redis配置,完成後可用mv改名

protected-mode no # 允許遠端訪問

daemonize yes # redis服務後臺執行

port 6379 # 埠號

logfile 7000.log # 日誌檔案及路徑

dir ./ # 資料檔案目錄

requirepass 1+1=2?Yes # 配置redis登陸密碼

masterauth 1+1=2?Yes # 配置哨兵模式選舉時的內部訪問密碼

bind 192.168.8.111 127.0.0.1 # 配置外網訪問IP

# AOF 資料持久化,主從模式必須開啟

appendonly yes

appendfilename aof-7000.aof

appendfsync everysec

no-appendfsync-on-rewrite yes

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

  1. Slave端,修改conf配置檔案:

vim /root/redis-5.0.2/redis.conf #修改redis配置,完成後可用mv改名

protected-mode no # 允許遠端訪問

daemonize yes # redis服務後臺執行

port 6379 # 埠號

logfile 7000.log # 日誌檔案及路徑

dir ./ # 資料檔案目錄

requirepass 1+1=2?Yes # 配置redis登陸密碼

slaveof 192.168.8.111 6379 # 繫結master的IP和埠

masterauth 1+1=2?Yes # 配置哨兵模式選舉時的內部訪問密碼

bind 192.168.8.111 127.0.0.1 # 配置外網訪問IP

# AOF 資料持久化,主從模式必須開啟

appendonly yes

appendfilename aof-7000.aof

appendfsync everysec

no-appendfsync-on-rewrite yes

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

  1. 配置redis服務系統啟動:

cd /root/redis-5.0.2/untils/

./install_server.sh # 執行redis提供的系統啟動解決方案,一路回車即可

(注:執行完畢,會自動生成”/etc/init.d/redis_6379”指令碼檔案)

chkconfig –add redis_6379 # 將生成的指令碼寫入自定義系統服務

systemctl start redis_6379 # 啟動服務,重啟也成

systemctl daemon-reload # 重啟系統也可以

  1. 配置哨兵模式:
    1. 哨兵模式Sentinel架構示意圖:
    2. 配置三臺機器的conf,以啟動Sentinel:

cd /root/redis-5.0.2

vim sentinel-26379.conf

port 26379 # 指定哨兵模式埠

daemonize yes #後臺執行

logfile "/root/redis-5.0.2/26379.log" # 日誌位置

dir "./" # 資料目錄

sentinel monitor mymaster 192.168.8.111 6379 2

# 指定監控主庫mymaster的IP、埠、2臺sentinel選舉

sentinel down-after-milliseconds mymaster 30000

# 指定失效30秒後mymaster為不可用

sentinel parallel-syncs mymaster 1 # 主備時只允許1臺slave同步

sentinel failover-timeout mymaster 15000

sentinel auth-pass mymaster 1+1=2?Yes # 主從密碼必須一致

bind 192.168.8.111 127.0.0.1 # 對映對外IP

redis-sentinel sentinel-26379.conf

# 其餘2臺slave的配置同上,只是bind對映的IP換成各自對外IP即可

  1. 測試Sentinel:

當主mymaster故障關閉時,兩臺slavewf 選舉出新的mymaster,自動切換主從,日誌記錄如下(可放大200%檢視具體內容):

  1. 為了sentinel更好的執行,需要修改一些系統限制:
    1. 修改open files:

ulimit -n 10032 # 系統預設是1024

ulimit -a # 再檢視確認一下修改成功,重啟後失效

永久修改open files數量,需要修改系統配置檔案limits.conf如下:

vim /etc/security/limits.conf

增加如下資訊:

* soft nofile 32768 #軟限制

* hard nofile 65536 #硬限制

  1. 修改core.somaxconn:

vim /etc/sysctl.conf

net.core.somaxconn = 1024 #寫入sysctl.conf,使系統預設128改成1024

sysctl -p #過載sysctl.conf配置

  1. 配置sentinel服務系統執行:

chmod +x /etc/rc.d/rc.local #賦許可權

chmod +x /etc/rc.local #賦軟連結許可權

ll /etc/rc.* #檢視確認一下賦rc.local的許可權成功

vim /etc/rc.local

redis-sentinel /root/redis-5.0.2/sentinel-26379.conf

reboot #或init 6重啟生效

  1. Redis的一些常用操作命令:

redis-server redis.conf # 以redis.conf配置啟動redis

redis-sentinel sentinel-26379.conf # sentinel-26379.conf配置啟動哨兵模式

redis-cli -h 192.168.8.111 -p 6379 -h 1+1=2?Yes # 登陸redis命令介面

set #新增記錄

get #獲取一條記錄

keys * #顯示當前redis中所有的記錄

info server #查詢當前redis資訊

info replication #查詢主從複製狀態和關係

info keyspace #查詢keys所有數量

flushdb #清庫