最近改bug改的我頭昏腦脹,突然想起來了,我有知乎的賬號了,有就利用起來,不要只書寫培訓的內容,自己會的都可以整理出來啊!

本章只介紹 redis配置文件redis主從複製redis高可用集羣(哨兵),關於redis的介紹啊,redis的命令請繞行。

一、搭建前的準備工作

1、下載redis

網址:

國外網站:redis.io/download

國內網站(推薦):download.redis.io/relea

2、編譯安裝

  • 安裝redis,需要先使用yum源安裝gcc(gcc是linux下的一個編譯器集合)

[root@localhost /]# yum -y install gcc

*注意:yum源 這個在centos6上默認已經給你配置好了,但是redhat 低版本(我的是6)的需要自己配置。

  • 解壓redis壓縮包,我這使用的是4.0.1版本

[root@localhost /]# cd /opt
[root@localhost opt]# mkdir redis
[root@localhost opt]# cd redis
[root@localhost redis]# tar -zxvf redis-4.0.1.tar.gz

  • 切換到redis目錄下,編譯安裝redis

[root@localhost redis]# cd redis-4.0.1
[root@localhost redis-4.0.1]# make

然後查看,當前的目錄(redis-4.0.1)出現src目錄表示已經redis安裝完成。

二、啟動單臺redis伺服器

安裝完成了redis,然後開始啟動redis伺服器,證明安裝完成的redis伺服器是能用的,然後再去搭建集羣。

  • 認識配置文件

現附上地址:

redis3.0配置文件詳解 - 小黑、 - 博客園?

www.cnblogs.com

  • 啟動redis伺服器

[root@localhost src]# ./redis-server ../redis.conf

*注意:

如果這樣啟動的話,當你 ctrl+C 停止當前進程會,redis也會關閉。如果想實現後臺啟動,需要修改redis.conf配置文件。

關閉後臺啟動的redis

[root@localhost src]# ./redis-cli shutdown

或者是 直接 kill

三、主從集羣搭建

一般來說,咱們的集羣搭建都是一主三從的模式。

  • 首先準備三個配置文件

[root@localhost redis-4.0.1]# cp reids.conf redis.conf.bak
[root@localhost redis-4.0.1]# cp redis.conf master_redis.conf
[root@localhost redis-4.0.1]# cp redis.conf slave_1_redis.conf
[root@localhost redis-4.0.1]# cp redis.conf slave_2_redis.conf
[root@localhost redis-4.0.1]# cp redis.conf slave_3_redis.conf

  • 修改配置文件
  1. master_redis.conf

#導入 redis.conf 配置文件,本文件中配置的信息會覆蓋redis.conf的配置
include /opt/redis/redis-4.0.1/redis.conf

#後臺啟動
daemonize yes

#redis埠
port 6380

#進程文件
pidfile /var/run/redis_ 6380.pid

#日誌文件
logfile /opt/redis/redis-4.0.1/log/6380.log

#資料庫文件
dbfilename dump6380.rdb

  1. slave_1_redis.conf

include /opt/redis/redis-4.0.1/redis.conf
daemonize yes
port 6381
pidfile /opt/redis/redis-4.0.1/log/6381.log
logfile 6381.log
dbfilename dump6381.rdb

#設置本臺伺服器的主伺服器是誰
slaveof 127.0.0.1 6380

  1. slave_2_redis.conf

include /opt/redis/redis-4.0.1/redis.conf
daemonize yes
port 6382
pidfile /opt/redis/redis-4.0.1/log/6382.log
logfile 6382.log
dbfilename dump6382.rdb
slaveof 127.0.0.1 6380

  1. slave_3_redis.conf

include /opt/redis/redis-4.0.1/redis.conf
daemonize yes
port 6383
pidfile /opt/redis/redis-4.0.1/log/6383.log
logfile 6383.log
dbfilename dump6383.rdb
slaveof 127.0.0.1 6380

  • 啟動redis

[root@localhost redis-4.0.1]# cd src/
[root@localhost src]# ./redis-server ../master_redis.conf
[root@localhost src]# ./redis-server ../slave_1_redis.conf
[root@localhost src]# ./redis-server ../slave_2_redis.conf
[root@localhost src]# ./redis-server ../slave_3_redis.conf
[root@localhost src]# ps -ef|grep redis
root 69165 1 0 23:04 ? 00:00:00 ./redis-server 127.0.0.1:6380
root 69186 1 0 23:05 ? 00:00:00 ./redis-server 127.0.0.1:6381
root 69199 1 0 23:05 ? 00:00:00 ./redis-server 127.0.0.1:6382
root 69225 1 0 23:06 ? 00:00:00 ./redis-server 127.0.0.1:6383
root 69259 66048 0 23:08 pts/4 00:00:00 grep --color=auto redis
[root@localhost src]#

  • 驗證

分4個客戶端進入redis

  1. master

[root@localhost src]# ./redis-cli 6380
Could not connect to Redis at 127.0.0.1:6379: Connection refused
[root@localhost src]# ./redis-cli -p 6380
127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:3
slave0:ip=127.0.0.1,port=6381,state=online,offset=756,lag=1
slave1:ip=127.0.0.1,port=6382,state=online,offset=756,lag=1
slave2:ip=127.0.0.1,port=6383,state=online,offset=756,lag=1
master_replid:b8f9b74eeab469430955497c3cb58208c7375fe2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:770
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:770
127.0.0.1:6380>

  1. slave 1

[root@localhost src]# ./redis-cli -p 6381
127.0.0.1:6381> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6380
master_link_status:up
master_last_io_seconds_ago:10
master_sync_in_progress:0
slave_repl_offset:1022
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:b8f9b74eeab469430955497c3cb58208c7375fe2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1022
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1022
127.0.0.1:6381>

  1. slave 2

[root@localhost src]# ./redis-cli -p 6382
127.0.0.1:6382> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6380
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_repl_offset:1218
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:b8f9b74eeab469430955497c3cb58208c7375fe2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1218
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:57
repl_backlog_histlen:1162
127.0.0.1:6382>

  1. slave 3

[root@localhost src]# ./redis-cli -p 6383
127.0.0.1:6383> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6380
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:1302
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:b8f9b74eeab469430955497c3cb58208c7375fe2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1302
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:85
repl_backlog_histlen:1218
127.0.0.1:6383>

四、高可用方案(哨兵)

  • 準備三個哨兵配置文件

[root@localhost src]# cd ..
[root@localhost redis-4.0.1]# pwd
/opt/redis/redis-4.0.1
[root@localhost redis-4.0.1]# cp sentinel.conf sentinel_26380.conf
[root@localhost redis-4.0.1]# cp sentinel.conf sentinel_26381.conf
[root@localhost redis-4.0.1]# cp sentinel.conf sentinel_26382.conf

  • 修改配置信息 (只修改下面兩個配置)
  1. sentinel_26380.conf

port 26380
sentinel monitor mymaster 127.0.0.1 6380 2

  1. sentinel_26381.conf

port 26381
sentinel monitor mymaster 127.0.0.1 6380 2

  1. sentinel_26382.conf

port 26382
sentinel monitor mymaster 127.0.0.1 6380 2

  • 啟動哨兵伺服器

因為哨兵沒有使用後臺啟動,需要開啟三個窗口,啟動命令如下:

[root@localhost redis-4.0.1]# cd src
[root@localhost src]# ./redis-sentinel ../sentinel_26380.conf

三個哨兵啟動界面:

哨兵1 埠26380

哨兵2 埠26381

哨兵3 埠26381

  • 測試斷掉主伺服器

  • 哨兵投票

哨兵1

哨兵2

哨兵3


推薦閱讀:
相關文章