在Linux系统下安装、配置ETCD
在Linux系统下安装、配置ETCD(一个分布式键值存储系统)涉及多个步骤,包括下载、安装、配置、启动以及使用ETCD的常用命令。以下是对这些步骤的详细讲解,内容不少于2000字。
一、ETCD简介
ETCD是一个高可用的键值存储系统,用于配置共享和服务发现。它由CoreOS开发,具有分布式和一致性的特点,广泛用于构建分布式系统。ETCD使用Raft算法来保证数据的一致性,支持复杂的查询操作和监听键值变化,是微服务架构中不可或缺的一部分。
二、ETCD的安装
在Linux系统下安装ETCD主要有以下几种方式:
1. 通过包管理器安装
对于大多数Linux发行版,ETCD可能已经包含在其软件仓库中。因此,可以通过包管理器直接安装ETCD。以Ubuntu为例,可以使用以下命令安装:
sudo apt update
sudo apt install etcd
对于CentOS或RHEL,可以使用yum:
sudo yum install etcd
对于Fedora,可以使用dnf:
sudo dnf install etcd
2. 通过二进制文件安装
如果包管理器中没有ETCD或者需要安装特定版本的ETCD,可以从其GitHub发布页面下载二进制文件进行安装。以下是一个基于v3.5.0版本的安装示例:
-
下载ETCD二进制文件:
使用wget或curl下载ETCD的最新版本。以wget为例:
wget https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz或者使用curl:
curl -L https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz -o etcd-v3.5.0-linux-amd64.tar.gz -
解压文件:
下载完成后,解压文件:
tar xzvf etcd-v3.5.0-linux-amd64.tar.gz -
移动文件:
将解压后的ETCD和ETCDCTL(客户端工具)移动到系统的
/usr/local/bin/目录下,以便全局访问:sudo mv etcd-v3.5.0-linux-amd64/etcd* /usr/local/bin/ -
验证安装:
通过检查ETCD版本,确认安装成功:
etcd --version etcdctl version
3. 从源代码编译安装
如果需要从源代码编译安装ETCD,首先需要安装Go语言环境,然后克隆ETCD的Git仓库并编译。这种方法适用于需要最新功能或定制化的用户。编译过程相对复杂,包括安装依赖、克隆仓库、编译代码等步骤,这里不再赘述。
三、ETCD的配置
ETCD的配置可以通过命令行参数或配置文件来完成。以下是一个简单的配置文件示例,用于启动一个单节点集群:
-
创建配置文件目录:
sudo mkdir -p /etc/etcd -
创建配置文件:
使用文本编辑器(如nano或vim)创建配置文件
/etc/etcd/etcd.conf:sudo nano /etc/etcd/etcd.conf配置文件内容示例:
#[Member] ETCD_NAME="etcd0" ETCD_DATA_DIR="/var/lib/etcd/default.etcd"#[Server] ETCD_LISTEN_PEER_URLS="http://localhost:2380" ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"#[Clustering] ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380" ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379" ETCD_INITIAL_CLUSTER="etcd0=http://localhost:2380" ETCD_INITIAL_CLUSTER_STATE="new"注意:在生产环境中,应该根据实际需求配置ETCD的监听地址、数据目录、集群信息等。
当然,我们可以继续探讨Linux下ETCD的配置、启动、管理以及高级特性。
四、ETCD的启动
在配置好ETCD之后,接下来是启动ETCD服务。启动方式取决于你的安装方式。
1. 通过包管理器安装的服务启动
如果你是通过包管理器安装的ETCD,那么通常会有一个系统服务来管理ETCD的启动、停止和重启。
-
启动ETCD服务(以Ubuntu为例):
sudo systemctl start etcd -
检查ETCD服务状态:
sudo systemctl status etcd -
设置ETCD服务开机自启:
sudo systemctl enable etcd
2. 通过二进制文件安装的启动
如果你是通过下载二进制文件安装的ETCD,你需要手动启动ETCD服务。可以通过命令行指定配置文件来启动ETCD:
etcd --config-file=/etc/etcd/etcd.conf
或者,你可以将上述命令添加到systemd服务文件中,以便像其他系统服务一样管理ETCD。
五、ETCD的管理
ETCD的管理包括监控、备份、恢复和扩展集群等操作。
1. 监控
ETCD提供了HTTP API和metrics接口用于监控集群的状态。你可以使用etcdctl或curl等工具来查询集群的健康状态、成员列表等信息。
-
检查集群健康:
etcdctl endpoint health -
列出集群成员:
etcdctl member list
2. 备份与恢复
ETCD的备份和恢复可以通过快照(snapshot)功能实现。你可以定期创建ETCD的快照,并在需要时从快照恢复数据。
-
创建快照:
etcdctl snapshot save snapshot.db -
从快照恢复:
恢复快照的过程通常涉及在新的ETCD实例上加载快照文件,并可能需要一些额外的配置来确保新集群与旧集群的兼容性。
3. 集群扩展
随着业务的发展,你可能需要扩展ETCD集群以增加容量或提高可用性。ETCD支持动态地添加或删除集群成员。
-
添加成员:
首先,你需要在新的节点上安装并配置ETCD,然后使用etcdctl添加新成员到集群中。
-
删除成员:
当集群中的某个节点不再需要时,你可以使用etcdctl将其从集群中删除。注意,在删除成员之前,应该确保该节点的数据已经备份,并且集群中的其他成员可以接管其工作负载。
六、ETCD的高级特性
ETCD不仅仅是一个简单的键值存储系统,它还支持许多高级特性,如租约(leases)、观察者(watchers)、事务(transactions)等。
1. 租约
ETCD的租约允许你为键值对设置TTL(Time-To-Live),当租约过期时,与租约关联的键值对将被自动删除。这可以用于实现缓存失效、会话管理等场景。
2. 观察者
ETCD的观察者允许你订阅一个或多个键的变化,并在这些键的值发生变化时接收到通知。这对于实现分布式系统中的事件驱动架构非常有用。
3. 事务
ETCD支持事务操作,允许你在单个操作中执行多个读写请求,并确保这些操作要么全部成功,要么全部失败。这对于维护数据的一致性非常重要。
七、结论
ETCD是一个功能强大的分布式键值存储系统,广泛应用于微服务架构中的配置共享和服务发现。在Linux系统下安装、配置和管理ETCD涉及多个步骤,包括选择合适的安装方式、配置ETCD集群、启动ETCD服务以及使用ETCD的高级特性。通过熟练掌握ETCD的使用,你可以为分布式系统提供更加可靠和高效的服务支持。
相关文章:
在Linux系统下安装、配置ETCD
在Linux系统下安装、配置ETCD(一个分布式键值存储系统)涉及多个步骤,包括下载、安装、配置、启动以及使用ETCD的常用命令。以下是对这些步骤的详细讲解,内容不少于2000字。 一、ETCD简介 ETCD是一个高可用的键值存储系统&#x…...
lambda 表达式可以传递引用为什么需要引用捕获
当 lambda 表达式被传递或存储在其他地方时,通过引用捕获可以确保它始终访问正确的外部变量。—— 引用捕获可以精确地控制被捕获的引用变量的作用域。如果一个 lambda 表达式被存储在一个容器中,并且在不同的时间点被调用,引用捕获可以确保它…...
【Java】/* 双向链表 - 底层实现 */
【难点】:remove、removeAllKey 一、IList package bagfive;/*** Created with IntelliJ IDEA.* Description:* User: tangyuxiu* Date: 2024-08-21* Time: 20:30*/ public interface IList<E> {//头插法void addFirst(E data);//尾插法void addLast(E data…...
Go 语言协程管理精解
1.基础 协程切换需要操作寄存器,这些操作需要通过汇编辅助实现。另外,每一个协程都有一个协程栈,实际上协程栈也是有结构的。汇编程序和栈结构这些概念可能大部分开发者都不太了解,在介绍协程管理之间,先简要介绍。 1…...
C库函数signal()信号处理
signal()是ANSI C信号处理函数,原型如下: #include <signal.h>typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); signal()将信号signum的处置设置为handler,该handler为SIG_IGNÿ…...
007 SpringCloudAlibaba基础使用(nacos,gateway)
文章目录 cubemall-commoncubemall-productcubemall-gateway https://nacos.io/ https://github.com/alibaba/nacos/releases/tag/1.4.1 https://github.com/alibaba/spring-cloud-alibaba https://github.com/alibaba/Nacos https://developer.aliyun.com/mvn/guide https…...
编译环境揭秘
不同平台因为偏好差异,编译环境的准备会有差异。对于MSVC,微软提供简单的VS安装界面,比较省心。在Ubuntu发行版,gcc/make等程序可能不自带,当需要安装这些软件时就需要不少命令。当然比较麻烦,提供了统一的…...
不同的字符集(ASCII、UTF-8、UTF-16/UCS-2、UTF-32/UCS-4)
来自:C标准库(第2版)...
STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(3)
STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(3) 简介 实验 3:在搭建好 tcp 服务器,并拟定好协议的前提下,接收每一个 bin 文件的块,配置到 fpga。 原理图 fpga fpga1 stm32 接线总结 // fpga引脚 stm32…...
JavaScript基础知识(七)
数组相关api再续前缘 arr.forEach(function) 对arr数组的每一项执行遍历操作,并且可以通过function来对相关元素进行二次操作 function: 函数,同时接收三个参数 - item: 数组中的每一项 - index: 数组每一项的下标(item的对应下标) - arr: 原数组 arr.map(function) 对数组的…...
20240821让飞凌的OK3588-C的核心板在Linux R4下挂载1TB的exFAT格式的TF卡
fdisk -l df -h df -t df -T mount 20240821让飞凌的OK3588-C的核心板在Linux R4下挂载1TB的exFAT格式的TF卡 2024/8/21 19:47 百度:rk3588 buildroot exFAT mount: mounting /dev/mmcblk1p1 on /mnt failed: Invalid argument Disk /dev/mmcblk1: 955 GB, 10254234…...
Java HashMap练习
JDK1.2添加,线程不安全,性能相对较好 注意:允许使用null作为key或者value 使用数组加链表结构,结合数组和链表的优点 Hash Map的基本使用 package HashMap;import text5.Student;import java.util.Collection; import java.ut…...
前后端分离项目实战-通用管理系统搭建(前端Vue3+ElementPlus,后端Springboot+Mysql+Redis)第三篇:登录功能优化
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
8.20 Redis ACL配置 多个用户连接同一个Redis
**一、首先通过 linux命令 redis-cli 输入用户名和密码连接redis的客户端** **二、查看用户,创建用户,设置密码操作** (1)**ACL LIST** 命令 可以查看到当前的权限用户 (2)**ACL SETUSER userName** 此…...
【C语言】static和extern的作用
本文首发于 ❄️慕雪的寒舍 简单介绍C/C中static关键字和extern关键字的作用。 1.简介 在之前的博客中,提到过static的三个作用,但是没有详细说明这三个作用的场景,现在回过头来记录一下。 修饰函数修饰全局变量修饰函数内变量 static还有…...
全新分支版本!微软推出Windows 11 Canary Build 27686版
已经很久没有看到 Windows 11 全新的分支版本了,今天微软发布 Windows 11 Canary 新版本,此次版本号已经转移到 Build 27xxx,首发版本为 Build 27686 版。 此次更新带来了多项改进,包括 Windows Sandbox 沙盒功能切换到 Microsof…...
【Linux】ARM服务器命令行安装虚拟机
在Arm服务器上安装虚拟机操作笔记 一、基础环境准备1、环境准备2、检查KVM支持3、启动并启用libvirtd服务4、创建虚拟网络(可选)5、使用virt-manager创建虚拟机(支持KVM)6、管理虚拟机9、监控和日志 二、软虚拟化替代方案1、查看虚…...
Android 10.0 锁屏页面忘记锁屏密码情况下点击5次解锁图标弹出锁屏密码功能实现
1. 前言 在10.0的系统ROM定制化开发中,在一些产品中带锁屏密码的功能中,系统默认是滑动解锁,但是客户会设置锁屏密码,在某些时候会 忘掉锁屏密码,导致需要进入恢复出厂设置然后才能进入系统桌面,这样就导致系统的保存的资料都丢失了,所以需要要求在锁屏密码页面在忘记解…...
Java-CompletableFuture工具类
CompletableFuture 是 Java 8 引入的一个强大的异步编程工具,它提供了对异步计算的高级支 持,包括组合多个任务的能力、处理结果、异常处理等。为了方便地使用 CompletableFuture,你 可以创建一个工具类来封装常用的操作。 CompletableFuture 工具类 下面是一个 Complet…...
C语言:递归
递归简单来说就是函数自己调用自己。 特点:一般代码比较简洁,没有出口。 例子1:用一个函数计算阶乘 #include<stdio.h>//不用递归 int fac(int n) {int val 1;for (int i 1; i <n;i){val * i;}return val; }//用递归 int fac1(…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
