redis(一)高可用集羣搭建
最近改bug改的我頭昏腦脹,突然想起來了,我有知乎的賬號了,有就利用起來,不要只書寫培訓的內容,自己會的都可以整理出來啊!
本章只介紹 redis配置文件,redis主從複製,redis高可用集羣(哨兵),關於redis的介紹啊,redis的命令請繞行。
一、搭建前的準備工作
1、下載redis
網址:
國外網站:https://redis.io/download
國內網站(推薦):http://download.redis.io/releases/
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配置文件詳解 - 小黑、 - 博客園- 啟動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
- 修改配置文件
- 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
- 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
- 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
- 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
- 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>
- 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>
- 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>
- 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
- 修改配置信息 (只修改下面兩個配置)
- sentinel_26380.conf
port 26380
sentinel monitor mymaster 127.0.0.1 6380 2
- sentinel_26381.conf
port 26381
sentinel monitor mymaster 127.0.0.1 6380 2
- 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
三個哨兵啟動界面:
- 測試斷掉主伺服器
- 哨兵投票
推薦閱讀: