网络营销如何进行网站推广,wordpress删除历史文档,手表购买网站,济南建设网站企业报价官方网站
官方网址#xff1a;etcd
二进制包下载#xff1a;Install | etcd
GitHub社区项目#xff1a;etcd-io GitHub
GitHub社区项目版本历史#xff1a;Releases etcd-io/etcd GitHub 一、镜像下载
1、在线下载
在一台能连外网的linux上执行docker镜像拉取命令…
官方网站
官方网址etcd
二进制包下载Install | etcd
GitHub社区项目etcd-io · GitHub
GitHub社区项目版本历史Releases · etcd-io/etcd · GitHub 一、镜像下载
1、在线下载
在一台能连外网的linux上执行docker镜像拉取命令
docker pull etcd:3.5.18
2、离线包下载
两种方式
方式一
-在一台能连外网的linux上安装docker执行第一步的命令下载镜像
-导出
# 导出镜像到本地当前目录
docker save -o bitnami_etcd_3_5_18.tar etcd:3.5.18
方式二
-Window桌面程序Docker Desktop -下载镜像 -安装镜像导出插件(说明过程就复用了之前mysql的图) -将镜像文件保存到window本地图略 3、Community Edition | Docs
Install Etcd on Linux | Docs 官方的下载地址k8s环境用不上因为官方没有发布镜像自行打镜像的除外 二、安装
1、在线安装
见离线安装只比离线安装少一步导入动作
2、离线安装
-导入镜像 docker load -i bitnami_etcd_3_5_18.tar -查看镜像 [dockerGZ***-PM153160 ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
bitnami/etcd 3.5.18 bdc73d3efea1 4 days ago 190MB -创建映射目录
创建redis配置文件目录、数据文件目录并修改目录权限 sudo mkdir -p /opt/etcd/docker-etcd/conf
sudo mkdir -p /data1/etcd/docker-etcd/data
sudo mkdir -p /data1/etcd/docker-etcd/log
sudo chown -R docker.docker /opt/etcd
# 作者data1目录下全是docker用户程序数据所以没有指定子目录
sudo chown -R docker.docker /data1
# sudo chown -R docker.docker /data1/etcd -启动容器 docker run -d \--name my-etcd-server5 \-v /data1/etcd-data:/data \-e ETCD_ROOT_PASSWORDiam***#T123 \-p 2379:2379 \-p 2380:2380 \-d bdc73d3efea1 这个命令做了以下几件事 --name my-etcd-server5给容器命名为my-etcd-server5。 -d让容器在后台运行。 -p 6380:6379将容器的6379端口映射到宿主机的6380端口这是Redis的服务端口。 -v 映射数据文件目录和日志文件目录左边的是外部目录右边的是容器目录 -e ETCD_ROOT_PASSWORDiam***#T123 环境变量指定密码
-查看容器 [dockerGZ***-PM153160 ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bc7bbe2026b6 bdc73d3efea1 /opt/bitnami/script… 10 minutes ago Up 10 minutes 0.0.0.0:12379-2379/tcp, [::]:12379-2379/tcp, 0.0.0.0:12380-2380/tcp, [::]:12380-2380/tcp ctc-etcd-server5 -从容器内部拷贝配置文件 [dockerGZ***-PM153160 ~]$ docker cp db867a1bae9a:/etc/etcd/etcd.conf /opt/etcd/docker-redis/conf/etcd.conf
Successfully copied 1.54kB to /opt/etcd/docker-etcd/conf/etcd.conf
[dockerGZ***-PM153160 ~]$ bitnami版作者当前版本一般作者不用这个可作者写文章时下错了不过不影响读者参考
[dockerGZ***-PM153160 ~]$ docker cp db867a1bae9a:/opt/bitnami/etcd/conf/etcd.conf /opt/etcd/docker-etcd/conf/etcd.conf
Successfully copied 1.54kB to /opt/etcd/docker-etcd/conf/etcd.conf
[dockerGZ***-PM153160 ~]$ -调整其他配置可选
vi /opt/etcd/docker-etcd/conf/etcd.conf
按需修改后删除原容器添加配置文件映射参数后重新创建容器 docker run -d \--name my-etcd-server5 \-v /data1/etcd-data:/data \-e ETCD_ROOT_PASSWORDiam***#T123 \-p 2379:2379 \-p 2380:2380 \-d bdc73d3efea1 -重启容器 [dockerGZ***-PM153160 ~]$ docker restart bc7bbe2026b6
bc7bbe2026b6 三、ETCD配置详解
1、etcd成员相关的配置项
--name default 为该成员指定一个易读的名称。--data-dir ${name}.etcd 数据存储目录的路径。--wal-dir 用于存放专用WALWrite-Ahead Log的目录路径。--snapshot-count 100000 触发快照到磁盘的已提交事务数量。--heartbeat-interval 100 心跳间隔时间毫秒。--election-timeout 1000 选举超时时间毫秒。详见调优文档。--initial-election-tick-advance true 是否在启动时加速初始选举计时从而加快选举速度。--listen-peer-urls http://localhost:2380 用于监听对等节点流量的URL列表。--listen-client-urls http://localhost:2379 用于监听客户端 gRPC 和 HTTP 流量的 URL 列表当未指定 --listen-client-http-urls 时生效。--listen-client-http-urls 仅用于 HTTP 客户端流量的 URL 列表。启用此标志会将 HTTP 服务从 --listen-client-urls 中移除。--max-snapshots 5 保留的最大快照文件数量0表示不限制。--max-wals 5 保留的最大WAL文件数量0表示不限制。--quota-backend-bytes 0 当后端大小超过给定配额时触发警报0表示使用默认低空间配额。--backend-bbolt-freelist-type map 指定Boltdb后端使用的freelist类型支持 array 和 map 类型。--backend-batch-interval 提交后端事务前的最大时间间隔。--backend-batch-limit 0 提交后端事务前的最大操作数。--max-txn-ops 128 每个事务允许的最大操作数。--max-request-bytes 1572864 服务器可接受的客户端请求的最大字节数。--grpc-keepalive-min-time 5s 客户端在发送ping请求前应等待的最短时间间隔。--grpc-keepalive-interval 2h 服务器向客户端发送ping以检查连接是否存活的频率0表示禁用。--grpc-keepalive-timeout 20s 在关闭无响应连接前的额外等待时间0表示禁用。--socket-reuse-port false 启用后允许监听器设置SO_REUSEPORT选项支持对已使用端口的重新绑定。--socket-reuse-address false 启用后允许监听器设置SO_REUSEADDR选项支持绑定处于TIME_WAIT状态的地址。
2、Etcd集群引导和发现配置参数
--initial-advertise-peer-urls http://localhost:2380 向集群中其他成员宣传的该节点的对等节点URL列表。--initial-cluster defaulthttp://localhost:2380 引导时的初始集群配置。--initial-cluster-state new 初始集群状态new表示新集群existing表示已有集群。--initial-cluster-token etcd-cluster 引导期间用于etcd集群的初始集群令牌。 指定该令牌可防止在运行多个集群时出现意外的跨集群交互。--advertise-client-urls http://localhost:2379 向外部公开宣传的该节点的客户端URL列表。 这些URL应可供与etcd集群通信的机器访问etcd客户端库会解析这些URL以连接到集群。--discovery 用于集群引导的发现URL。--discovery-fallback proxy 当发现服务失败时的预期行为exit或proxy。 proxy仅支持v2 API。--discovery-proxy 访问发现服务时使用的HTTP代理。--discovery-srv 用于引导集群的DNS SRV域。--discovery-srv-name 引导时查询的DNS SRV名称后缀。--strict-reconfig-check true 拒绝可能导致法定人数丧失的重新配置请求。--pre-vote true 启用Raft预投票算法以防止隔离的节点重新加入集群时引发中断。--auto-compaction-retention 0 自动压缩的保留时长。0表示禁用自动压缩。--auto-compaction-mode periodic 解释auto-compaction-retention的模式可选periodic或revision。 periodic表示基于时间的保留默认单位为小时如5m表示5分钟。 revision表示基于修订号的保留。--enable-v2 false 接受etcd V2客户端请求。已被弃用并将在v3.6中移除。--v2-deprecation not-yet v2存储的弃用阶段。允许选择更高的兼容模式。支持的值 not-yet // 如果v2存储有有效内容发出警告v3.5默认值。 write-only // 不允许自定义v2状态计划在v3.6中默认启用。 write-only-drop-data // 自定义的v2状态将被删除 gone // v2存储不再维护计划在v3.7中成为默认值。
3、Etcd安全和TLS配置
--cert-file 客户端服务器TLS证书文件的路径。--key-file 客户端服务器TLS密钥文件的路径。--client-cert-auth false 启用客户端证书认证。 建议启用客户端证书认证以防止未经认证的客户端攻击例如CVE-2023-44487特别是在将etcd作为公共服务运行时。--client-crl-file 客户端证书吊销列表文件的路径。--client-cert-allowed-hostname 客户端证书认证允许的TLS主机名。--trusted-ca-file 客户端服务器TLS受信任的CA证书文件路径。 设置此参数时无论--client-cert-auth的值如何都会自动启用客户端证书认证。--auto-tls false 使用自动生成的证书进行客户端TLS认证。--peer-cert-file 对等节点服务器TLS证书文件的路径。--peer-key-file 对等节点服务器TLS密钥文件的路径。--peer-client-cert-auth false 启用对等节点客户端证书认证。 建议启用对等节点证书认证以防止未经认证的伪造对等节点攻击例如CVE-2023-44487。--peer-trusted-ca-file 对等节点服务器TLS受信任的CA文件路径。--peer-cert-allowed-cn 连接到对等端点时客户端证书所需的CN通用名称。--peer-cert-allowed-hostname 对等认证中允许的TLS主机名。--peer-auto-tls false 如果未提供--peer-key-file和--peer-cert-file则使用自生成证书进行对等TLS认证。--self-signed-cert-validity 1 自动生成的客户端和对等节点证书的有效期单位为年默认值为1。--peer-crl-file 对等节点证书吊销列表文件的路径。--cipher-suites 支持的TLS密码套件列表客户端/服务器和对等节点之间使用空值将由Go自动填充。--cors * CORS跨域资源共享允许的源列表逗号分隔空值或*表示允许所有源。--host-whitelist * 如果服务器不安全HTTP客户端请求中可接受的主机名空值或*表示允许所有主机。--tls-min-version TLS1.2 etcd支持的最低TLS版本。--tls-max-version etcd支持的最高TLS版本空值将由Go自动填充。 4、etcd认证相关参数
--auth-token simple 指定v3认证的令牌类型及特定选项特别适用于JWT。格式为type,var1val1,var2val2,...。 可选类型simple或jwt。 可用变量 - sign-method: 指定JWT的签名方法可选值为 ES256、ES384、ES512、HS256、HS384、HS512、RS256、RS384、RS512、PS256、PS384 或 PS512。 - pub-key: 指定用于验证JWT的公钥路径。 - priv-key: 指定用于签署JWT的私钥路径。 - ttl: 指定JWT令牌的生存时间TTL。--bcrypt-cost 10 指定用于哈希认证密码的bcrypt算法的成本/强度。有效值为4到31之间的整数值越高计算成本越高安全性越强。--auth-token-ttl 300 认证令牌的生存时间TTL单位为秒。 5、etcd性能监控与指标
--enable-pprof false 是否启用通过HTTP服务器提供的运行时性能分析数据。 地址为客户端URL加上/debug/pprof/。--metrics basic 设置导出指标的详细程度。 可选值 - basic: 导出基本指标。 - extensive: 包括服务器端gRPC直方图指标在内的详细指标。--listen-metrics-urls 用于监听指标和健康检查端点的URL列表。6、etcd日志配置
--logger zap 当前仅支持使用Zap进行结构化日志记录。--log-outputs default 指定日志输出目标。 - 可以使用stdout或stderr来跳过journald日志即使在systemd下运行。 - 也可以提供逗号分隔的输出目标列表。--log-level info 配置日志级别。支持的级别包括 - debug: 调试信息。 - info: 普通信息。 - warn: 警告信息。 - error: 错误信息。 - panic: 崩溃信息。 - fatal: 致命错误信息。--enable-log-rotation false 是否启用日志轮转仅适用于单个日志输出文件。--log-rotation-config-json {maxsize: 100, maxage: 0, maxbackups: 0, localtime: false, compress: false} 配置日志轮转启用时生效。 - maxsize: 单个日志文件的最大大小单位MB。 - maxage: 日志文件的最大保留天数0表示不限制。 - maxbackups: 最大备份数量0表示不限制。 - localtime: 是否使用本地时间。 - compress: 是否启用gzip压缩。
Etcd 启动重要参数汇总表
分类参数作用备注节点配置--name设置节点名称必须唯一。确保集群中节点识别准确。--data-dir指定数据存储目录。用于持久化存储etcd数据。集群配置--initial-advertise-peer-urls设置对等节点的广告URL。集群内节点间通信地址。--listen-peer-urls设置对等节点的监听URL。监听集群内部通信流量。--listen-client-urls设置客户端访问的监听URL。客户端连接etcd的入口。--initial-cluster配置初始集群成员列表。启动新集群时必需。--initial-cluster-state指定集群状态new或existing。新建或加入已有集群时使用。--initial-cluster-token设置集群唯一标识符。防止跨集群的意外交互。安全配置--cert-file / --key-file设置TLS证书和密钥文件。启用加密通信。--client-cert-auth启用客户端证书认证。增强安全性防止未经认证访问。--trusted-ca-file设置受信任的CA证书路径。验证客户端和对等节点证书。--peer-client-cert-auth启用对等节点证书认证。提高集群安全性。--peer-trusted-ca-file设置对等节点的CA证书路径。对等通信的信任链验证。性能调优--heartbeat-interval设置心跳间隔时间毫秒。影响集群同步速度和稳定性。--election-timeout设置选举超时时间毫秒。影响Raft选举速度。--snapshot-count设置触发快照的事务数。控制快照频率平衡性能与存储。--max-txn-ops设置每个事务允许的最大操作数。防止事务过大影响性能。认证与访问控制--auth-token指定认证令牌类型。支持simple和jwt类型。--auth-token-ttl设置认证令牌的有效时间秒。控制令牌过期时间。日志管理--logger设置日志记录方式。当前仅支持zap。--log-level设置日志级别。支持debug、info、warn等。--log-outputs设置日志输出目标。可指定stdout、stderr或文件路径。调试与监控--enable-pprof启用性能分析。通过/debug/pprof/访问性能数据。--metrics设置导出指标的详细程度。支持basic和extensive。
说明
节点与集群配置 是确保集群正常启动和运行的核心尤其在多节点部署时尤为重要。安全配置 则涉及到数据和通信的加密与认证建议在生产环境中务必启用。性能调优 参数影响etcd的资源使用与集群稳定性需要根据具体需求进行调整。日志与监控 有助于故障排查和性能优化。
四、常用/基本操作
1. 连接到etcd集群
--endpoints指定要连接的etcd集群的端点地址。可以指定多个用逗号分隔。
etcdctl --endpoints127.0.0.1:2379,127.0.0.2:2379 get /--cert-file, --key-file, --ca-file用于TLS认证的证书文件、密钥文件和CA文件。
etcdctl --endpointshttps://127.0.0.1:2379 --cert-filecert.pem --key-filekey.pem --ca-fileca.pem get /2. 基本操作
get获取一个或多个键的值。
etcdctl get key [range_end]put设置或更新一个键值对。
etcdctl put key valuedel删除一个或多个键值对。
etcdctl del key [range_end]watch监视一个或多个键的变化。
etcdctl watch key3. 高级操作
--prefix与get、del等命令一起使用操作以给定前缀开头的所有键。
etcdctl get --prefix /myapp/--limit限制返回的键值对数量。
etcdctl get --limit10 /myapp/--rev指定要获取的特定版本的数据。
etcdctl get --rev10 /myapp/config--keys-only只返回键不返回值。
etcdctl get --keys-only /myapp/--sort-by按指定的字段排序返回结果如key、version、create、mod。
etcdctl get --sort-bykey /myapp/4. 集群管理 member管理集群成员。 list列出所有集群成员。
etcdctl member listadd添加新成员。
etcdctl member add member_nameremove移除成员。
etcdctl member remove member_idsnapshot创建etcd数据的快照。
etcdctl snapshot save snapshot.db5. 其他有用选项
--debug启用调试模式提供更详细的输出。
etcdctl --debug get /myapp/config--timeout设置操作的超时时间秒。
etcdctl --timeout5 get /myapp/config--hex以十六进制格式显示键和值。
etcdctl --hex get /myapp/config五、遇到的问题总结
1、将镜像推到内网镜像仓库时报错 [zhao****GZ***-PM153160 ~]$ docker push 10.130.***.106:30089/library/zookeeper:3.9.3
The push refers to repository [10.130.153.***:30089/library/zookeeper]
Get https://10.130.153.***:30089/v2/: x509: cannot validate certificate for 10.130.153.*** because it doesnt contain any IP SANs 解决换成域名 [zhao***GZ***-PM153160 ~]$ docker login harbor.***.com:30089
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /home/zhaozheng/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential-storesLogin Succeeded 2、启动报failed to start member
etcdserver: start member f3e5d1ce6bfb3bd6 failed to start member hello on ID f3e5d1ce6bfb3bd6, the member ID is generated from URL and seems conflicting with other members, make sure the URL is unique and this is not a re-start script for removing member
报错问题解释
这个错误通常发生在尝试以相同的URL重新启动一个已经在集群中的ETCD节点时。当你在集群中已经有了一个具有相同URL的成员时再次尝试使用相同的URL初始化或启动一个成员会导致冲突。
解决方法 1、检查现有成员首先检查当前集群中的成员是否已经存在具有相同URL的成员。 2、删除冲突的成员如果存在冲突你需要从集群中删除该成员。可以使用etcdctl工具来移除成员。例如
# 首先确保etcdctl指向正确的etcd服务器
export ETCDCTL_API3
etcdctl --endpointshttp://localhost:2379 member list
etcdctl --endpointshttp://localhost:2379 member remove member-id
3、重新启动容器在删除冲突成员后重新启动你的ETCD容器。确保使用不同的URL或端口来避免未来的冲突。
docker run -d --name etcd-server \-p 2379:2379 -p 2381:2380 \ # 注意端口号的变化以避免冲突quay.io/coreos/etcd:latest etcd --name s1 --initial-advertise-peer-urls http://localhost:2381 --listen-peer-urls http://0.0.0.0:2381 --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://localhost:2379 --initial-cluster-token etcd-cluster-1 --initial-cluster s1http://localhost:2381 --initial-cluster-state new 六、可能会用到的其他命令
-创建卷 docker volume create etcd_data -验证卷 docker volume ls -使用卷 docker run --name some-redis -v etcd_data:/data -d etcd:tag 这种docker卷作者没有用过(实际数据存储位置是docker默认数据目录默认数据目录可以在docker配置文件中配置修改)有兴趣的可自行尝试 如果喜欢我的文章请帮我点赞谢谢