1. 程式人生 > >centos 安裝 redis (單機、哨兵、Cluster)

centos 安裝 redis (單機、哨兵、Cluster)

在安裝 redis 的時候需要先安裝 tcl

          下載 tcl 包

           tar -zxvf tcl8.6.8-src.tar.gz

           cd tcl8.6.8

           cd unix/

           ./configure

           make && make install

 安裝 redis

         下載一個 redis 

              http://www.redis.cn/download.html

         選擇一個版本的  使用的3.2.9

              redis-3.2.9.tar.gz

         解壓

              tar -zxvf redis-3.2.9.tar.gz

          cd redis-3.2.9

          make && make test && make install

------------------------------------------------------------------------------------------------------------------------------

生產環境的啟動方案

                1、建立兩個目錄

                        mkdir -p /etc/redis              存放 redis 的配置檔案

                        mkdir -p /var/redis/6379    存放 redis 的持久化檔案

                2、將 redis/redis.conf 拷貝到 /etc/redis 目錄下

                        cp redis.conf /etc/redis、

                        重新命名 /etc/redis/ 目錄下的 redis.conf 為 6379.conf

                3、修改 6379.conf 配置檔案

                        daemonize yes                                    守護程序

                        pidfile  /var/run/redis_6379.pid         redis 的 pid 檔案位置

                        port 6379                                            埠

                        dir /var/redis/6379                             持久化檔案存放位置

                4、將 redis -> utils 下的 redis_init_script 指令碼放到 /etc/init.d 目錄下

                      並且名字改為 redis_6379, 設定為跟隨系統啟動

                        cd /usr/local/redis-3.2.9/utils

                        cp redis_init_script /etc/init.d/

                        cd /etc/init.d/

                        mv redis_init_script redis_6379

                        chmod 777 redis_6379

                        在 redis_6379 啟動指令碼中新增兩行註釋

                                   # chkconfig: 2345 90 10
                                   # description: Redis is a persistent key-value database

                        chkconfig redis_6379 on

----------------------------------------------------------------------------------------------------------------------------

關於 redis 的兩種持久化方案的配置

         redis 的持久化方案分為 RDB 和 AOF

          1、RDB 的配置

                 配置 /etc/redis/6379.conf     配置 save 就同時開啟了 RDB 持久化

                   save 900 1

                   save 300 10

                   save 60 10000

          2、AOF 持久化  

                 配置 /etc/redis/6379.conf

                        appendonly yes               開啟 AOF 持久化

         注意:

                   如果 RDB 和 AOF 同時工作的話,如果 redis 重啟, 會優先使用 RDB 的持久化方案

                   也就是用 /var/redis/6379/dump.rdb 來恢復資料

--------------------------------------------------------------------------------------------------------------------------------

redis replication

         一、配置主從

              從節點的 6379.conf 中配置

                   slaveof  masterip masterport          設定主節點

                   slave-read-only yes                          強制性的讀寫分離,子節點只讀不可寫

               主從節點的 6379.conf 的 bind hostip 都要配置

               用 redis-cli -h hostip 來連線 redis

              先開始主節點,再開啟從節點

              注意: 新增 6379 到 tcp 監聽

                        systemctl start firewalld.service
                        firewall-cmd --zone=public --add-port=6379/tcp --permanent
                        iptables -A INPUT -ptcp --dport 6379 -j ACCEPT
                        systemctl stop firewalld.service

---------------------------------------------------------------------------------------------------------------------------------

redis sentinel(哨兵)

    一、先建兩個目錄

         mkdir -p /etc/sentinel/                存放 sentinel 的配置檔案

         mkdir -p /var/sentinel/5000/      用來存放 sentinel 的日誌

    二、將 redis 的 sentinel.conf 放到 /etc/sentinel/ 下

    三、將 sentinel.conf 修改為 5000.conf 

              mkidr -p /var/log/sentinel/5000

              新增

              daemonize yes

              logfile /var/log/sentinel/5000/sentinel.log

              修改以下配置

              bind 127.0.0.1 192.168.6.58

              port 5000

              dir /etc/sentinel/5000

              sentinel monitor mymaster 192.168.6.58 6379 2

              sentinel down-after-milliseconds mymaster 30000

              sentinel parallel-syncs mymaster 1

              sentinel failover-timeout mymaster 180000

    啟動:

              redis-sentinel /etc/sentinel/5000.conf

              檢視日誌能看到 sentinel 的資訊,和主節點從節點的資訊

              根據 sentinel 的節點發現機制能自動發現 sentinel 不需要我們配置就能找到

     sentinel 的節點管理

              進入

              redis-cli -h 192.168.6.58 -p 5000

              sentinel master mymaster         --  master 資訊

              sentinel slaves mymaster          --  從節點資訊

              sentinel sentinels mymaster      --  sentinel 資訊              

              sentinel get-master-addr-by-name mymaster      -- 獲取 master 的地址

---------------------------------------------------------------------------------------------------------------------------------

    redis cluster 的配置

              一、建立兩個目錄

                        mkdir /etc/redis-cluster     節點的配置檔案目錄

                        mkdir /var/log/redis           日誌路徑

                        mkdir -p /var/redis/7002   持久化檔案路徑

              二、將 、/usr/local/redis 下的 redis.conf 拷貝到 /etc/redis-cluster 下 並改名為 7001.conf

                        cp /usr/local/redis-3.2.9  /etc/redis-cluster

                        mv redis.conf ./7001.conf

              三、修改 配置檔案

                        vi 7001.conf

                                  port 7001

                                  cluster-enabled yes

                                  cluster-config-file /etc/redis-cluster/nodes-7001.conf

                                  daemonize yes

                                  pidfile  /var/run/redis_7001.pid

                                  dir  /var/redis/7001

                                  logfile  /var/log/redis/7001.log

                                  bind  192.168.6.58

                                  appendonly yes

                        注意:

                                  在配置檔案中不能包含 slaveof 的配置存在

              四、配置啟動檔案

                             cd /usr/local/redis-3.2.9/utils/

                             cp redis_init_script  /etc/init.d/

                             mv redis_init_script redis_7001

                             vi redis_7001

                                  REDISPORT=7001

                             按照以上的配置,在三臺機器上分別配置兩個檔案,總共6份

               分別啟動這6個例項

              五、叢集管理工具

                       安裝 ruby

                           第一種方式:

                             yum install -y ruby

                             yum install -y rubygems

                             gem install redis

                             cp /usr/local/redis-3.2.9/src/redis-trib.rb /usr/local/bin

                             用以上方法安裝的 ruby  版本是2.0.0 可能不適合

                           第二種方式

                             下載 ruby 的包

                                  cd /usr/local

                                  wget http://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz

                                  tar -zxvf ruby-2.5.0.tar.gz

                                  cd ruby-2.5.0/

                                  ./configure --prefix=/usr/local/ruby

                                  cd /usr/local/ruby

                                  cp ./bin/ruby /usr/local/bin/

                                  cp ./bin/gem /usr/local/bin/

                                  ln -s /usr/local/bin/ruby /usr/bin/ruby

                             檢查 ruby -v

                        安裝 ruby gem redis 依賴

                             cd /usr/local

                             wget http://rubygems.org/downloads/redis-3.3.0.gem

                             整合openssl庫到ruby

                             yum install zlib-devel

                             cd /etc/local/ruby-2.5.0

                             cd ext/zlib

                             ruby extconf.rb

                                 //在操作下一步之前需要修改Makefile檔案中的zlib.o: $(top_srcdir)/include/ruby.h,

                                 //將$(top_srcdir)修改為../..如下
                                 //zlib.o: ../../include/ruby.h
                                 //這一步如果不修改,make時會爆出另外一個錯誤
                                 //make:*** No rule to make target `/include/ruby.h', needed by `zlib.o'. Stop
                             make && make install

                             cd /usr/local

                             gem install -l /etc/local/redis-3.3.0.gem

                             如果出現錯誤[-bash: /usr/bin/gem: No such file or directory]

                                  ln -s /usr/local/bin/gem /usr/bin/gem

                             檢查redis-trib.rb的可用性

                                  ./redis-4.0.1/src/redis-trib.rb

                                      

                                     出現以上資訊表示可用

                             另一個缺少 openssl 庫的錯誤

                                 yum install openssl-devel

                                 整合 openssl 庫到 ruby

                                 cd /etc/local/ruby-2.5.0
                                 cd ext/openssl
                                 ruby extconf.rb
                                 //同樣修改Makefile中的$(top_srcdir)為../..
                                 make && make install

                   六、建立 redis-cluster 叢集

                             cp /usr/local/redis-3.2.9/src/redis-trib.rb /usr/local/bin

                             redis-trib.rb create --replicas 1 192.168.6.58:7001 192.168.6.58:7002 

                                             192.168.6.63:7003 192.168.6.63:7004

                                             192.168.6.65:7005 192.168.6.65:7006

                             檢視叢集資訊

                             redis-trib.rb check 192.168.6.58:7001