目的
安装 etcd 3.x 集群
通过 python 写入 etcd key-value
通过 golang 对 etcd key-value 进行遍历
意图
用于 open falcon 改造
修改 open falcon transfer 程序
接收 falcon-agent agent.alived 后, 把对应 endpooine 写入 etcd 并命名为 key , timestamp 为 value
取代 open-falcon nodata service
压测计划
etcd 中大约有 30K(当前需求) , 60K (未来扩展) 两中数据量
key 为当前生产环境主机名 vaue 为 timestamp
用 uuid 替换主机名进行压测, 先创建两个文件, 分别存放 30k, 60K UUID 备用
压测方法由于数据写入并非同一秒内完成,因此不对写入进行压测
主要对遍历读 uuid 并检测 timestamp 进行压测
方案一
golang 单进程遍历所有 etcd 30K
检测需要时间
如果时间过程, 则采用方案二
方案二
因为 24 CORE CPU 因此暂时使用 10 GOLANG 进程并发最大
对主机名进行 md5 计算,得到 md5 值
由于主机名不变情况下 md5 得到的值一致
取 md5 第一个字符, 并存放入对应目录
目的用于打散每个目录存放 key 数量
机器
ipaddr | hostname |
---|---|
10.199.175.91 | etcd1 |
10.199.217.41 | etcd2 |
10.199.206.85 | etcd3 |
参考
etcd 部署方式
下载 etcd binary
通过 gitlab 进行下载 , 在左下选择需要的版本
https://github.com/etcd-io/etcd/releases
下载 ssl 创建工具
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
etcd 部署过程
1 创建子目录
mkdir /apps/svr/etcd/bin /apps/conf/etcd /apps/conf/etcd/ssl /apps/dat/etcd/default.etcd/ -p
2 文件位置
/apps/dat/etcd/default.etcd/ ( 用于存放 etcd 数据目录 )
/apps/conf/etcd
|-- etcd.conf ( etcd 服务器 配置文件)
`-- ssl
|-- ca-config.json ( etcd 服务器 ca 配置 )
|-- ca-crs.json ( etcd 服务器 ca cert 配置 )
`-- etcd-csr.json ( etcd 客户端连接 配置 )
/apps/svr/etcd/
`-- bin
|-- cfssl (ssl 创建工具)
|-- cfssl-certinfo (ssl 创建工具)
|-- cfssljson (ssl 创建工具)
|-- etcd ( etcd 服务端工具 )
`-- etcdctl ( etcd 客户端工具 )
3 创建CA证书
参考 ca-config.json
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"server": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth" <- 这个必须存在,否则包版本 ETCD 服务器之前也无法完成 TLS 握手
]
},
"client": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"client auth"