Redis單機和集羣環境搭建

1、安裝單機版redis 

一、能夠本身去官網下載,固然也能夠用課程提供的壓縮包

# yum install gcc
# wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
# tar -xzvf tcl8.6.1-src.tar.gz
# cd  /usr/local/tcl8.6.1/unix/
# ./configure  
# make && make install

二、使用redis-3.2.8.tar.gz(穩定版)

# tar -zxvf redis-3.2.8.tar.gz
# cd /usr/local/redis-3.2.8
# make
# make test
# make install

三、redis的生產環境啓動方案

(1)redis utils目錄下,有個redis_init_script腳本
(2)將redis_init_script腳本拷貝到linux的/etc/init.d目錄中,將redis_init_script重命名爲redis_6379,6379是咱們但願這個redis實例監聽的端口號
(3)修改redis_6379腳本的第6行的REDISPORT,設置爲相同的端口號(默認就是6379)
(4)建立兩個目錄:/etc/redis(存放redis的配置文件),/var/redis/6379(存放redis的持久化文件)
(5)修改redis配置文件(默認在根目錄下,redis.conf),拷貝到/etc/redis目錄中,修更名稱爲6379.conf
(6)修改redis.conf中的部分配置爲生產環境node

daemonize    yes                            #讓redis以daemon進程運行
pidfile      /var/run/redis_6379.pid        #設置redis的pid文件位置
port        6379                           #設置redis的監聽端口號
dir         /var/redis/6379                 #設置持久化文件的存儲位置

(7)啓動redis,執行cd /etc/init.d, chmod 777 redis_6379,./redis_6379 start

(8)確認redis進程是否啓動,ps -ef | grep redis

(9)讓redis跟隨系統啓動自動啓動

  在redis_6379.config腳本中,最上面,加入兩行註釋

    # chkconfig:   2345 90 10

    # description:  Redis is a persistent key-value database

    chkconfig redis_6379 on linux

四、redis cli的使用

redis-cli SHUTDOWN                                  #鏈接本機的6379端口中止redis進程
redis-cli -h 127.0.0.1 -p 6379 SHUTDOWN         #制定要鏈接的ip和端口號
redis-cli PING                                      #ping redis的端口,看是否正常
redis-cli                                           #進入交互式命令行

SET k1 v1
GET k1

2、Redis集羣(讀寫分離+高可用+多master)

一、redis cluster的重要配置

       cluster-enabled <yes/no>

  cluster-config-file <filename>:這是指定一個文件,供cluster模式下的redis實例將集羣狀態保存在那裏,包括集羣中其餘機器的信息,好比節點的上線和下限,故障轉移,不是咱們去維護的,給它指定一個文件,讓redis本身去維護的

  cluster-node-timeout <milliseconds>:節點存活超時時長,超過必定時長,認爲節點宕機,master宕機的話就會觸發主備切換,slave宕機就不會提供服務redis

二、在三臺機器上啓動6個redis實例

(1)在eshop-cache03上部署目錄

  /etc/redis(存放redis的配置文件);安全

  /var/redis/6379(存放redis的持久化文件)

(2)編寫配置文件

redis cluster集羣,要求至少3個master,去組成一個高可用,健壯的分佈式的集羣,每一個master都建議至少給一個slave,3個master,3個slave,最少的要求

正式環境下,建議都是說在6臺機器上去搭建,至少3臺機器

保證,每一個master都跟本身的slave不在同一臺機器上,若是是6臺天然更好,一個master+一個slave就死了ruby

 3臺機器去搭建6個redis實例的redis clusterbash

# mkdir -p /etc/redis-cluster
# mkdir -p /var/log/redis
# mkdir -p /var/redis/7001

.conf配置文件:網絡

port 7001
cluster-enabled yes
cluster-config-file /etc/redis-cluster/node-7001.conf
cluster-node-timeout 15000
daemonize    yes                            
pidfile        /var/run/redis_7001.pid                         
dir         /var/redis/7001        
logfile /var/log/redis/7001.log
bind 192.168.31.187        
appendonly yes

  至少要用3個master節點啓動,每一個master加一個slave節點,先選擇6個節點,啓動6個實例

  將上面的配置文件,在/etc/redis下放6個,分別爲: 7001.conf,7002.conf,7003.conf,7004.conf,7005.conf,7006.conf

(3)準備生產環境的啓動腳本

  在/etc/init.d下,放6個啓動腳本,分別爲: redis_7001, redis_7002, redis_7003, redis_7004, redis_7005, redis_7006

  每一個啓動腳本內,都修改對應的端口號

(4)分別在3臺機器上,啓動6個redis實例

  將每一個配置文件中的slaveof給刪除app

三、建立集羣

# yum install -y ruby
# yum install -y rubygems
# gem install redis

 3.一、在執行 gem install redis時候,出現
    ERROR:  Error installing redis:
        redis requires Ruby version >= 2.2.2.
 這是因爲linux自己默認的ruby版本太低
  curl

    # sudo yum install curl
    # curl -L get.rvm.io | bash -s stable
    # source /usr/local/rvm/scripts/rvm
    # rvm list known
    # rvm install 2.5.1
    # rvm use 2.5.1
    # rvm use 2.5.1 --default

   3.二、執行中出現:[curl: (35) SSL connect error
  解決方法:升級網絡安全服務便可。
 分佈式

# yum update nss 
# cp /usr/local/redis-3.2.8/src/redis-trib.rb /usr/local/bin

# redis-trib.rb create --replicas 1 192.168.51.118:7001 192.168.51.118:7002 192.168.51.119:7003 192.168.51.119:7004 192.168.51.120:7005 192.168.51.120:7006
>>> Creating cluster
[ERR] Sorry, can't connect to node 192.168.51.119:7003

 出現這個error,是因爲防火牆致使,此時,關閉防火牆的方法爲:

  3.三、永久性生效

開啓:chkconfig iptables on

關閉:chkconfig iptables off

  3.四、 即時生效,重啓後失效

開啓:service iptables start

關閉:service iptables stop


--replicas: 每一個master有幾個slave

6臺機器,3個master,3個slave,儘可能本身讓master和slave不在一臺機器上

>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.51.118:7001
192.168.51.119:7003
192.168.51.120:7005
Adding replica 192.168.51.119:7004 to 192.168.51.118:7001
Adding replica 192.168.51.118:7002 to 192.168.51.119:7003
Adding replica 192.168.51.120:7006 to 192.168.51.120:7005
M: c929af23011ce7e6888721845d1d300196c3046f 192.168.51.118:7001
   slots:0-5460 (5461 slots) master
S: 60643541639fa838a23708027dfd8f05084fa0bb 192.168.51.118:7002
   replicates c330af95e5053ead51943d17b7ede77ff26e357c
M: c330af95e5053ead51943d17b7ede77ff26e357c 192.168.51.119:7003
   slots:5461-10922 (5462 slots) master
S: bde24d208a5c42771348bbedb2351f0b7ef9c06a 192.168.51.119:7004
   replicates c929af23011ce7e6888721845d1d300196c3046f
M: 422632826b23edf928d213e980ea0680b1a15ac0 192.168.51.120:7005
   slots:10923-16383 (5461 slots) master
S: 1e242b9cd55bd702dd386ed3d74916ad6fb78a10 192.168.51.120:7006
   replicates 422632826b23edf928d213e980ea0680b1a15ac0
Can I set the above configuration? (type 'yes' to accept): yes

 redis-trib.rb check 192.168.31.187:7001

四、讀寫分離+高可用+多master

讀寫分離:每一個master都有一個slave高可用:master宕機,slave自動被切換過去多master:橫向擴容支持更大數據量

相關文章
相關標籤/搜索