python -m http.server 8686
1.etcd内存问题
- 内存尽量最够大
- etcd 内存使用是使用内存的两倍。一份是内存,一份是cache。比如1G的数据会使用1G的内存,1G的cache
- etcd 数据删除,只会缓慢的删除数据,不会立马删除,尤其是cache
- etcd所在的操作系统的内存使用完,etcd直接不可用,不管在怎么压缩处理,一直不可用
- etcd 内存与磁盘自动整理 在配置文件里面加入这两个配置参数
# 每小时整理一次
auto-compaction-retention: "1"
# 整理的类型
auto-compaction-mode: periodic
# 每小时整理一次
auto-compaction-retention: "1"
# 整理的类型
auto-compaction-mode: periodic
- 内存报警,建议是使用内存达到50%就报警,防止异常情况造成内存暴增
quota-backend-bytes: 15032385536
quota-backend-bytes: 15032385536
- etcd 快照配置 在配置文件里面加入这两个配置参数
# 配置snapshots保留份数
max-snapshots: 5
# 配置 wals 保留份数
max-wals: 5
# 配置snapshots保留份数
max-snapshots: 5
# 配置 wals 保留份数
max-wals: 5
配置文件参数介绍
参数 | 说明 | 配置 |
---|---|---|
ETCD_NAME | 名字 | ETCD_NAME=node-1 |
ETCD_DATA_DIR | 数据位置 | ETCD_DATA_DIR=/var/lib/etcd |
ETCD_LISTEN_CLIENT_URLS | 监听客户端地址 | ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 |
ETCD_ADVERTISE_CLIENT_URLS | 通知 客户端地址 | |
集群配置
参数 | 说明 |
---|---|
--name | etcd集群中的节点名,这里可以随意,可区分且不重复就行 |
--listen-peer-urls | 监听的用于节点之间通信的url,可监听多个,集群内部将通过这些url进行数据交互(如选举,数据同步等) |
--initial-advertise-peer-urls | 建议用于节点之间通信的url,节点间将以该值进行通信 |
--listen-client-urls | 监听的用于客户端通信的url,同样可以监听多个 |
--advertise-client-urls | 建议使用的客户端通信url,该值用于etcd代理或etcd成员与etcd节点通信 |
--initial-cluster-token etcd-cluster-1 | 节点的token值,设置该值后集群将生成唯一id,并为每个节点也生成唯一id,当使用相同配置文件再启动一个集群时,只要该token值不一样 |
--initial-cluster | 也就是集群中所有的initial-advertise-peer-urls 的合集 |
--initial-cluster-state new | 新建集群的标志,初始化状态使用 new,建立之后改此值为 existing |
--snapshot-count | 指定有多少事务(transaction)被提交时,触发截取快照保存到磁盘 |
--heartbeat-interval | leader 多久发送一次心跳到 followers。默认值是 100ms |
--eletion-timeout | 重新投票的超时时间,如果 follow 在该时间间隔没有收到心跳包,会触发重新投票,默认为 1000 ms |
--name:方便理解的节点名称,默认为 default,在集群中应该保持唯一,可以使用 hostname
--data-dir:服务运行数据保存的路径,默认为 ${name}.etcd
--snapshot-count:指定有多少事务(transaction)被提交时,触发截取快照保存到磁盘
--heartbeat-interval:leader 多久发送一次心跳到 followers。默认值是 100ms
--eletion-timeout:重新投票的超时时间,如果 follow 在该时间间隔没有收到心跳包,会触发重新投票,默认为 1000 ms
--listen-peer-urls:和集群内其他节点通信的地址, http://ip:2380,如果有多个,使用逗号分隔。需要所有节点都能够访问,所以不要使用 localhost!
--listen-client-urls:节点与客户端通信的地址,比如 http://ip:2379,http://127.0.0.1:2379,客户端会连接到这里和 etcd 交互
--advertise-client-urls:对外通告的该节点客户端监听地址,http://ip:2379,这个值会通知集群中其他节点
--initial-advertise-peer-urls:节点与其他节点通信的地址,会通告给集群的其他成员。这个地址用来传输集群数据。因此这个地址必须是可以被集群中所有的成员访问http://ip:2380
--initial-cluster:集群中所有节点的信息,格式为 node1=http://ip1:2380,node2=http://ip2:2380,…。注意:这里的 node1 是节点的 --name 指定的名字;后面的 ip1:2380 是 --initial-advertise-peer-urls 指定的值
--initial-cluster-state:新建集群的时候,这个值为 new;假如已经存在的集群,这个值为 existing
--initial-cluster-token:创建集群的 token,这个值每个集群保持唯一。这样的话,如果你要重新创建集群,即使配置和之前一样,也会再次生成新的集群和节点 uuid;否则会导致多个集群之间的冲突,造成未知的错误
所有以--initial 开头的配置都是在 bootstrap(引导) 集群的时候才会用到,后续节点重启时会被忽略。
ssl配置
#[security]
#如果要求SSL连接etcd的话,把下面的配置启用,并修改文件路径
ETCD_CERT_FILE="/etc/ssl/client.pem"
ETCD_KEY_FILE="/etc/ssl/client-key.pem"
ETCD_CLIENT_CERT_AUTH="true"
ETCD_TRUSTED_CA_FILE="/etc/ssl/ca.pem"
ETCD_AUTO_TLS="true"
ETCD_PEER_CERT_FILE="/etc/ssl/member.pem"
ETCD_PEER_KEY_FILE="/etc/ssl/member-key.pem"
ETCD_PEER_CLIENT_CERT_AUTH="false"
ETCD_PEER_TRUSTED_CA_FILE="/etc/ssl/ca.pem"
ETCD_PEER_AUTO_TLS="true"
#[security]
#如果要求SSL连接etcd的话,把下面的配置启用,并修改文件路径
ETCD_CERT_FILE="/etc/ssl/client.pem"
ETCD_KEY_FILE="/etc/ssl/client-key.pem"
ETCD_CLIENT_CERT_AUTH="true"
ETCD_TRUSTED_CA_FILE="/etc/ssl/ca.pem"
ETCD_AUTO_TLS="true"
ETCD_PEER_CERT_FILE="/etc/ssl/member.pem"
ETCD_PEER_KEY_FILE="/etc/ssl/member-key.pem"
ETCD_PEER_CLIENT_CERT_AUTH="false"
ETCD_PEER_TRUSTED_CA_FILE="/etc/ssl/ca.pem"
ETCD_PEER_AUTO_TLS="true"
默认配置运行etcd,监听本地的2379端口,用于与client端交互,监听2380用于etcd内部交互