欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

三臺(tái)機(jī)器使用Docker部署Redis集群方式

 更新時(shí)間:2024年07月31日 10:51:36   作者:weixin_43053507  
這篇文章主要介紹了三臺(tái)機(jī)器使用Docker部署Redis集群方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

三臺(tái)機(jī)器使用Docker部署Redis集群

我們這里采用Docker在三臺(tái)服務(wù)器上面進(jìn)行Redis集群的搭建,它方便快捷、容易上手。

1.集群原理

在Redis集群中,所以的節(jié)點(diǎn)彼此關(guān)聯(lián),節(jié)點(diǎn)內(nèi)部通過(guò)二進(jìn)制協(xié)議優(yōu)化傳輸速度和帶寬。當(dāng)一個(gè)節(jié)點(diǎn)掛掉后,集群超過(guò)半數(shù)的節(jié)點(diǎn)檢查失效時(shí)該節(jié)點(diǎn)才會(huì)被認(rèn)為掛掉。所以基于以上的情況,節(jié)點(diǎn)的數(shù)量一般都是奇數(shù)。一般為了保證安全性,每個(gè)節(jié)點(diǎn)由一個(gè)備份節(jié)點(diǎn)。所以最小的集群主節(jié)點(diǎn)的個(gè)數(shù)最少為3,從節(jié)點(diǎn)的個(gè)數(shù)也為3.這樣一個(gè)集群最少需要6個(gè)節(jié)點(diǎn)。在做集群規(guī)劃的時(shí)候特別需要注意這點(diǎn)。

Redis集群中內(nèi)置了16384個(gè)哈希槽,當(dāng)需要在Redis集群中存放一個(gè)key/value鍵值對(duì)的時(shí)候,redis會(huì)有一個(gè)算法,先把key使用CRC16算法計(jì)算一個(gè)結(jié)果,然后把結(jié)果對(duì)16384求余數(shù),這樣每個(gè)key都會(huì)對(duì)于一個(gè)編號(hào)在0-16383之間的哈希槽,redis會(huì)根據(jù)節(jié)點(diǎn)數(shù)量大致的均衡的將哈希槽映射到不同的節(jié)點(diǎn)。需要注意的是每個(gè)哈希槽存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)不做限制。

2.集群規(guī)劃

三臺(tái)宿主機(jī)的IP和redis節(jié)點(diǎn)規(guī)劃:

宿主機(jī)器IPredis節(jié)點(diǎn)規(guī)劃redis節(jié)點(diǎn)規(guī)劃
172.15.1.11172.15.1.11:7801172.15.1.11:7804
172.15.1.12172.15.1.12:7802172.15.1.12:7805
172.15.1.13172.15.1.13:7800172.15.1.13:7803

3.集群部署

集群的部署采用Linux Shell腳本的方式,步驟如下

A、創(chuàng)建模板文件

登錄三臺(tái)機(jī)器,在home目錄下創(chuàng)建redis-cluster文件夾,編寫(xiě)文件redis-cluster.tmpl,文件的作用是用來(lái)創(chuàng)建Redis配置文件的模板文件。

port ${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file redis.conf
cluster-node-timeout 5000
cluster-announce-ip 172.15.1.11  #另外兩臺(tái)ip分別為172.15.1.12、172.15.1.13
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
  • port ${PORT}: 是自定義端口號(hào)
  • protected-mode no:是關(guān)閉保護(hù)模式,否則可能造成無(wú)法通過(guò)公網(wǎng)訪問(wèn)。
  • cluster-enabled yes:?jiǎn)?dòng)集群。必須配置為yes
  • cluster-config-file redis.conf:集群節(jié)點(diǎn)配置文件的名字,一般我們都會(huì)取名redis.conf
  • cluster-node-timeout 5000:超時(shí)時(shí)間,單位是毫秒
  • cluster-announce-ip 172.15.1.11:集群宿主機(jī)IP
  • cluster-announce-port ${PORT}:節(jié)點(diǎn)映射端口
  • cluster-announce-bus-port 1${PORT}:節(jié)點(diǎn)總線端口
  • appendonly yes:開(kāi)啟持久化模式

B、自定義網(wǎng)絡(luò)

所有節(jié)點(diǎn)在一個(gè)網(wǎng)絡(luò)中,方便通信。

在Docker中創(chuàng)建網(wǎng)絡(luò)。(三臺(tái)機(jī)器在docker swarm集群,創(chuàng)建overlay網(wǎng)絡(luò))

docker network create -d overlay --attachable redis_net

C、創(chuàng)建配置生成腳本

在三臺(tái)機(jī)器/home/redis-cluster下生成conf和data目錄,并生成配置信息。

這里編寫(xiě)一個(gè)Linux Shell腳本createFilePath.sh。

注意要進(jìn)行授權(quán),否則腳本運(yùn)行。

for port in 7801 7804  #另外兩臺(tái)的port分別修改為7802 7805、7800 7803
do
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done

給大家解讀一下腳本內(nèi)容,for循環(huán)2次,每次循環(huán)存儲(chǔ)變量到port變量。然后循環(huán)創(chuàng)建目錄,命令是mkdir -p ./{port}/conf\,意思是在當(dāng)前目錄下面以端口后為目錄名,下面創(chuàng)建子目錄conf.后面的\是連接符,表示連接后面的語(yǔ)句。

PORT=${port} envsubst < ./redis-cluster.tmpl >意思是將循環(huán)變量port的值復(fù)制給PORT,envsubst 是賦值給文件redis-cluster.tmpl.然后將該文件復(fù)制到端口號(hào)目錄\conf文件夾中,名字是redis.conf; mkdir -p ./${port}/data; 表示繼續(xù)創(chuàng)建在端口目錄\data目錄。

D、執(zhí)行創(chuàng)建配置生成腳本

授權(quán)createFilePath.sh。讓該文件具備可執(zhí)行權(quán)限,并執(zhí)行該文件

chmod +x ./createFilePath.sh
./createFilePath.sh

在三臺(tái)機(jī)器共生成6個(gè)文件夾,從7800到7805,每個(gè)文件夾下包含data和conf文件夾,同時(shí)conf里面有redis.conf配置文件。

E、創(chuàng)建容器生成腳本

在三臺(tái)機(jī)器編寫(xiě)創(chuàng)建Redis容器的腳本createRedisContainer.sh。

current_dir=`pwd`
for port in 7801 7804  #另外兩臺(tái)的port分別修改為7802 7805、7800 7803
do
docker run -dit -p ${port}:${port} -p 1${port}:1${port} \
--privileged=true -v $current_dir/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
--privileged=true -v $current_dir/${port}/data:/data \
--restart always --name redis-${port} --net redis_net \
--sysctl net.core.somaxconn=1024 redis:5.0.5 redis-server /usr/local/etc/redis/redis.conf
done
  • docker run -dit -p ${port}: ${port} -p 1${port}:1${port},意思是啟動(dòng)容器.-d表示后臺(tái)啟動(dòng);-i 表示開(kāi)啟交互模式。-t表示偽終端。這三個(gè)參數(shù)可以簡(jiǎn)寫(xiě)成-dit。${port}: ${port}表示把宿主機(jī)端口映射到容器端口。1${port}:1${port} 表示把宿主機(jī)和容器的總線端口映射。
  • –privileged=true -v $current_dir/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf,privileged意思是授權(quán),-v表示容器掛載,把宿主機(jī)/home/redis-cluster/${port}/conf/目錄下的redis.conf文件掛載到容器內(nèi)部的/usr/local/etc/redis的目錄中,在容器內(nèi)部的配置文件名為redis.conf。
  • –privileged=true -v $current_dir/${port}/data:/data,同樣授權(quán)將宿主機(jī)data目錄掛載到容器的data目錄。
  • –restart always:表示Docker重啟時(shí),容器自動(dòng)重啟。
  • –name redis-${port} 表示容器的自定的容器名字是redis-端口號(hào)
  • –net redis_net:表示容器工作的網(wǎng)絡(luò)是redis_net
  • –sysctl net.core.somaxconn=1024表示修改somaxconn的值,內(nèi)核大小為1024M,一把來(lái)說(shuō)負(fù)載很大的程序的時(shí)候,往往由于內(nèi)存不夠,會(huì)啟動(dòng)失敗。
  • redis:5.0.5表示鏡像的版本。至此容器創(chuàng)建完畢。
  • redis-server /usr/local/etc/redis/redis.conf表示啟動(dòng)Redis服務(wù)端。必須指定配置文件。

F、執(zhí)行容器生成腳本

授權(quán)createFilePath.sh。讓該文件具備可執(zhí)行權(quán)限,并執(zhí)行該文件

chmod +x ./createRedisContainer.sh
./createRedisContainer.sh

在三臺(tái)機(jī)器共生成6個(gè)容器,redis-7800到redis-7805,

使用命令來(lái)確認(rèn):

docker ps -a|grep redis-780

G、配置redis集群

任意進(jìn)入一個(gè)節(jié)點(diǎn),并啟動(dòng)集群。注意redis容器啟動(dòng),并不代表集群?jiǎn)?dòng)。

docker exec -it redis-7801 bash
redis-cli --cluster create 172.15.1.13:7800 172.15.1.11:7801 172.15.1.12:7802 172.15.1.13:7803 172.15.1.11:7804 172.15.1.12:7805 --cluster-replicas 

至此集群搭建完畢。

4.集群檢測(cè)

驗(yàn)證集群狀態(tài),進(jìn)入容器內(nèi)部,執(zhí)行

docker exec -it redis-7801 bash
redis-cli -c -p 7801
info replication
cluster nodes
cluster info

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker用root進(jìn)入容器的操作

    docker用root進(jìn)入容器的操作

    這篇文章主要介紹了docker用root進(jìn)入容器的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Docker 給運(yùn)行中的容器設(shè)置端口映射的方法

    Docker 給運(yùn)行中的容器設(shè)置端口映射的方法

    這篇文章主要介紹了Docker 給運(yùn)行中的容器設(shè)置端口映射的方法,詳細(xì)的介紹了端口映射的概念和方法,具體一定的參考價(jià)值,有興趣的可以了解一下
    2017-11-11
  • 詳解java項(xiàng)目打包docker鏡像的幾種方式

    詳解java項(xiàng)目打包docker鏡像的幾種方式

    本文主要介紹了詳解java項(xiàng)目打包docker鏡像的幾種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • docker overlay擴(kuò)容問(wèn)題

    docker overlay擴(kuò)容問(wèn)題

    這篇文章主要介紹了docker overlay擴(kuò)容問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Docker images導(dǎo)出和導(dǎo)入操作

    Docker images導(dǎo)出和導(dǎo)入操作

    這篇文章主要介紹了Docker images導(dǎo)出和導(dǎo)入操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • 解決docker容器無(wú)法ping外網(wǎng)的問(wèn)題

    解決docker容器無(wú)法ping外網(wǎng)的問(wèn)題

    在本篇文章里小編給大家分享的是關(guān)于解決docker容器無(wú)法ping外網(wǎng)的問(wèn)題,有需要的朋友們可以參考下。
    2020-03-03
  • Docker安裝Tomcat、MySQL和Redis的步驟詳解

    Docker安裝Tomcat、MySQL和Redis的步驟詳解

    這篇文章主要介紹了Docker安裝Tomcat、MySQL和Redis的步驟詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • MacOS使用Docker創(chuàng)建MySQL主從數(shù)據(jù)庫(kù)的方法

    MacOS使用Docker創(chuàng)建MySQL主從數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了MacOS使用Docker創(chuàng)建MySQL主從數(shù)據(jù)庫(kù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • 基于docker部署Oracle?19c的詳細(xì)記錄

    基于docker部署Oracle?19c的詳細(xì)記錄

    這篇文章主要介紹了基于docker部署Oracle?19c,包括拉取oracle?19c鏡像、查看鏡像及創(chuàng)建oracle?19c鏡像的容器問(wèn)題,結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • Docker為網(wǎng)絡(luò)bridge模式指定容器ip的方法

    Docker為網(wǎng)絡(luò)bridge模式指定容器ip的方法

    Docker在創(chuàng)建容器時(shí)有四種網(wǎng)絡(luò)模式,bridge為默認(rèn)不需要用--net去指定,其他三種模式需要在創(chuàng)建容器時(shí)使用--net去指定。那Docker為網(wǎng)絡(luò)bridge模式指定容器ip該如何實(shí)現(xiàn)呢?下面通過(guò)通過(guò)這篇文章一起看看吧,文中給出了詳細(xì)的示例代碼,有需要的可以參考借鑒。
    2016-11-11

最新評(píng)論