【etcd】etcd单机安装及简单操作

https://blog.csdn.net/Mr_XiMu/article/details/125026635

https://blog.csdn.net/m0_73192864/article/details/136509244

etcd在生产环境中一般为集群方式部署

etcd使用的2个默认端口号:2379和2380

2379:用于客户端通信(类似于sqlserver的1433,mysql的3306)

2380:用于与集群中的Peer通信

因为etcd是go语言编写的,安装只需要下载对应的二进制文件,并放到合适的路径就行

https://github.com/etcd-io/etcd/tags

安装方式一,用官方提供的脚本(没成功)

https://github.com/etcd-io/etcd/releases/tag/v3.4.33

https://blog.csdn.net/Mr_XiMu/article/details/125026635

java 复制代码
mkdir /opt/soft
mkdir /opt/soft/etcd/ && cd  /opt/soft/etcd/

vim etcd

java 复制代码
ETCD_VER=v3.5.13

# choose either URL 
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}

rm -f /opt/soft/etcd/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /opt/soft/etcd/etcd-download-test && mkdir -p /opt/soft/etcd/etcd-download-test

curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /opt/soft/etcd/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar -zxvf /opt/soft/etcd/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /opt/soft/etcd/etcd-download-test --strip-components=1
rm -f /opt/soft/etcd/etcd-${ETCD_VER}-linux-amd64.tar.gz

#查看安装是否成功的相关命令
/opt/soft/etcd/etcd-download-test/etcd --version
/opt/soft/etcd/etcd-download-test/etcdctl version
/opt/soft/etcd/etcd-download-test/etcdutl version
java 复制代码
chmod 777 etcd
# start a local etcd server
./etcd

# write,read to etcd
/tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
/tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo

应该是download压缩包的问题,不纠结的去找了。

方式二,逐个执行官方提供脚本(成功)

java 复制代码
mkdir /usr/local/mytools && cd /usr/local/mytools

wget https://github.com/etcd-io/etcd/releases/download/v3.4.3/etcd-v3.4.3-linux-amd64.tar.gz 

tar xzvf etcd-v3.4.3-linux-amd64.tar.gz

cd etcd-v3.4.3-linux-amd64 && ls

cp etcd etcdctl /usr/local/bin
# etcd是server端,etcdctl是客户端
# 将这etcd和etcdctl两个二进制文件复制到/usr/local/bin目录, 这样系统中可以直接调用etcd/etcdctl这两个程序

etcd --version
etcdctl version

方式三,docker安装(未测试)

java 复制代码
rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
  docker rmi gcr.io/etcd-development/etcd:v3.4.33 || true && \
  docker run \
  -p 2379:2379 \
  -p 2380:2380 \
  --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
  --name etcd-gcr-v3.4.33 \
  gcr.io/etcd-development/etcd:v3.4.33 \
  /usr/local/bin/etcd \
  --name s1 \
  --data-dir /etcd-data \
  --listen-client-urls http://0.0.0.0:2379 \
  --advertise-client-urls http://0.0.0.0:2379 \
  --listen-peer-urls http://0.0.0.0:2380 \
  --initial-advertise-peer-urls http://0.0.0.0:2380 \
  --initial-cluster s1=http://0.0.0.0:2380 \
  --initial-cluster-token tkn \
  --initial-cluster-state new \
  --log-level info \
  --logger zap \
  --log-outputs stderr

docker exec etcd-gcr-v3.4.33  /usr/local/bin/etcd --version
docker exec etcd-gcr-v3.4.33  /usr/local/bin/etcdctl version
docker exec etcd-gcr-v3.4.33  /usr/local/bin/etcdctl endpoint health
docker exec etcd-gcr-v3.4.33  /usr/local/bin/etcdctl put foo bar
docker exec etcd-gcr-v3.4.33  /usr/local/bin/etcdctl get foo

简单操作

启动etcd服务端 etcd

java 复制代码
 1.name表示节点名称,默认为default。
 2.data-dir 保存日志和快照的目录,默认为当前工作目录default.etcd/目录下。
 3.在http://localhost:2380和集群中其他节点通信。
 4.在http://localhost:2379提供客户端交互。
 5.heartbeat为100ms,该参数的作用是leader多久发送一次心跳到followers,默认值是100ms。
 6.election为1000ms,该参数的作用是重新投票的超时时间,如果follow在该时间间隔没有收到心跳包,会触发重新投票,默认为1000ms。
 7.snapshot count为10000,该参数的作用是指定有多少事务被提交时,触发截取快照保存到磁盘。
 8.集群和每个节点都会生成一个uuid。
 9.启动的时候会运行raft,选举出leader

客户端读写数据

java 复制代码
etcdctl --endpoints=localhost:2379 put foo bar
etcdctl --endpoints=localhost:2379 get foo

删除数据

java 复制代码
# 清空数据
etcdctl del / --prefix
 
#删除所有/test前缀的节点
etcdctl del /test --prefix

监听

java 复制代码
#1. 增加一个key,值为hello(客户端窗口1)
etcdctl put key1 "hello"
 
#2. 打开一个新的客户端窗口2,监听key1的变化
etcdctl watch key1
 
#3. 回到窗口1,向key1 中删除原有的值put新值为hello work
etcdctl put key1 "hello work"
 
# 4. 此时可以在窗口2中看到监听输出
 
 
# 查看版本信息
curl http://127.0.0.1:2379/version

为etcd创建服务

java 复制代码
mkdir -p /var/lib/etcd/ && mkdir -p /etc/etcd/
vim /etc/etcd/etcd.conf
java 复制代码
# 节点名称
ETCD_NAME="etcd0"
# 指定数据文件存放位置
ETCD_DATA_DIR="/var/lib/etcd/"
java 复制代码
vim /etc/systemd/system/etcd.service
java 复制代码
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
 
[Service]
User=root
Type=notify
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
 
ExecStart=/usr/local/bin/etcd
Restart=on-failure
LimitNOFILE=65536
 
[Install]
WantedBy=multi-user.target
 

重新加载systemd服务

java 复制代码
systemctl daemon-reload

记得要把之前的etcd进程给kill掉

java 复制代码
 ps -ef | grep etcd
 kill -9 [etcd进程对应pid]
java 复制代码
systemctl enable etcd   #开机自启动
systemctl status etcd
systemctl start etcd
systemctl stop etcd
systemctl restart etcd
相关推荐
MM_MS5 分钟前
Halcon控制语句
java·大数据·前端·数据库·人工智能·算法·视觉检测
薛定谔的猫19828 分钟前
LlamaIndex(三) LlamaHub工具集
数据库·mysql·llamahub
小画家~20 分钟前
第四十六: channel 高级使用
java·前端·数据库
晴天¥25 分钟前
了解Oracle中的体系结构
数据库
DemonAvenger31 分钟前
Redis慢查询分析与优化:性能瓶颈排查实战指南
数据库·redis·性能优化
Li_yizYa32 分钟前
Redis-常见数据类型及应用场景
java·数据库·redis
瀚高PG实验室1 小时前
逻辑导入导出(pg_dump/pg_restore)用法2-导入到不同的schema或tablespace
数据库·瀚高数据库
whyfail1 小时前
前端数据存储新选择:IndexedDB与Dexie.js技术指南
前端·javascript·数据库
煎蛋学姐1 小时前
SSM校园快递系统q9061(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·开题报告·java 开发·校园信息化·ssm 框架
元亓亓亓1 小时前
考研408--操作系统--day11--文件管理&逻辑物理结构&目录&存储空间管理
数据库·考研·文件管理·408