Linux下ETCD安装、配置、命令

1:介绍ETCD

1.1:什么是ETCD

etcd(分布式键值存储)是一个开源的分布式系统工具,用于可靠地存储和提供键值对数据。

以下是 etcd 的主要特性和用途:

  1. 分布式一致性存储: etcd 提供一个分布式键值存储系统,数据被分布式地存储在多个节点上。etcd 使用 Raft 协议来确保一致性和容错性,保证在节点故障或网络分区情况下数据的可用性和一致性。
  2. 配置管理: etcd 常用于配置管理,应用程序可以将配置信息存储在 etcd 中,并通过监听 etcd 中的配置变更来动态调整应用程序行为。
  3. 服务注册和服务发现: etcd 可以用作服务注册和服务发现的组件。微服务架构中的服务可以在 etcd 中注册其地址和元数据,其他服务则可以通过 etcd 查询并发现可用的服务实例。
  4. 分布式锁: etcd 提供了基于分布式锁的机制,用于协调多个节点之间的并发访问,以确保一致性和可靠性。
  5. 观察者模式: etcd 支持观察者模式,即客户端可以监听键值的变更事件。这使得应用程序可以实时响应 etcd 中数据的变化。
  6. 容器编排: Kubernetes 使用 etcd 作为其默认的分布式数据存储,用于存储集群状态、配置信息和其他重要数据。
  7. 分布式系统基础设施: etcd 作为分布式系统的基础设施组件,可以用于构建各种分布式应用程序和系统。

etcd 通常通过 HTTP 或 gRPC 提供 API,允许应用程序通过简单的接口与其交互。由于其可靠性和稳定性,etcd 在构建可扩展、分布式、高可用的系统中发挥着重要的作用。

1.2:优点

  1. 分布式一致性: etcd 使用 Raft 协议来实现分布式一致性,确保数据的可靠性和一致性。Raft 协议提供了强一致性和容错性,即使在节点故障或网络分区的情况下,etcd 也能保持一致性。
  2. 高可用性: etcd 支持数据的多副本存储和自动故障转移。通过在多个节点上存储数据的副本,etcd 提供了高可用性,即使其中一部分节点发生故障,系统仍能保持可用。
  3. 强大的观察者模式: etcd 支持观察者模式,允许客户端监听键值的变更事件。这使得应用程序能够实时响应 etcd 中数据的变化,支持实时配置更新和通知机制。
  4. 灵活的数据模型: etcd 提供简单的键值对数据模型,同时支持对数据的复杂查询和过滤。这使得 etcd 可以适应各种应用场景,包括配置管理、服务发现等。
  5. 轻量级和高性能: etcd 被设计为轻量级和高性能的分布式存储系统。其简单的设计和高效的实现使其能够处理大规模的数据和请求。
  6. 容器编排的标准: etcd 是容器编排系统 Kubernetes 的默认分布式数据存储。这使得 etcd 成为构建可扩展和可靠的容器化应用的标准选择。
  7. 开源和活跃的社区: etcd 是一个开源项目,拥有活跃的社区支持。这意味着用户可以获得及时的更新、bug 修复和安全补丁。
  8. 多语言支持: etcd 提供了多种语言的客户端库,使得开发者可以使用多种编程语言轻松地与 etcd 进行交互。
  9. 支持 TLS 加密: etcd 提供了对传输层安全性(TLS)的支持,确保数据在传输过程中的安全性。

总体而言,etcd 通过其一致性、高可用性、观察者模式等特性,为分布式系统提供了强大的基础设施。这些优点使得 etcd 在构建现代分布式应用和服务时非常有价值。

1.3:图解

在这里插入图片描述
在这里插入图片描述

2:安装

2.1:liunx安装

Release v3.5.10 · etcd-io/etcd · GitHub

1:配置环境变量

将文件夹中etcd和etcdctl两个文件添加可执行文件路径到环境变量PATH中。

  • etcd是服务端,etcdctl是运维人员操作的控制端,一般只需要装etcd,现在是学习就都装在同一台机器。
  • PS:用echo $PATH查看自己的环境变量路径
# 移动可执行文件位置
mv etcd /usr/local/bin
mv etcdctl /usr/local/bin
# 修改profile文件,
vim /etc/profile
# 在文件最后加入变量,因为etcd默认使用V2版本,我们需要V3版本的API。
export ETCDCTL_API=3
# 使环境变量生效
source /etc/profile

在这里插入图片描述

2:查看版本信息

etcdctl version

在这里插入图片描述

3:创建etcd配置文件,一定需要确认用户对数据目录etcd有读写权限,否则服务可能无法正确启动

[root@Cent0S7 ~]# mkdir -p /var/lib/etcd/
[root@Cent0S7 ~]# cat <<EOF | sudo tee /etc/etcd.conf
#节点名称
ETCD_NAME=$(hostname -s)
#数据存放位置
ETCD_DATA_DIR=/var/lib/etcd/
EOF

4:创建开机启动文件

[root@Cent0S7 ~]# cat <<EOF | sudo tee /etc/systemd/system/etcd.service
 
[Unit]
Description=Etcd Server
Documentation=https://github.com/coreos/etcd
After=network.target
 
[Service]
User=root
Type=notify
#这个文件特别关键,etcd使用的环境变量都需要通过环境变量文件读取
EnvironmentFile=-/etc/etcd.conf
ExecStart=/usr/local/bin/etcd
Restart=on-failure
RestartSec=10s
LimitNOFILE=40000
 
[Install]
WantedBy=multi-user.target
EOF 

5:重新加载配置 & 开机启动 & 启动etcd

[root@Cent0S7 ~]# systemctl daemon-reload && systemctl enable etcd && systemctl start etcd

6:开机启动,设置状态enabled:

[root@Cent0S7 ~]# systemctl list-unit-files etcd.service
UNIT FILE    STATE 
etcd.service enabled
 
1 unit files listed.

7:查看etcd状态:

[root@Cent0S7 ~]# systemctl show etcd.service
Type=notify
Restart=on-failure
NotifyAccess=main
RestartUSec=10s
TimeoutStartUSec=1min 30s
TimeoutStopUSec=1min 30s
WatchdogUSec=0
WatchdogTimestamp=Sun 2020-11-29 22:44:07 CST
WatchdogTimestampMonotonic=9160693425
------  剩余内容 (略)  -------

8:查看端口是否启动

CentOS默认没有装netstat,需要 # yum install -y net-tools 自己装

[root@Cent0S7 ~]# netstat -an |grep 2379
tcp        0      0 127.0.0.1:2379          0.0.0.0:*               LISTEN    
tcp        0      0 127.0.0.1:53156         127.0.0.1:2379          ESTABLISHED
tcp        0      0 127.0.0.1:2379          127.0.0.1:53156         ESTABLISHED

2.2:命令

  1. 设置键值对:

    etcdctl put key value
    

    示例:

    etcdctl put /database/url "mysql://user:password@localhost:3306/db"
    
  2. 获取键值对:

    etcdctl get key
    

    示例:

    etcdctl get /database/url
    
  3. 递归获取键值对:

    etcdctl get --prefix key
    

    示例:

    etcdctl get --prefix /database
    
  4. 删除键值对:

    etcdctl del key
    

    示例:

    etcdctl del /database/url
    
  5. 监视键变化:

    etcdctl watch key
    

    示例:

    etcdctl watch /database/url
    
  6. 创建租约并将键值与租约关联:

    etcdctl lease grant TTL 
    etcdctl put --lease=LEASE_ID key value
    

    示例:

    etcdctl lease grant 60
    etcdctl put --lease=LEASE_ID /session/user1 "John Doe"
    
  7. 查看租约信息:

    etcdctl lease timetolive LEASE_ID
    

    示例:

    etcdctl lease timetolive LEASE_ID
    
  8. 撤销租约:

    etcdctl lease revoke LEASE_ID
    

    示例:

    etcdctl lease revoke LEASE_ID
    
  9. 查看成员列表:

    etcdctl member list
    
  10. 查看成员详细信息:

    etcdctl member status MEMBER_ID
    

    示例:

    etcdctl member status 1234abcd5678efgh
    
  11. 事务操作:

    codeetcdctl txn <<EOF
    txn details...
    EOF
    

    示例:

    codeetcdctl txn <<EOF
    put key1 value1
    put key2 value2
    EOF
    

2.3:权限管理

在 etcd 中,权限操作通常通过 Role-Based Access Control (RBAC) 来管理。以下是一些常见的 etcd 权限操作:

  1. 创建用户: 使用 etcdctl 命令创建用户账号,通常需要提供用户名和密码。

    etcdctl user add <username>:<password>
    
  2. 为用户授予权限: 创建用户后,你可以为其授予特定的权限。这通常涉及到创建角色和将角色分配给用户。

    etcdctl role add <rolename>
    etcdctl role grant-permission <rolename> <permission-type> <key> <range-end>
    etcdctl user grant-role <username> <rolename>
    

    例如:

    etcdctl role add readwrite
    etcdctl role grant-permission readwrite readwrite /path/to/key/*
    etcdctl user grant-role user1 readwrite
    

    上述示例中,创建了一个名为 “readwrite” 的角色,并授予了该角色对 “/path/to/key/*” 范围内键的读写权限。然后,将该角色授予了用户 “user1”。

  3. 列出用户、角色和权限: 你可以使用 etcdctl 命令列出已创建的用户、角色和权限。

    etcdctl user list
    etcdctl role list
    etcdctl user get <username>
    etcdctl role get <rolename>
    

    例如:

    etcdctl user list
    etcdctl role list
    etcdctl user get user1
    etcdctl role get readwrite
    
  4. 删除用户和角色: 如果需要,你可以使用 etcdctl 删除用户和角色。

    etcdctl user remove <username>
    etcdctl role remove <rolename>
    

    例如:

    etcdctl user remove user1
    etcdctl role remove readwrite
    

请注意,etcd 的权限管理可能会因版本而异,因此确保查阅你使用的 etcd 版本的文档以获取准确的信息。此外,etcd 也支持 TLS 认证,可以进一步加强安全性。

  • 32
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux安装etcd,你可以按照以下步进行操作: 1. 首先,确保你的Linux系统已连接到互联网。 2. 打开终端,并使用curl命令下载etcd的二进制文件。你可以在etcd的官方GitHub页面(https://github.com/etcd-io/etcd/releases)上找到最新版本的下载链接。选择适合你系统架构的二进制文件下载。 ``` 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 ``` 3. 解压下载的二进制文件: ``` tar xzvf etcd-v3.5.0-linux-amd64.tar.gz ``` 4. 进入解压后的etcd目录: ``` cd etcd-v3.5.0-linux-amd64 ``` 5. 将etcdetcdctl二进制文件复制到系统路径中: ``` sudo cp etcd /usr/local/bin sudo cp etcdctl /usr/local/bin ``` 6. 创建etcd配置文件,例如etcd.conf: ``` sudo nano /etc/etcd.conf ``` 在配置文件中,你可以指定etcd的监听地址、数据目录等。根据需要进行配置。 7. 创建一个systemd服务单元文件,例如etcd.service: ``` sudo nano /etc/systemd/system/etcd.service ``` 在服务单元文件中,添加以下内容: ``` [Unit] Description=etcd After=network.target [Service] ExecStart=/usr/local/bin/etcd --config-file /etc/etcd.conf Restart=always Type=simple [Install] WantedBy=multi-user.target ``` 8. 启用并启动etcd服务: ``` sudo systemctl enable etcd.service sudo systemctl start etcd.service ``` 现在,etcd就已经成功安装在你的Linux系统上,并作为一个后台服务在运行。你可以根据需要进一步配置和使用etcd来实现分布式键值存储等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值