真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何利用容器實現(xiàn)生產(chǎn)級別的redissharding集群的一鍵交付

如何利用容器實現(xiàn)生產(chǎn)級別的redis sharding集群的一鍵交付,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

成都創(chuàng)新互聯(lián)公司是一家專注于做網(wǎng)站、網(wǎng)站設(shè)計與策劃設(shè)計,岷縣網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:岷縣等地區(qū)。岷縣做網(wǎng)站價格咨詢:18980820575

如何使用容器實現(xiàn)生產(chǎn)級別的Redis sharding集群的一鍵交付

Redis在3.0之后開始支持sharding集群。Redis集群可以讓數(shù)據(jù)自動在多個節(jié)點上分布。如何使用Docker實現(xiàn)Redis集群的一鍵部署交付,是一個有趣的并且有價值的話題。

小編將給大家介紹基于進程的容器技術(shù)實現(xiàn)Redis sharding集群的一鍵部署,充分展現(xiàn)了容器的強大威力。

什么是Redis sharding集群

Redis(redis.io)作為最流行的KV數(shù)據(jù)庫,很長一段時間都是單機運行,關(guān)于如何實現(xiàn)Redis的數(shù)據(jù)在多個節(jié)點上的分布,在Redis3.0出來之前,有很多第三方的方案。建議大家參考這個鏈接:

http://redis.io/topics/partitioning

Client hash

這是最簡單的實現(xiàn),通過在客戶端利用一致性hash算法,將數(shù)據(jù)分布到不同節(jié)點。這種方法的缺點非常明顯,缺少故障自動failover能力,并且在擴容時數(shù)據(jù)分布的搬遷,也比較費勁。

代理模式

  • 一個是Redis官方推薦的Twemproxy,是由twitter公司開發(fā);

  • 另一個是國內(nèi)豌豆莢開源的codis;

代理模式最大的好處是仍然使用redis單機的sdk進行開發(fā),維護簡單。

Redis Cluster

redis3.0繼2.8推出sentinel主從自動failover功能后,推出了sharding集群,這就是Redis Cluster。本次分享主要是介紹如何將Redis集群實現(xiàn)一鍵的部署。

參考文檔:

http://redis.io/topics/cluster-tutorial

首先準備redis鏡像

Redis官方已經(jīng)提供了Redis 3.2和3.3的鏡像,都可以用來作為Redis集群的鏡像,3.2是穩(wěn)定版本。

目前官方推出了alpine版本的Redis鏡像,alpine鏡像的優(yōu)勢是體積小。此次分享是采用官方的redis:3.2-alpine的鏡像來做集群。

準備初始化腳本的執(zhí)行環(huán)境

redis官方提供了一個ruby的腳本redis-trib.rb,這個腳本可以用來初始化集群、resharding集群、rebalance集群等。

我們使用官方的腳本來初始化集群。該腳本的運行需要ruby環(huán)境,我們來構(gòu)建一個redis-trib鏡像,以下是構(gòu)建redis-trib鏡像的Dockerfile內(nèi)容:

cat Dockerfile

FROM ruby:2.3.1-alpine

ADD https://raw.githubusercontent.com/antirez/redis/3.2.0/src/redis-trib.rb /usr/local/bin/redis-trib.rb

RUN gem install redis && chmod 755 /usr/local/bin/redis-trib.rb && \
  sed -i '/yes_or_die.msg/a return if ENV["QUIET_MODE"] == "1"' /usr/local/bin/redis-trib.rb

ADD entrypoint.sh /entrypoint.sh

ENTRYPOINT [“/entrypoint.sh"]

腳本文件

cat entrypoint.sh

#!/bin/sh

if [ "$CLUSTER_CMD" = create ]; then
  if [ -f /usr/local/etc/redis-trib.conf ] ; then
    . /usr/local/etc/redis-trib.conf
    QUIET_MODE=1 redis-trib.rb create --replicas $REPLICAS $NODES
  fi
fi

上面兩個文件用來構(gòu)建redis-trib鏡像,Dockerfile中的邏輯比較簡單,將github中的redis-trib.rb文件添加到鏡像中,并讓腳本執(zhí)行支持非交互模式(QUIET_MODE)。

鏡像啟動時,將執(zhí)行集群初始化命令。

準備redis集群配置文件

port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

redis集群的配置文件我們一般放到數(shù)據(jù)目錄/data下,redis進程對/data目錄擁有可讀寫的權(quán)限。

準備redis-trib腳本配置文件,用于集群初始化參數(shù)獲取

entrypoint.sh文件中,最主要的是讀取redis-trib.conf配置文件,配置文件的格式非常簡單

REPLICAS={{.REPLICAS_NUM}}
{{ $rs := service "redis" }}
NODES="{{range $i,$rc := $rs.Containers}} {{$rc.IPAddr}}:6379{{end}}"

REPLICAS的意思是每個分片有幾個slave,一般配置1個slave ,即REPLICAS=1NODES的意思是集群的每個節(jié)點,包括master和slave。

所以如果有10個節(jié)點,REPLICAS=1的話,那么將有5個分片(slices)。

編排集群

準備好上述鏡像和配置文件后,我們開始編排集群

第一步:創(chuàng)建模版

如何利用容器實現(xiàn)生產(chǎn)級別的redis sharding集群的一鍵交付

第二步:選擇鏡像,添加redis服務(wù)

如何利用容器實現(xiàn)生產(chǎn)級別的redis sharding集群的一鍵交付

第三步:設(shè)置容器參數(shù)

![![容器參數(shù)-1]

如何利用容器實現(xiàn)生產(chǎn)級別的redis sharding集群的一鍵交付

第四步:設(shè)置健康檢查策略

如何利用容器實現(xiàn)生產(chǎn)級別的redis sharding集群的一鍵交付

第五步:設(shè)置redis容器部署策略

如何利用容器實現(xiàn)生產(chǎn)級別的redis sharding集群的一鍵交付

添加redis集群初始化服務(wù)redis-trib

第一步:選擇鏡像

如何利用容器實現(xiàn)生產(chǎn)級別的redis sharding集群的一鍵交付

第二步:設(shè)置容器參數(shù)

如何利用容器實現(xiàn)生產(chǎn)級別的redis sharding集群的一鍵交付

第三步:設(shè)置redis-trib容器部署策略

redis-trib要在redis容器啟動完成后再啟動,所以啟動優(yōu)先級要比redis低。

如何利用容器實現(xiàn)生產(chǎn)級別的redis sharding集群的一鍵交付

通過以上步驟,編排好了Redis-sharding應(yīng)用模版。

基于Redis-sharding應(yīng)用模板,一鍵部署Redis Cluster

以下是部署后的效果圖:

如何利用容器實現(xiàn)生產(chǎn)級別的redis sharding集群的一鍵交付

查看redis-trib集群初始化后的結(jié)果,看到集群的初始化過程沒有問題;

如何利用容器實現(xiàn)生產(chǎn)級別的redis sharding集群的一鍵交付

驗證:登錄到任意一臺redis節(jié)點執(zhí)行redis-cli info:

如何利用容器實現(xiàn)生產(chǎn)級別的redis sharding集群的一鍵交付

以上內(nèi)容分享了基于進程的容器技術(shù),實現(xiàn)了Redis sharding的一鍵交付。

如何利用容器實現(xiàn)生產(chǎn)級別的redis sharding集群的一鍵交付 你會部署了嗎?

so easy

分享后討論更是激烈:

Q1: 如果我想在一個機器上部署多個redis實例可以嗎?

A1: 可以

Q2: 問下你們ui編排工具是自主研發(fā)還是基于什么開源工具?內(nèi)部邏輯是什么.?

A2: 自主研發(fā)的。

通過易用的界面對docker容器運行參數(shù)進行設(shè)置和保存。

每個容器運行參數(shù)和優(yōu)先級以及部署策略構(gòu)成一個個服務(wù),多個服務(wù)組合成一個可以一鍵部署的應(yīng)用模版。

Q3:redis集群的docker我看ip都是同網(wǎng)段的。這個是單獨的docker管理工具處理的?如果只單純搭建redis集群,而無docker集群管理。這個多個redis node如何管理?

A3:csphere平臺內(nèi)部支持網(wǎng)絡(luò)管理功能,并在背后擁有自動的可編程的服務(wù)發(fā)現(xiàn)能力,使得自動化部署集群成為可能。

如果脫離docker手工部署,按照官方文檔一步步操作即可

Q4: 請問這里的模板數(shù)據(jù)是何時傳入進去的?

A4: 模板數(shù)據(jù)分兩種:

  1. 配置文件模板里定義的模板變量,這類數(shù)據(jù)是在創(chuàng)建應(yīng)用實例時用戶通過cSphere管理平臺填寫的;

  1. 集群服務(wù)相關(guān)的元數(shù)據(jù),如每個容器的IP地址、容器所在的主機參數(shù)等,這類數(shù)據(jù)是cSphere應(yīng)用編排引擎在創(chuàng)建應(yīng)用實例時,自動從集群各節(jié)點收集并注冊到配置模板解析引擎的配置文件模板經(jīng)解析生成最終配置文件,然后裝載到每一個容器里

Q5:請問redis-cluster的擴容、縮容,resharding如何處理的呢?

A5: 擴容增加節(jié)點的話,觸發(fā)trib腳本重新resharding,減少節(jié)點的話,則需要在前面先執(zhí)行,trib腳本里面有添加刪除節(jié)點的命令

Q6: 這是你們的商業(yè)平臺?還是openstack集成docker的結(jié)果?

A6:我們的商業(yè)平臺,為企業(yè)提供整體的PaaS解決方案。希云cSphere平臺底層是docker,希云cSphere平臺可以部署在OpenStack平臺之上。

Q7: redis3.0目前自己出的這個Q5集群方案穩(wěn)定嗎?有沒有經(jīng)過大量的數(shù)據(jù)測試!效率如何?因為我不是專業(yè)做運維的,我是做開發(fā)的對運維的知識比較感興趣但是不專業(yè),希望能得到一個經(jīng)過數(shù)據(jù)支撐的答案

A7: redis當(dāng)前的集群穩(wěn)定性是比較好的,國內(nèi)外有大量互聯(lián)網(wǎng)企業(yè)大規(guī)模的使用,據(jù)我所知,唯品會的redis集群規(guī)模在500臺以上

Q8: 你們的pass平臺在部署容器時還能指讓用戶自主定制部署策略?這樣做的目的是什么?

A8:不同類型的應(yīng)用有不同的資源偏好,比如CPU密集型的,磁盤IO密集型的,通過調(diào)度策略的選擇,用戶可以更深度的控制容器在主機集群上的分布,使應(yīng)用獲得更好的運行效果。

Q9: redis用docker做集群,在內(nèi)存方面有什么需要額外注意的地方嗎?

A9:內(nèi)存方面注意設(shè)置內(nèi)核vm相關(guān)參數(shù),另外配置文件里可以加入內(nèi)存最大大小的設(shè)置等,如果要自動化,可以自動獲取容器的內(nèi)存配額或主機節(jié)點的內(nèi)存size自動計算

看完上述內(nèi)容,你們掌握如何利用容器實現(xiàn)生產(chǎn)級別的redis sharding集群的一鍵交付的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


當(dāng)前名稱:如何利用容器實現(xiàn)生產(chǎn)級別的redissharding集群的一鍵交付
文章分享:http://weahome.cn/article/jsiees.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部