環(huán)境介紹:
操作系統(tǒng):中標(biāo)麒麟6.0
redis最新穩(wěn)定版4.0.6
在這里我們搭建的是一個1主3從的redis+3個哨兵集群的環(huán)境,由于是在一臺物理機上,所有我們用端口區(qū)分。
主節(jié)點master物理機IP:192.168.150.129 ? ? ??端口:7000
從節(jié)點slave1?物理機IP:192.168.150.129 ?? ? ? ? ? ? ?端口:7001 ? ?哨兵sentinel1端口:26301
從節(jié)點slave2物理機IP:192.168.150.129 ??? ? ? ? ? ? 端口:7002 ? ?哨兵sentinel2端口:26302
從節(jié)點slave3物理機IP:192.168.150.129 ??? ? ? ? ? ? 端口:7003 ? ?哨兵sentinel2端口:26303
一、下載安裝
依賴安裝
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz?
sudo tar xzvf tcl8.6.1-src.tar.gz? -C /usr/local/?
cd? /usr/local/tcl8.6.1/unix/?
sudo ./configure?
sudo make?
sudo make install?
下載地址:https://redis.io/download?
$ wget http://download.redis.io/releases/redis-4.0.6.tar.gz
$ tar xzf redis-4.0.6.tar.gz
$ cd redis-4.0.6
$ make
$ mkdir -p /usr/local/redis
$ make PREFIX=/usr/local/redis install
二、復(fù)制文件
進(jìn)入redis所在目錄
創(chuàng)建7000、7001、7002、7003目錄,分別將安裝目錄下的redis.conf、sentinel.conf 拷貝到這四個目錄下。
主節(jié)點
mkdir -p /usr/local/redis/7000/data &&? mkdir -p /usr/local/redis/7000/log &&? cp redis.conf /usr/local/redis/7000/redis7000.conf?
從節(jié)點和哨兵
mkdir -p /usr/local/redis/7001/data &&? mkdir -p /usr/local/redis/7001/log? &&? mkdir -p /usr/local/redis/7001/run/tmp && cp redis.conf /usr/local/redis/7001/redis7001.conf? && cp sentinel.conf? /usr/local/redis/7001/sentinel26301.conf
mkdir -p /usr/local/redis/7002/data &&? mkdir -p /usr/local/redis/7002/log? &&? mkdir -p /usr/local/redis/7002/run/tmp? && cp redis.conf /usr/local/redis/7002/redis7002.conf? && cp sentinel.conf? /usr/local/redis/7002/sentinel26302.conf
mkdir -p /usr/local/redis/7003/data &&? mkdir -p /usr/local/redis/7003/log? &&? mkdir -p /usr/local/redis/7003/run/tmp && cp redis.conf /usr/local/redis/7003/redis7003.conf? && cp sentinel.conf? /usr/local/redis/7003/sentinel26303.conf
三、設(shè)置內(nèi)存分配策略(可選,根據(jù)服務(wù)器的實際情況進(jìn)行設(shè)置)
/proc/sys/vm/overcommit_memory
可選值:0、1、2。
0, 表示內(nèi)核將檢查是否有足夠的可用內(nèi)存供應(yīng)用進(jìn)程使用;如果有足夠的可用內(nèi)存,內(nèi)存申請允許;否則,內(nèi)存申請失敗,并把錯誤返回給應(yīng)用進(jìn)程。
1, 表示內(nèi)核允許分配所有的物理內(nèi)存,而不管當(dāng)前的內(nèi)存狀態(tài)如何。
2, 表示內(nèi)核允許分配超過所有物理內(nèi)存和交換空間總和的內(nèi)存
四、開啟redis端口,修改防火墻配置文件(麒麟系統(tǒng)防護(hù)墻娃設(shè)置有問題)
??? vi /etc/sysconfig/iptables
加入端口配置
????? vi /etc/sysconfig/iptables
加入端口配置
?-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 7000 -j ACCEPT??
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport26301 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport26302 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport26303 -j ACCEPT
重新加載規(guī)則
??? service iptables restart
五、配置redis.config文件
1、主節(jié)點master的配置文件redis7000.conf:
# vim /usr/local/redis/7000/redis7000.conf
# 注釋以下內(nèi)容開啟遠(yuǎn)程訪問
# bind 127.0.0.1
# Redis使用后臺模式
daemonize yes
# 關(guān)閉保護(hù)模式
protected-mode no
# 修改啟動端口為6379
port 7000
# 修改pidfile指向路徑
pidfile? /usr/local/redis/7000/redis_7000.pid
#日志文件
logfile " /usr/local/redis/7000/log/7000.log"
#數(shù)據(jù)庫文件名
dbfilename dump7000.rdb
#數(shù)據(jù)庫文存放目錄
dir /usr/local/redis/7000/data
#? 在高并發(fā)的環(huán)境中,為避免慢客戶端的連接問題,需要設(shè)置一個高速后臺日志
tcp-backlog 511
#開啟快照
appendonly yes
啟動主節(jié)點
/usr/local/redis/bin/redis-server /usr/local/redis/7000/redis7000.conf
測試是否成功
2、從節(jié)點slave1的配置文件redis7001.conf :
# vim /usr/local/redis/7001/redis7001.conf
# 注釋以下內(nèi)容開啟遠(yuǎn)程訪問
# bind 127.0.0.1
# Redis使用后臺模式
daemonize yes
# 關(guān)閉保護(hù)模式
protected-mode no
# 修改啟動端口為6379
port 7001
# 修改pidfile指向路徑
pidfile? /usr/local/redis/7001/redis_7001.pid
#日志文件
logfile " /usr/local/redis/7001/log/7001.log"
#數(shù)據(jù)庫文件名
dbfilename dump7001.rdb
#數(shù)據(jù)庫文存放目錄
dir /usr/local/redis/7001/data
#? 在高并發(fā)的環(huán)境中,為避免慢客戶端的連接問題,需要設(shè)置一個高速后臺日志
tcp-backlog 511
#開啟快照
appendonly yes
#主節(jié)點配置
slaveof 127.0.0.1 7000
啟動從節(jié)點
/usr/local/redis/bin/redis-server /usr/local/redis/7001/redis7001.conf
測試是否成功
3、從節(jié)點slave2的配置文件redis7002.conf:
# 注釋以下內(nèi)容開啟遠(yuǎn)程訪問
# bind 127.0.0.1
# Redis使用后臺模式
daemonize yes
# 關(guān)閉保護(hù)模式
protected-mode no
# 修改啟動端口為6379
port 7002
# 修改pidfile指向路徑
pidfile? /usr/local/redis/7002/redis_7002.pid
#日志文件
logfile " /usr/local/redis/7002/log/7002.log"
#數(shù)據(jù)庫文件名
dbfilename dump7002.rdb
#數(shù)據(jù)庫文存放目錄
dir /usr/local/redis/7002/data
#? 在高并發(fā)的環(huán)境中,為避免慢客戶端的連接問題,需要設(shè)置一個高速后臺日志
tcp-backlog 511
#開啟快照
appendonly yes
#主節(jié)點配置
slaveof 127.0.0.1 7000
啟動從節(jié)點
/usr/local/redis/bin/redis-server /usr/local/redis/7002/redis7002.conf
測試是否成功
4、從節(jié)點slave3的配置文件redis7003.conf:
# 注釋以下內(nèi)容開啟遠(yuǎn)程訪問
# bind 127.0.0.1
# Redis使用后臺模式
daemonize yes
# 關(guān)閉保護(hù)模式
protected-mode no
# 修改啟動端口為6379
port 7003
# 修改pidfile指向路徑
pidfile? /usr/local/redis/7003/redis_7003.pid
#日志文件
logfile " /usr/local/redis/7003/log/7003.log"
#數(shù)據(jù)庫文件名
dbfilename dump7003.rdb
#數(shù)據(jù)庫文存放目錄
dir /usr/local/redis/7003/data
#? 在高并發(fā)的環(huán)境中,為避免慢客戶端的連接問題,需要設(shè)置一個高速后臺日志
tcp-backlog 511
#開啟快照
appendonly yes
#主節(jié)點配置
slaveof 127.0.0.1 7000
啟動從節(jié)點
/usr/local/redis/bin/redis-server /usr/local/redis/7003/redis7003.conf
測試是否成功
5、哨兵sentinel1的配置文件sentinel26301.conf:
port?26301
dir?/usr/local/redis/7001/run/tmp
sentinel?monitor?mymaster?127.0.0.1?7000?2
sentinel?down-after-milliseconds?mymaster?30000
sentinel?parallel-syncs?mymaster?1
sentinel?failover-timeout?mymaster?180000
logfile "/usr/local/redis/7001/log/sentinel26301.log"
6、哨兵sentinel2的配置文件sentinel26302.conf:
port?26302
dir?/usr/local/redis/7002/run/tmp
sentinel?monitor?mymaster?127.0.0.1?7000?2
sentinel?down-after-milliseconds?mymaster?30000
sentinel?parallel-syncs?mymaster?1
sentinel?failover-timeout?mymaster?180000
logfile "/usr/local/redis/7002/log/sentinel26302.log"
7、哨兵sentinel3的配置文件sentinel26303.conf:
port?26303
dir?/usr/local/redis/7003/run/tmp
sentinel?monitor?mymaster?127.0.0.1?7000?2
sentinel?down-after-milliseconds?mymaster?30000
sentinel?parallel-syncs?mymaster?1
sentinel?failover-timeout?mymaster?180000
logfile "/usr/local/redis/7003/log/sentinel26303.log"
六、啟動redis和哨兵服務(wù)
注意:第一次要先啟動redis主服務(wù)、從服務(wù),然后才能啟動哨兵服務(wù)
1、進(jìn)入redis安裝目錄的根目錄
2、啟動redis主節(jié)點
/usr/local/redis/bin/redis-server /usr/local/redis/7000/redis7000.conf
3、啟動redis從節(jié)點
/usr/local/redis/bin/redis-server /usr/local/redis/7001/redis7001.conf
/usr/local/redis/bin/redis-server /usr/local/redis/7002/redis7002.conf
/usr/local/redis/bin/redis-server /usr/local/redis/7003/redis7003.conf
4、啟動哨兵
/usr/local/redis/bin/redis-sentinel? /usr/local/redis/7001/sentinel26301.conf &
/usr/local/redis/bin/redis-sentinel? /usr/local/redis/7002/sentinel26302.conf &
/usr/local/redis/bin/redis-sentinel? /usr/local/redis/7003/sentinel26303.conf &
七、一些常用命令
進(jìn)入redis的安裝目錄
啟動redis-server:
./redis-server redis_6305.conf &
啟動redis-sentinel
./redis-sentinel sentinel_6301.config
./redis-server sentinel_6316.conf --sentinel &
查看某個端口信息:
./redis-cli -p 6301 info
./redis-cli -p 6301 info Replication
./redis-cli -p 6301 info Sentinel
查看某個主機上的信息redis信息
./redis-cli -h 10.16.41.52 -p 6316 info
./redis-cli -h 10.16.41.52 -p 6316 info Replication
./redis-cli -h 10.16.41.52 -p 6316 info Sentinel
關(guān)閉本機redis服務(wù)
./redis-cli -p 6379 shutdown
關(guān)閉遠(yuǎn)程主機redis服務(wù)
./redis-cli -h 192.168.9.18 -p 6379 shutdown
客戶端連接本機
./redis-cli -p 6301
客戶端連接遠(yuǎn)程機
./redis-cli -h 10.16.41.53 -p 6301