redis的cluster安裝

第一章 Redis集羣簡介node

1.1 功能概述

Remote Dictionary Server(Redis)是一個基於 key-value 鍵值對的持久化數據庫存儲系統。支持多種數據結構,包括 string (字符串)、list (鏈表)、set (集合)、zset (sorted set --有序集合)和 hash(哈希類型)。這些數據類型都支持 push/pop、add/remove 及取交集並集和差集及更豐富的操做,並且這些操做都是原子性的。c++

 

1.2 功能說明

Redis 集羣是 Redis 的一個分佈式實現,主要是爲了實現如下這些目標(按在設計中的重要性排序):redis

在1000個節點的時候仍能表現得很好而且可擴展性是線性的。數據庫

沒有合併操做,這樣在 Redis 的數據模型中最典型的大數據值中也能有很好的表現。安全

寫入安全:那些與大多數節點相連的客戶端所作的寫入操做,系統嘗試所有都保存下來。不過公認的,仍是會有小部分寫入會丟失。是由於主從節點數據是經過網絡傳輸來完成同步,主節點忽然當機,會形成從節點沒有同步數據的問題。ruby

可用性:在絕大多數的主節點是可達的,而且對於每個不可達的主節點都至少有一個它的從節點可達的狀況下,Redis 集羣仍能進行分區操做。服務器

1.3 部署說明

集羣使用槽指法存儲數據,三臺服務器6個節點,三個主節點和三個從節點,主從複製實現從節點徹底複製關聯的主節點。三個主節點經過hash槽分配存儲命令,實現徹底去中心化。集羣支持節點的擴充和移除操做。網絡

如下爲生產環境實際部署說明:數據結構

1socket

主機名稱

第一套集羣

第二套集羣

分配內存

IP地址

2

jdpsclb-nfppzk01

6379 6479

6579  6679

一致爲50G

172.1.2.3

3

jdpsclb-nfppzk02

6379 6479

6579  6679

一致爲50G

172.1.2.4  

4

jdpsclb-nfppzk03

6379 6479

6579  6679

一致爲50G

172.1.2.5

在生產環境中三臺服務器上部署了兩套redis集羣。如下文檔爲第一套rdis集羣而編寫。

第二章 Redis集羣安裝部署

2.1 環境準備

2.1.1 安裝軟件準備

redis-2.3.3

ruby-2.4.0

redis-3.2.1.gem

 

2.1.2 環境檢查

安裝以前運行rpm命令查詢redis依賴包,若是沒有安裝依賴包,須要使用yum安裝。

Redis查詢依賴包是否安裝命令:

rpm -q cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tcl zlib-devel

 

2.2 Redis單機安裝

注意:安裝時使用root用戶安裝,實際生產環境中請新建用戶(redis或者cache等)進行管理。

2.2.1 Redis安裝

  1. 安裝redis依賴包,最好使用yum命令安裝

yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tcl zlib-devel

 

  1. 上傳redis安裝包到一個文件目錄,解壓安裝包

安裝路徑:/home/redis/cluster/

配置文件:/home/redis/cluster/6379/redis.conf

tar –xzvf redis-3.2.9.tar.gz

 

  1. 進入解壓的redis-3.2.9目錄執行安裝命令make和make install

make

 

make install

 

安裝完成以後進入src目錄,複製redis-trip.rb文件到/usr/local/bin (作環境變量必須須要root用戶)

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

 

2.2.2 修改配置文件

如下操做使用redis 用戶操做

2.2.3 新建配置文件目錄

mkdir -p /home/redis/standalone

 

2.2.3.1 複製配置文件到新建目錄中,並配置。

拷貝配置文件

cp/opt/redis/redis-3.2.9/redis.conf /home/redis/standalone

修改配置文件

vi /home/redis/standalone/redis.conf

 

修改內容以下:

端口號:

port 6379(默認)

 

IP綁定,修改成服務器的ip:

bind 172.31.87.1

 

備份文件目錄:

dir /home/redis/standalone/

 

配置後臺啓動

daemonize yes

 

修改進程號文件

pidfile /home/redis/standalone/redis.pid

 

修改日誌文件路徑

logfile "/home/redis/standalone/redis.log"

 

修改數據庫開啓數量

databases 1

 

保存並退出

 

2.2.3.2單機安裝校驗

使用redis用戶校驗

1. 啓動redis服務,並查看redis進程

cd /home/redis/standalone

指定redis配置文件啓動redis

redis-server redis.conf

查看redis進程

ps -ef|grep redis-server

 

2. 鏈接客戶端測試

鏈接redis

redis-cli -h 172.22.1.155 -p 6379(實際地址以生產爲準)

存值

set key1 value1

取值
get key1

 

3. 測試ok後關閉redis進程,redis集羣不須要單獨的節點

pkill -9 redis-server

 

 

2.3 集羣安裝

2.3.1 前提條件

  • 集羣安裝須要redis3.0+的版本支持
  • 每臺服務器上完成單機安裝
  • redis3.x集羣須要ruby環境支持,須要安裝ruby環境

2.3.2 集羣配置文件修改

        切換redis用戶

1. 在須要部署redis集羣的主機上建立兩個節點目錄

mkdir -p /home/redis/cluster/6379

mkdir -p /home/redis/cluster/6479

 

2. 複製/home/redis/standalone目錄下的redis.conf到6379節點目錄下

 

3. 編輯剛複製的redis.conf 文件

 

4. 編輯配置文件內容

修改進程號文件,以端口號區分

修改pidfile

pidfile /home/redis/cluster/6379/redis.pid

 

修改日誌文件存放目錄

logfile 「/home/redis/cluster/6379/redis.log」

 

開啓集羣

cluster-enabled yes

 

指定集羣的配置文件

cluster-config-file "/home/redis/cluster/6379/nodes.conf"

 

集羣中節點掛了,不影響整個集羣,能夠正常訪問其餘節點的數據

cluster-require-full-coverage no

 

此配置表示後臺啓動

daemonize yes

 

端口號:

port 6379(默認)

 

IP綁定,修改成本身服務器的ip:

bind 172.31.87.1

 

備份文件目錄:

dir /home/redis/cluster/6379/

 

開啓數據庫的數量

databases 1

 

5. 配置文件修改完成以後把剛修改的redis.conf文件複製到各個節點目錄下,而後修改各節點目錄下配置文件的中的ip bind屬性和端口號port屬性

2.3.3 安裝Ruby

  • 選取一臺服務器安裝ruby用來建立redis集羣
  • 使用root權限安裝
  • 上傳ruby-2.4.0.tar.gz到服務器,並解壓
  • 解壓ruby安裝包
  • tar xf ruby-2.4.0-tar.gz
  • 運行./configure執行安裝配置和檢測安裝環境
  • ./configure

 

  1. 編譯和安裝

編譯

make

 

安裝

make install

 

2.3.4 安裝redis-3.2.1.gem

Redis-3.2.1.gem只有裝了ruby的機器上裝redis.3.2.1.gem

上傳redis-3.2.1.gem到/home/redis目錄下進行安裝

gem install –-local redis-3.2.1.gem   

 

2.3.5 各節點啓動

分別啓動三臺服務器上的六個節點

redis-server /home/redis/cluster/6379/redis.conf

redis-server /home/redis/cluster/6479/redis.conf

三臺服務器6個節點都開啓後檢查個節點開啓狀態,每一個服務器會顯示兩個節點

ps –ef|grep redis-server

 

2.3.6 創建集羣

在安裝ruby的服務器上執行建立命令,建立命令以下:

redis-trib.rb create –-replicas 1 172.21.26.5:6379 

172.21.26.5:6479 172.21.26.6:6379 172.21.26.6:6479

172.21.26.7:6379 172.21.26.7:6479

開始建立集羣,期間會讓你輸入yes或no  輸入yes

 

看見下圖提示,建立集羣成功。

 

2.4 redis集羣優化

2.4.1 maxmemory選項

不要讓Redis所在機器物理內存使用超過實際內存總量的3/5。

配置redis.conf中的maxmemory選項 配置標準爲物理內存的40%。

若是一臺服務器上分主從兩個節點就分別配置20%。以下選項:

(以生產環境分配爲200G內存爲準)

maxmemory 5100000000

設置內存淘汰機制
allkeys-lru: 優先刪除掉最近不常常使用的key,用以保存新數據

maxmemory-policy allkeys-lru

2.4.2 開啓TCP鏈接快速回收

開啓TCP鏈接中TIME-WAIT sockets的快速回收,有助於快速釋放TCP鏈接

修改/etc/sysctl.conf文件

修改下面的參數,若是沒有請新增此參數

net.ipv4.tcp_tw_recycle=1

2.5 驗證部署

2.5.1 數據存儲驗證

鏈接redis,使用set和get來存儲和獲取數據,注意存儲節點信息

鏈接redis:

redis-cli –c –h 172.22.1.156(實際地址爲生產爲準)

存值

set key value

取值

get key

 

三個主節點都有相應說明建立集羣成功

相關文章
相關標籤/搜索