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

linux下ETCD安装、配置、命令

ETCD 是一个高可用的分布式键值存储,常用于分布式系统中来存储配置数据和元数据。它特别适合作为 Kubernetes 等容器编排系统的后台存储。下面介绍在 Linux 下安装、配置 ETCD 以及常用命令。

1. ETCD 安装

1.1 通过二进制包安装
  1. 下载 ETCD 二进制文件

    • 访问 ETCD 的 GitHub Releases 页面 获取最新版本的下载链接。
    • 使用 wgetcurl 下载:
      wget https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz
      
    • 解压下载的压缩包:
      tar -xvf etcd-v3.5.0-linux-amd64.tar.gz
      cd etcd-v3.5.0-linux-amd64
      
  2. 将二进制文件移动到系统路径

    sudo mv etcd /usr/local/bin/
    sudo mv etcdctl /usr/local/bin/
    
  3. 验证安装

    • 执行 etcd --versionetcdctl --version 命令确认安装成功。
1.2 通过包管理器安装(适用于 Ubuntu)
  1. 添加 ETCD 仓库并安装

    sudo apt-get update
    sudo apt-get install etcd
    
  2. 安装后查看版本

    etcd --version
    etcdctl --version
    

2. ETCD 配置

ETCD 的配置可以通过命令行参数、环境变量或配置文件来进行。以下是配置 ETCD 的一些重要步骤:

2.1 使用默认配置启动 ETCD

默认情况下,ETCD 会启动一个单节点集群,可以简单地运行以下命令:

etcd
2.2 配置文件

可以将配置写入一个文件中,然后通过命令行指定该配置文件启动 ETCD。

创建一个配置文件 etcd.conf

nano etcd.conf

配置文件内容可以包括:

name: 'etcd-node1'
data-dir: '/var/lib/etcd'
initial-advertise-peer-urls: 'http://127.0.0.1:2380'
listen-peer-urls: 'http://127.0.0.1:2380'
advertise-client-urls: 'http://127.0.0.1:2379'
listen-client-urls: 'http://127.0.0.1:2379,http://localhost:2379'
initial-cluster: 'etcd-node1=http://127.0.0.1:2380'
initial-cluster-state: 'new'
initial-cluster-token: 'etcd-cluster'

使用配置文件启动 ETCD:

etcd --config-file=etcd.conf

3. ETCD 启动与管理

3.1 使用 Systemd 管理 ETCD

在现代 Linux 发行版中,Systemd 是管理服务的主要方式。

  1. 创建 Systemd 服务文件
    创建一个新的文件 /etc/systemd/system/etcd.service

    sudo nano /etc/systemd/system/etcd.service
    
  2. Systemd 服务文件内容

    [Unit]
    Description=etcd key-value store
    Documentation=https://github.com/etcd-io/etcd
    After=network.target[Service]
    ExecStart=/usr/local/bin/etcd --config-file=/etc/etcd/etcd.conf
    Restart=always
    RestartSec=5s
    LimitNOFILE=40000[Install]
    WantedBy=multi-user.target
    
  3. 启动和管理 ETCD 服务

    • 启动 ETCD 服务:
      sudo systemctl start etcd
      
    • 设置开机自启动:
      sudo systemctl enable etcd
      
    • 查看服务状态:
      sudo systemctl status etcd
      

4. ETCD 常用命令

ETCD 的命令主要通过 etcdctl 工具进行操作,常用的命令包括:

4.1 集群管理
  • 查看集群健康状况
    etcdctl endpoint health
    
  • 查看集群成员列表
    etcdctl member list
    
4.2 键值存储操作
  • 写入键值对
    etcdctl put mykey "this is a value"
    
  • 读取键值
    etcdctl get mykey
    
  • 删除键值
    etcdctl del mykey
    
4.3 事务
  • 执行一个简单事务
    etcdctl txn <<EOF
    put key1 "hello"
    put key2 "world"
    get key1
    get key2
    EOF
    
4.4 查看历史版本
  • 查看历史版本
    etcdctl get mykey --history
    
  • 回滚到指定版本
    etcdctl get mykey --rev=3
    
4.5 备份和恢复
  • 备份 ETCD 数据库
    etcdctl snapshot save snapshot.db
    
  • 恢复 ETCD 数据库
    etcdctl snapshot restore snapshot.db
    

5. ETCD 安全配置

为了保护数据传输的安全性,ETCD 通常会启用 TLS 加密。

5.1 启用 TLS
  1. 生成证书和密钥
    可以使用 openssl 或其他工具生成自签名证书。

  2. 配置 ETCD 使用 TLS
    在配置文件中增加以下内容:

    client-cert-auth: true
    trusted-ca-file: /path/to/ca.pem
    cert-file: /path/to/server.pem
    key-file: /path/to/server-key.pem
    
  3. 启用 TLS 后启动 ETCD

    etcd --config-file=etcd.conf
    

6. ETCD 高可用配置

ETCD 可以配置成集群模式以实现高可用性。

6.1 配置集群
  1. 在每个节点上安装 ETCD,并配置集群相关参数,例如 initial-clusterinitial-advertise-peer-urls

  2. 启动每个 ETCD 节点,它们会自动发现并加入集群。

  3. 验证集群状态

    etcdctl member list
    

通过这些步骤,你可以在 Linux 上成功安装、配置和管理 ETCD。ETCD 是一个强大的工具,理解和掌握其使用对构建和维护分布式系统至关重要。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何让键盘F2功能键设置成重命名键(Fn+Esc)
  • SAM2部署过程中pip install -e . 报错:‘gbk‘ codec can‘t decode byte 0xa4
  • 【自动驾驶】ROS中的重名问题:工作空间、节点、参数
  • 总投资额超1320亿!上半年文旅项目投资盘点,康养/红色/智慧旅游等六大赛道受资本青睐
  • <数据集>车间工人、安全帽、安全背心识别<目标检测>
  • 九、OpenCVSharp 中的图像形态学操作
  • 【c语言】预处理、宏定义相关知识
  • 【生成式人工智能-四-chatgpt的训练过程-pretrain预训练自督导式学习督导式学习】
  • 学习008-02-05-03 Highlight Property Editors(突出显示属性编辑器)
  • 每日面试题Day2
  • 介绍ES全称Elasticsearch
  • 【搜索二维矩阵】python刷题记录
  • 用爬虫玩转石墨文档
  • cms里文章页自定义文件名去掉html方法
  • Ant-Design-Vue快速上手指南与排坑
  • 3.7、@ResponseBody 和 @RestController
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • angular2开源库收集
  • CentOS7简单部署NFS
  • DataBase in Android
  • GraphQL学习过程应该是这样的
  • Mybatis初体验
  • Python_OOP
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 初探 Vue 生命周期和钩子函数
  • 我建了一个叫Hello World的项目
  • 正则学习笔记
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​Java并发新构件之Exchanger
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • (0)Nginx 功能特性
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (Matlab)使用竞争神经网络实现数据聚类
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (篇九)MySQL常用内置函数
  • (三十五)大数据实战——Superset可视化平台搭建
  • (一)、python程序--模拟电脑鼠走迷宫
  • (一)SvelteKit教程:hello world
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)ORM
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .NET中 MVC 工厂模式浅析
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @Builder注释导致@RequestBody的前端json反序列化失败,HTTP400
  • [100天算法】-实现 strStr()(day 52)
  • [Android]Android开发入门之HelloWorld
  • [BFS广搜]迷阵
  • [BIZ] - 1.金融交易系统特点
  • [C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测
  • [C#基础]说说lock到底锁谁?
  • [C++]类和对象(中)