1. 程式人生 > >使用Docker構建redis叢集(非分散式)

使用Docker構建redis叢集(非分散式)

1叢集結構說明

叢集中有三個主節點,三個從節點,一共六個結點。因此要構建六個redis的docker容器。在宿主機中將這六個獨立的redis結點關聯成一個redis叢集。需要用到官方提供的ruby指令碼。

2構建redis基礎映象

本文選擇版本為redis-3.0.7,如果需要其他版本,直接修改wget後面地址中的版本號即可。

程式碼清單2-1 下載&編譯redis原始碼包 

123456# mkdir –p /usr/docker_root/redis_cluster# cd /usr/docker_root/redis_cluster# wget http://download.redis.io/releases/redis-3.0.7.tar.gz
# tar zxvf redis-3.0.7.tar.gz# cd redis-3.0.7# make

PS: 如果你連 # 也複製了,那你還是別看了……

我們已經在宿主機編譯好了redis原始碼,在src路徑下有我們需要的可執行檔案:redis-cli,redis-server和redis-trib.rb。redis-trib.rb是redis官方提供的ruby指令碼,用來構建redis叢集

修改redis.conf。在redis-3.0.7的根路徑下有redis的配置檔案redis.conf。將其移動到上一級路徑/usr/docker_root/redis_cluster/ 下。

依據程式碼清單2-2,修改redis.conf檔案中的對應引數值。

daemonize : 是否後臺執行,將其設為no,表示前臺執行。

port :redis服務監聽的埠。

logfile : 指定日誌檔案路徑。

appendonly : 是否開啟appendonlylog,開啟的話每次寫操作會記一條log,這會提高資料抗風險能力,但影響效率。

cluster-node-timeout : 叢集結點超時限制。

程式碼清單2-2 需要修改的配置引數

123daemonize noport 6379logfile "/var/log/redis/redis-server.log"
1234appendonly yescluster-enabled yescluster-config-file nodes.conf
cluster-node-timeout 5000

下面構建redis基礎映象。以Dockerfile方式構建。

程式碼清單2-3 建立redis基礎映象的Dockerfile

# pwd

/usr/docker_root/redis_cluster

# vim Dockerfile

我們來看看Dockerfile的內容,如程式碼清單2-4所示。

1<strong>程式碼清單2-4 Dockerfile<br><br></strong>FROM ubuntu:14.04
12345678910111213141516171819ADD redis-3.0.7.tar.gz /RUN mkdir -p /redisADD redis.conf /redis/RUN apt-get -yqq  updateRUN apt-get install -y gcc makeWORKDIR /redis-3.0.7RUN makeRUN mv /redis-3.0.7/src/redis-server /redis/WORKDIR /RUN rm -rf /redis-3.0.7RUN apt-get remove --purge -y gcc makeVOLUME ["/var/log/redis/"]EXPOSE 6379<br><br>

將本地的redis原始碼包複製到映象的根路徑下,ADD命令會在複製過後自動解包。被複制的物件必須處於Dockerfile同一路徑,且ADD後面必須使用相對路徑。

將我們修改後的配置檔案也複製到映象內。

為編譯原始碼包,需要安裝gcc和make,安裝之前先更新apt-get。更新和安裝時間較長。

編譯原始碼包。當然編譯也需要一段時間。

編譯後,容器中只需要可執行檔案redis-server,所以將該檔案移到/redis/路徑下。現在redis-server 和redis.conf都在/redis/下。

將redis-3.0.7路徑整個刪除。

gcc和make也可以解除安裝掉。

指定資料卷,通過這個資料卷可以檢視redis執行的日誌檔案。

公開redis預設埠6379。

因為不會執行這個映象,所有沒有包含ENTRYPOINT和CMD指令。我們基於這個映象構建別的映象。

現在我們構建redis基礎映象

程式碼清單2-5 構建redis基礎映象

# docker build -t redis:3.0.7 .

構建過程與網路頻寬有關,十分鐘左右,構建完成。成功構建映象之後,執行docker images,可以看見zcq/redis_base映象,如圖2-2所示,映象size有290.4MB。

3構建redis結點映象

我們繼續構建redis結點映象,這個映象將會用於生成提供redis服務的docker容器。

程式碼清單3-1 建立redis結點映象的Dockerfile

# mkdir redis_node

# cd redis_node

# vim Dockerfile

Dockerfile如程式碼清單3-2所示。

1<br><strong>程式碼清單3-2 redis結點映象Dockerfile</strong>
1FROM redis:3.0.7
1ENTRYPOINT ["/redis/redis-server", "/redis/redis.conf"]

構建redis結點映象。

程式碼清單3-3 構建redis結點映象

# docker build -t redis-cluster:3.0.7 .

檢視redis結點映象redis-cluster:3.0.7,如上圖。

1

4建立redis結點容器

依次建立六個redis結點容器,如程式碼清單4-1所示。

程式碼清單4-1 建立redis結點

123456# docker run -d --name redis01 -p 30001:6379 redis-cluster:3.0.7# docker run -d --name redis02 redis-cluster:3.0.7# docker run -d --name redis03 redis-cluster:3.0.7# docker run -d --name redis04 redis-cluster:3.0.7# docker run -d --name redis05 redis-cluster:3.0.7# docker run -d --name redis06 redis-cluster:3.0.7

相關推薦

使用Docker構建redis叢集分散式

1叢集結構說明叢集中有三個主節點,三個從節點,一共六個結點。因此要構建六個redis的docker容器。在宿主機中將這六個獨立的redis結點關聯成一個redis叢集。需要用到官方提供的ruby指令碼。2構建redis基礎映象本文選擇版本為redis-3.0.7,如果需要其他

Redis學習筆記六——搭建redis叢集分散式真正的cluster

要讓叢集正常工作至少需要3個主節點,在這裡我們要建立6個redis節點, 其中三個為主節點,三個為從節點,對應的redis節點的ip和埠對應關係如下: 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003

搭建redis叢集-分散式

安裝redis #關閉防火牆並且安裝iptables(防火牆) 並在防火牆中新增規則,也可以用firewalld.service 防火牆 #如果是用firewalld.service 的防火牆的話下面的步驟可以忽略 # service iptables save The service com

ProxmoxVE安裝簡單叢集分散式儲存

   上面左邊是我的個人微信,如需進一步溝通,請加微信。  右邊是我的公眾號“Openstack私有云”,如有興趣,請關注。     公司有兩臺測試伺服器,是華為的RH2288 V3 ,配置64G記憶體,2顆16核CPU ,4塊1T

使用Docker構建redis叢集--最靠譜的版本

1     叢集結構說明 叢集中有三個主節點,三個從節點,一共六個結點。因此要構建六個redis的docker容器。在宿主機中將這六個獨立的redis結點關聯成一個redis叢集。需要用到官方提供的ruby指令碼。 2     構建redis基礎映象 本文選擇版本為redi

使用Docker構建redis叢集

1叢集結構說明 叢集中有三個主節點,三個從節點,一共六個結點。因此要構建六個redis的docker容器。在宿主機中將這六個獨立的redis結點關聯成一個redis叢集。需要用到官方提供的ruby指令碼。 2構建redis基礎映象 本文選擇版本為re

java操作redis叢集基本操作

package com.company; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisClu

CentOs7搭建hadoop叢集分散式

在yarn-site.xml新增 ` <property> <name>yarn.nodemanager.vmem-check-enabled</name&

redis叢集單機模擬動態新增、刪除節點

客戶端登入: /usr/redis/bin/redis-cli -c -h 192.168.×.××× -p 7001 -c代表叢集模式 -h代表ip -p代表埠號 檢視叢集狀態的兩種方式: 1、cl

從零開始安裝Redis 叢集Linux CenOS7

從零開始安裝Redis 叢集(Linux CenOS7) 使用ISO安裝CentOS7虛擬機器 配置靜態IP(參考Mac VMware Fusion CentOS7配置靜態IP) 安裝vim [root@localhost java]# rpm -qa|grep vim vim-minimal-7.4.62

Redis practise使用Docker部署Redis高可用,分散式叢集

思路鑑於之間學習過的Docker一些基礎知識,這次準備部署一個簡單的分散式,高可用的redis叢集,如下的拓撲tuopu.png下面介紹下,對於這張拓撲圖而言,需要了解的一些基礎概念。Redis持久化Redis有兩種持久化策略。Rdb全量備份形成二進位制檔案: dump.rdb在使用命令 save(停寫),

SpringBoot通過JedisCluster連線Redis叢集分散式專案

分散式專案 SpringBoot + Redis使用 現在開發流行微服務、分散式,基於這種情況需要使用redis不想每個專案都去寫重複的程式碼,所以我在工具包中封裝了redis這一塊的連線,但是問題是所有的專案都會依賴我的基礎包,卻不是所有的專案都要使用redis。所以我需要根據業務

docker入門到使用docker搭建redis哨兵叢集待整理

安裝docker #檢視版本 uname -r #Docker 執行在 CentOS 7 上,要求系統為64位、系統核心版本為 3.10 以上。 #Docker 執行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系統為64位、系統核心版本

java redis 分散式切片分散式切片連線

import java.util.ArrayList; import java.util.List; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.c

分散式ID系列4——Redis叢集實現的分散式ID適合做分散式ID嗎

首先是專案地址: https://github.com/maqiankun/distributed-id-redis-generator 關於Redis叢集生成分散式ID,這裡要先了解redis使用lua指令碼的時候的EVAL,EVALSHA命令: https://www.runoob.com/redis/s

Linux系統搭建Redis叢集redis-cluster

工具準備 Linux圖形化工具為Xftp,shell工具為Xshell #Redis叢集相關概念 redis-cluster架構圖 redis-cluster把所有的物理節點對映到[0-16383]slot上,cluster 負責維護 redi

Hadoop2.5.2叢集部署完全分散式

環境介紹 硬體環境 CPU 4 MEM 4G 磁碟 60G  軟體環境 OS:centos6.5版本 64位 Hadoop:hadoop2.5.2 64位 JDK: JDK 1.8.0_91 主機配

Docker安裝和基本入門簡介

一、Docker安裝 官方安裝教程(Ubuntu文件型別):Docker官方安裝 注:如果在安裝過程中不知道是否使用啦具體的介紹內容如,Ubuntu中是否啟用UFW,則可以直接檢視/etc/default/ufw檔案是否存在來判斷 二、Docker入門(Docker已安裝好)(提示許

docker mysql pxc叢集percona-xtradb-cluster

docker pull percona/percona-xtradb-cluster docker tag percona/percona-xtradb-cluster pxc docker network create --subnet=172.18.0.0/24 net1 docker volume

Linux上部署Redis叢集to be continue

歡迎使用Markdown編輯器寫部落格 本Markdown編輯器使用StackEdit修改而來,用它寫部落格,將會帶來全新的體驗哦: Markdown和擴充套件Markdown簡潔的語法 程式碼塊高亮 圖片連結和圖片上傳 LaTex數學公式 UML序列