最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

三臺機器使用Docker部署Redis集群方式

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

三臺機器使用Docker部署Redis集群

我們這里采用Docker在三臺服務器上面進行Redis集群的搭建,它方便快捷、容易上手。

1.集群原理

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

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

2.集群規(guī)劃

三臺宿主機的IP和redis節(jié)點規(guī)劃:

宿主機器IPredis節(jié)點規(guī)劃redis節(jié)點規(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)建模板文件

登錄三臺機器,在home目錄下創(chuàng)建redis-cluster文件夾,編寫文件redis-cluster.tmpl,文件的作用是用來創(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  #另外兩臺ip分別為172.15.1.12、172.15.1.13
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
  • port ${PORT}: 是自定義端口號
  • protected-mode no:是關閉保護模式,否則可能造成無法通過公網訪問。
  • cluster-enabled yes:啟動集群。必須配置為yes
  • cluster-config-file redis.conf:集群節(jié)點配置文件的名字,一般我們都會取名redis.conf
  • cluster-node-timeout 5000:超時時間,單位是毫秒
  • cluster-announce-ip 172.15.1.11:集群宿主機IP
  • cluster-announce-port ${PORT}:節(jié)點映射端口
  • cluster-announce-bus-port 1${PORT}:節(jié)點總線端口
  • appendonly yes:開啟持久化模式

B、自定義網絡

所有節(jié)點在一個網絡中,方便通信。

在Docker中創(chuàng)建網絡。(三臺機器在docker swarm集群,創(chuàng)建overlay網絡)

docker network create -d overlay --attachable redis_net

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

在三臺機器/home/redis-cluster下生成conf和data目錄,并生成配置信息。

這里編寫一個Linux Shell腳本createFilePath.sh。

注意要進行授權,否則腳本運行。

for port in 7801 7804  #另外兩臺的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

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

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

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

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

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

在三臺機器共生成6個文件夾,從7800到7805,每個文件夾下包含data和conf文件夾,同時conf里面有redis.conf配置文件。

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

在三臺機器編寫創(chuàng)建Redis容器的腳本createRedisContainer.sh。

current_dir=`pwd`
for port in 7801 7804  #另外兩臺的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表示后臺啟動;-i 表示開啟交互模式。-t表示偽終端。這三個參數(shù)可以簡寫成-dit。${port}: ${port}表示把宿主機端口映射到容器端口。1${port}:1${port} 表示把宿主機和容器的總線端口映射。
  • –privileged=true -v $current_dir/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf,privileged意思是授權,-v表示容器掛載,把宿主機/home/redis-cluster/${port}/conf/目錄下的redis.conf文件掛載到容器內部的/usr/local/etc/redis的目錄中,在容器內部的配置文件名為redis.conf。
  • –privileged=true -v $current_dir/${port}/data:/data,同樣授權將宿主機data目錄掛載到容器的data目錄。
  • –restart always:表示Docker重啟時,容器自動重啟。
  • –name redis-${port} 表示容器的自定的容器名字是redis-端口號
  • –net redis_net:表示容器工作的網絡是redis_net
  • –sysctl net.core.somaxconn=1024表示修改somaxconn的值,內核大小為1024M,一把來說負載很大的程序的時候,往往由于內存不夠,會啟動失敗。
  • redis:5.0.5表示鏡像的版本。至此容器創(chuàng)建完畢。
  • redis-server /usr/local/etc/redis/redis.conf表示啟動Redis服務端。必須指定配置文件。

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

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

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

在三臺機器共生成6個容器,redis-7800到redis-7805,

使用命令來確認:

docker ps -a|grep redis-780

G、配置redis集群

任意進入一個節(jié)點,并啟動集群。注意redis容器啟動,并不代表集群啟動。

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.集群檢測

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

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

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Docker的安裝過程以及服務器與客戶端之間的通信

    Docker的安裝過程以及服務器與客戶端之間的通信

    文章簡要介紹了在Ubuntu24.04系統(tǒng)上安裝Docker的流程,包括修改apt源、安裝服務端與客戶端、配置鏡像目錄、端口通信及SSH連接,最終實現(xiàn)客戶端與服務端的成功通信驗證
    2025-08-08
  • Docker環(huán)境中部署n8n支持Python節(jié)點(兩種部署方式)

    Docker環(huán)境中部署n8n支持Python節(jié)點(兩種部署方式)

    本文介紹如何在Docker環(huán)境中部署n8n工作流自動化工具,并確保支持 Code in Python (Native) 節(jié)點,本文給大家分享兩種常見的部署方式,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • Docker容器定時備份數(shù)據(jù)庫并發(fā)送到指定郵箱(設計思路)

    Docker容器定時備份數(shù)據(jù)庫并發(fā)送到指定郵箱(設計思路)

    這篇文章主要介紹了Docker容器定時備份數(shù)據(jù)庫并發(fā)送到指定郵箱,文中寫了一下shell腳本,邏輯也很簡單,當前時間與啟動時間相同時,則調用sendmail函數(shù)發(fā)送郵件,具體腳本跟隨小編一起看看吧
    2022-01-01
  • 一文帶你快速了解和使用Docker

    一文帶你快速了解和使用Docker

    本文對 Docker 進行全面闡述,詳細介紹 Docker 的作用、其基本使用,如常用命令、Dockerfile 的作用及使用、Docker Compose 的作用及使用,感興趣的同學跟著小編一起來學習吧
    2023-05-05
  • docker 容器自定義 hosts 網絡訪問操作

    docker 容器自定義 hosts 網絡訪問操作

    這篇文章主要介紹了docker 容器自定義 hosts 網絡訪問操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 在IntelliJ IDEA中使用Docker的開發(fā)指南

    在IntelliJ IDEA中使用Docker的開發(fā)指南

    這篇文章主要給大家介紹了在IntelliJ IDEA中使用Docker開發(fā)指南,文中通過圖文介紹的非常詳細,對我們的使用Docker有一定的幫助,需要的朋友可以參考下
    2023-09-09
  • 無法連接到docker daemon問題及解決

    無法連接到docker daemon問題及解決

    在使用Docker相關命令時遇到無法連接到Docker Daemon的問題,經過排查,發(fā)現(xiàn)需要配置/etc/docker/daemon.json文件,并檢查其中的鏡像加速地址和驅動設置,通過調試和修改配置文件,最終解決了問題
    2026-02-02
  • 解決Jenkins集成docker插件問題的一些方法

    解決Jenkins集成docker插件問題的一些方法

    本文主要介紹了Jenkins集成docker插件問題的一些方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • docker常用容器啟動docker-compose.yml配置文件使用

    docker常用容器啟動docker-compose.yml配置文件使用

    這篇文章主要介紹了docker常用容器啟動docker-compose.yml配置文件使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • docker官方mysql鏡像自定義配置詳解

    docker官方mysql鏡像自定義配置詳解

    這篇文章主要介紹了docker官方mysql鏡像自定義配置詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11

最新評論

澄城县| 哈尔滨市| 乌兰察布市| 桂平市| 中牟县| 北票市| 进贤县| 攀枝花市| 邮箱| 高要市| 徐汇区| 松潘县| 西青区| 台中市| 乌鲁木齐县| 武穴市| 长沙县| 平湖市| 玉门市| 龙井市| 霞浦县| 和田市| 兴仁县| 金乡县| 鄂尔多斯市| 湄潭县| 高青县| 朝阳区| 霞浦县| 罗江县| 平定县| 彰化县| 和田县| 饶平县| 桐庐县| 苍梧县| 东丰县| 陈巴尔虎旗| 苗栗县| 罗江县| 贵溪市|