etcd配置详解

etcd配置详解

1.什么是etcd?

etcd是一个开源的分布式键值存储系统,它用于在集群中的多个节点之间共享数据。etcd最初由CoreOS团队开发,现在由Cloud Native Computing Foundation (CNCF) 维护。etcd通常与Kubernetes一起使用,以存储和同步Kubernetes集群的配置信息和元数据。除了Kubernetes之外,etcd还可以用于其他分布式系统,例如OpenStack、Apache Mesos等。

2.etcd的使用场景

  • 1.Kubernetes集群控制平面的数据存储:etcd存储Kubernetes集群的配置信息、状态和元数据,确保在多个节点之间同步。

  • 2.服务发现和负载均衡:etcd可以存储服务注册表,以便其他服务可以查询可用的服务实例并进行负载均衡。

  • 3.分布式锁:etcd提供了一个基于租约的分布式锁实现,可以防止多个客户端同时修改相同的资源。

  • 4.配置管理:etcd可以存储应用程序的配置信息,并允许应用程序在运行时动态更新这些配置。

  • 5日志聚合:etcd可以用于存储日志收集器的配置和元数据,以便管理和监控日志收集器。
    总之,etcd可以作为任何需要共享数据的分布式系统的通用数据存储解决方案。

3.etcd对比redis

tcd和Redis都是基于内存的键值对数据库,但它们有不同的设计目标和使用场景:

  • 1.etcd是一个专为分布式系统设计的键值对数据库,用于在多个节点之间共享配置信息和元数据,通常与Kubernetes等容器编排工具配合使用。

  • 2.Redis是一个广泛用于缓存、消息队列、实时统计、地理位置等应用的内存数据库,支持多种数据结构和丰富的操作。

相对而言,etcd更加注重数据的一致性和高可用性,并提供了一些特定于分布式环境下的功能,例如基于租约的分布式锁。而Redis则更侧重于快速的读写性能和丰富的数据处理能力。

4.etcd配置

1.安装etcd

1
2
#基于Archlinux
pacman -S etcd #

2.配置etcd
由于Archlinux安装etcd后生成的etcd.service文件中并没有指定etcd的配置文件,因此我们可以修改/usr/lib/systemd/system/etcd.service文件的配置参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Unit]
Description=etcd key-value store
Documentation=https://github.com/etcd-io/etcd
After=network-online.target local-fs.target remote-fs.target time-sync.target
Wants=network-online.target local-fs.target remote-fs.target time-sync.target

[Service]
User=etcd
Type=notify
Environment=ETCD_DATA_DIR=/var/lib/etcd
Environment=ETCD_NAME=%m
ExecStart=/usr/bin/etcd --config-file /etc/etcd/etcd.conf #这里指定配置文件
Restart=always
RestartSec=10s
LimitNOFILE=40000

[Install]
WantedBy=multi-user.target

3.编辑etcd配置文件
etcd配置文件以yaml文件语法格式编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Cluster配置
name: "etcd-node-1"
#指定初始集群状态,"new"代表一个全新的未初始化的etcd集群
initial-cluster-state: "new"
initial-cluster-token: "etcd-cluster-1"
initial-cluster: "etcd-node-1=http://192.168.0.1:2380,etcd-node-2=http://192.168.0.2:2380,etcd-node-3=http://192.168.0.3:2380"
#用于集群部署的,listen-peer-urls为其他etcd节点访问的url
listen-peer-urls: "http://192.168.0.1:2380"

# Security配置
client-transport-security:
cert-file: "/path/to/client.crt"
key-file: "/path/to/client.key"
trusted-ca-file: "/path/to/ca.crt"
#集群的证书,信任的ca证书,以及密钥
peer-transport-security:
cert-file: "/path/to/peer.crt"
key-file: "/path/to/peer.key"
trusted-ca-file: "/path/to/ca.crt"

# Logging配置
#如果需要输出更多的调试信息,打开debug,在生产环境中建议关闭
debug: false
#日志等级
log-level: "info"
log-outputs: ["stdout"]
#如果要将日志输出到指定文件
#log-outputs: ["file"]
#log-file: "/var/log/etcd/etcd.log"

# Storage配置
data-dir: "/var/lib/etcd"

# API Server配置
#监听的地址2379端口为etcd V3版本的监听端口,V2版本为4001,可以根据具体版本进行修改
listen-client-urls: "http://0.0.0.0:2379,http://0.0.0.0:4001"
#响应客户端请求在响应头中加入的地址和端口
advertise-client-urls: "http://192.168.0.1:2379,http://192.168.0.1:4001"


etcd配置详解
https://dreamaccount.github.io/2023/03/26/etcd配置详解/
作者
404NotFound
发布于
2023年3月26日
许可协议