当前位置: 首页 > news >正文

etcd 集群搭建与测试指南

etcd 集群搭建与测试指南

一、容器搭建

1. 拉取 etcd 镜像

首先,需要从 Docker Hub 拉取 etcd 的镜像:

docker pull quay.io/coreos/etcd:v3.3.1

2. 创建自定义网络

为了设置容器的固定 IP,需要创建一个自定义网络:

docker network create --subnet 172.19.0.0/16 ots

3. 创建容器

以下是创建 etcd 集群的三个节点的命令:

  • 容器一 (IP: 172.19.0.110)
docker run -d \
-p 2379:2379 -p 2380:2380 \
--name node1 --network=ots \
--ip 172.19.0.110 \
quay.io/coreos/etcd:v3.3.1 \
etcd \
-name node1 \
-advertise-client-urls http://172.19.0.110:2379 \
-initial-advertise-peer-urls http://172.19.0.110:2380 \
-listen-client-urls http://0.0.0.0:2379  \
-listen-peer-urls http://0.0.0.0:2380 \
-initial-cluster-token etcd-cluster \
-initial-cluster "node1=http://172.19.0.110:2380,node2=http://172.19.0.120:2380,node3=http://172.19.0.130:2380" \
-initial-cluster-state new
  • 容器二 (IP: 172.19.0.120)
docker run -d \
-p 2479:2379 -p 2480:2380 \
--name node2 --network=ots \
--ip 172.19.0.120 \
quay.io/coreos/etcd:v3.3.1 \
etcd \
-name node2 \
-advertise-client-urls http://172.19.0.120:2379 \
-initial-advertise-peer-urls http://172.19.0.120:2380 \
-listen-client-urls http://0.0.0.0:2379 \
-listen-peer-urls http://0.0.0.0:2380 \
-initial-cluster-token etcd-cluster \
-initial-cluster "node1=http://172.19.0.110:2380,node2=http://172.19.0.120:2380,node3=http://172.19.0.130:2380" \
-initial-cluster-state new
  • 容器三 (IP: 172.19.0.130)
docker run -d \
-p 2579:2379 -p 2580:2380 \
--name node3 --network=ots \
--ip 172.19.0.130 \
quay.io/coreos/etcd:v3.3.1 \
etcd \
-name node3 \
-advertise-client-urls http://172.19.0.130:2379 \
-initial-advertise-peer-urls http://172.19.0.130:2380 \
-listen-client-urls http://0.0.0.0:2379 \
-listen-peer-urls http://0.0.0.0:2380 \
-initial-cluster-token etcd-cluster \
-initial-cluster "node1=http://172.19.0.110:2380,node2=http://172.19.0.120:2380,node3=http://172.19.0.130:2380" \
-initial-cluster-state new

参数解释

  • --listen-client-urls: 监听 URL,用于与客户端通讯。
  • --listen-peer-urls: 监听 URL,用于与其他节点通讯。
  • --initial-advertise-peer-urls: 告知集群其他节点 URL。
  • --advertise-client-urls: 告知客户端 URL。
  • --initial-cluster-token: 集群的 ID。
  • --initial-cluster: 集群中所有节点。
  • --initial-cluster-state new: 表示从无到有搭建 etcd 集群。

4. 检查容器状态

使用以下命令查看所有容器是否都在运行状态:

docker ps -a

二、容器集群测试

1. 进入容器

打开两个窗口,分别进入 node1 和 node2 容器:

docker exec -it node1 sh
docker exec -it node2 sh

2. 测试数据同步

在 node2 容器中添加数据:

etcdctl set /aa/bb 123

在 node1 容器中获取数据:

etcdctl get /aa/bb

如果数据能够成功同步,说明集群已经搭建成功。

3. 查看所有节点

使用以下命令查看所有节点信息:

etcdctl member list

可以看到 node1 最后的 true,这代表它是主节点。

应用场景

  • 日均流量: 3400万
  • 车场数量: 5万个
  • 设备数量: 5万台

状态查询机制

  • 状态、事件、地感、道闸、道闸开启、鉴权、识别、检索日志

数据处理

  • 每月处理 10 亿数据
  • 使用 Kafka 进行数据持久化

通过上述步骤,可以成功搭建并测试一个 etcd 集群,用于处理大规模的数据同步和状态管理。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux入门学习:Linux调试器gdb使用
  • vue中 <template> 与 <template lang=“jade“>的对比,哪个性能好
  • 相机光学(三十八)——VCM(Voice Coil Motor)音圈马达
  • T4—猴痘识别
  • 计算总体方差statistics.pvariance()
  • 前端面试记录
  • 5. 数字证书与公钥基础设施
  • PAT甲级-1083 List Grades
  • 智能自行车码表:基于2605C语音芯片的创新开发方案
  • 简单水印通过python去除
  • TCP/IP Socket用于测试免费使用的服务器端
  • 骨传导耳机哪个牌子质量好?盘点公认好评率最高的五款热门骨传导耳机!
  • 【对比学习串烧】 SWav和 BYOL
  • Day 9:1306 跳跃游戏III
  • C++校招面经(二)
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • bootstrap创建登录注册页面
  • C学习-枚举(九)
  • ES6--对象的扩展
  • HTTP那些事
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Laravel 中的一个后期静态绑定
  • opencv python Meanshift 和 Camshift
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 聊聊flink的BlobWriter
  • 如何解决微信端直接跳WAP端
  • 手写一个CommonJS打包工具(一)
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 用Visual Studio开发以太坊智能合约
  • elasticsearch-head插件安装
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #pragma once
  • (4)事件处理——(7)简单事件(Simple events)
  • (C++20) consteval立即函数
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (四)Linux Shell编程——输入输出重定向
  • (一)WLAN定义和基本架构转
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • **python多态
  • .gitignore文件_Git:.gitignore
  • .NET 命令行参数包含应用程序路径吗?
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET导入Excel数据
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @RequestMapping-占位符映射
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [Algorithm][动态规划][01背包问题][目标和][最后一块石头的重量Ⅱ]详细讲解
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [Android]How to use FFmpeg to decode Android f...
  • [autojs]逍遥模拟器和vscode对接
  • [AutoSar NVM] 存储架构
  • [Erlang 0129] Erlang 杂记 VI 2014年10月28日