Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。和Memcached相似,但它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set -有序集合)和hash(哈希類型)。與Memcached相同的是,爲了保證訪問效率,數據都是緩存在內存中;與Memcached不一樣的是,redis會週期性的把更新的數據寫入磁盤或者寫入追加的記錄文件,而且在此基礎上實現了master-slave(主從)同步。
Redis的數據能夠從master(主)服務器向任意數量的slave(從)服務器上同步,從服務器也能夠是關聯其餘從服務器的主服務器,執行單層樹複製,是Redis集羣的一個重要特性。Redis集羣最少要求6個節點,共須要6臺機器,因爲資源有限,我這邊準備了3臺機器,每臺機器上配置兩個節點。
系統環境node
主機名 | IP地址 | 操做系統 | 節點 |
---|---|---|---|
Redis1 | 192.168.2.206 | Centos 7.5 64位 | Master port 700一、slave port 7002 |
Redis2 | 192.168.2.209 | Centos 7.5 64位 | Master port 700一、slave port 7002 |
Redis3 | 192.168.2.210 | Centos 7.5 64位 | Master port 700一、slave port 7002 |
一、安裝編譯相關軟件包c++
[root@redis1 ~]# yum -y install make gcc gcc-c++ wget
二、下載redis並解壓redis
[root@redis1 tmp]# wget http://download.redis.io/releases/redis-5.0.0.tar.gz [root@redis1 tmp]# scp redis-5.0.0.tar.gz root@192.168.2.209:/tmp/ [root@redis1 tmp]# scp redis-5.0.0.tar.gz root@192.168.2.210:/tmp/ [root@redis1 tmp]# tar zxvf redis-5.0.0.tar.gz
三、安裝redis數據庫
[root@redis1 tmp]# cd redis-5.0.0/ [root@redis1 redis-5.0.0]# make [root@redis1 redis-5.0.0]# make install PREFIX=/data/redis
出現上圖畫面表示安裝成功緩存
一、複製配置文件
注:每臺機器兩個實例,故須要複製兩份對應的配置文件bash
[root@redis1 redis-5.0.0]# mkdir /data/redis/conf [root@redis1 redis-5.0.0]# cp redis.conf /data/redis/conf/redis-7001.conf [root@redis1 redis-5.0.0]# cp redis.conf /data/redis/conf/redis-7002.conf
二、修改配置文件
修改如下地方服務器
bind 192.168.2.206 #redis監聽的本地IP地址 port 7001 #監聽端口,另外一個節點改成7002 daemonize yes #開啓後臺運行,no表示運行在前臺 pidfile /var/run/redis_7001.pid #pid文件,另外一個節點改成7002 appendonly yes #開啓aof日誌,每次寫操做都會記錄一條日誌 cluster-enabled yes #開啓集羣,把註釋#去掉 cluster-config-file nodes-7001.conf #集羣的配置文件,首次啓動會自動建立,另外一個節點改成7002 cluster-node-timeout 15000 #集羣節點鏈接超時時間,15秒
三、添加firewalld防火牆容許端口網絡
[root@redis1 redis-5.0.0]# firewall-cmd --permanent --add-port=7001-7002/tcp [root@redis1 redis-5.0.0]# firewall-cmd --permanent --add-port=17001-17002/tcp [root@redis1 redis-5.0.0]# firewall-cmd --reload
四、啓動redis服務
建立啓動腳本,redis-all.shapp
#!/bin/bash /data/redis/bin/redis-server /data/redis/conf/redis-7001.conf /data/redis/bin/redis-server /data/redis/conf/redis-7002.conf
將腳本分發到另外兩臺主機上tcp
[root@redis1 ~]# scp redis-all.sh root@192.168.2.209:/root/ [root@redis1 ~]# scp redis-all.sh root@192.168.2.210:/root/
運行腳本,啓動redis,每一個節點都要啓動
[root@redis1 ~]# sh redis-all.sh
五、啓動集羣
建立啓動集羣腳本,redis-cluster.sh
#!/bin/bash /data/redis/bin/redis-cli --cluster create 192.168.2.206:7001 192.168.2.209:7001 192.168.2.210:7001 192.168.2.206:7002 192.168.2.209:7002 192.168.2.210:7002 --cluster-replicas 1
參數說明 --cluster create:表示建立redis集羣 --cluster-replicas 1:表示爲集羣中的每個主節點指定一個從節點,即一比一的複製。
將腳本分發到另外兩臺主機上
[root@redis1 ~]# scp redis-cluster.sh root@192.168.2.209:/root/ [root@redis1 ~]# scp redis-cluster.sh root@192.168.2.210:/root/
運行腳本,啓動集羣,只須要在其中一個節點啓動便可
[root@redis1 ~]# sh redis-cluster.sh
注:中途須要輸入yes來確認
一、設置redis集羣密碼
注:全部節點都須要設置密碼,且密碼必須一致。
[root@redis1 ~]# /data/redis/bin/redis-cli -h 192.168.2.206 -p 7001 -c 192.168.2.206:7001> config set masterauth xuad123456 192.168.2.206:7001> config set requirepass xuad123456 192.168.2.206:7001> exit
二、將密碼寫入配置文件
注:全部節點都須要將密碼寫入配置文件
[root@redis1 ~]# /data/redis/bin/redis-cli -h 192.168.2.206 -p 7001 -c -a xuad123456 192.168.2.206:7001> config rewrite 192.168.2.206:7001> exit
三、查看密碼
[root@redis1 ~]# /data/redis/bin/redis-cli -h 192.168.2.206 -p 7001 -c -a xuad123456 192.168.2.209:7001> config get masterauth 192.168.2.209:7001> config get requirepass