[转] etcd 搭建与使用
[From] https://blog.csdn.net/ShouTouDeXingFu/article/details/81167302
etcd
1、下载etcd二进制文件包
https://github.com/coreos/etcd/releases/download/v3.1.3/etcd-v3.1.3-linux-amd64.tar.gz
2、解压缩etcd-v3.1.3-linux-amd64.tar.gz,将其中的etcd和etcdctl两个可执行文件复制到各节点的/usr/bin目录
3、在各节点创建etcd的数据目录
mkdir -p /data/etcd
mkdir /etc/etcd
4、在每个节点上创建etcd的systemd unit文件/usr/lib/systemd/system/etcd.service 和 /etc/etcd/etcd.conf
etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
Documentation=https://github.com/coreos
[Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd \
--name ${ETCD_NAME} \
--cert-file=${ETCD_CERT_FILE} \
--key-file=${ETCD_KEY_FILE} \
--peer-cert-file=${ETCD_PEER_CERT_FILE} \
--peer-key-file=${ETCD_PEER_KEY_FILE} \
--trusted-ca-file=${ETCD_TRUSTED_CA_FILE} \
--peer-trusted-ca-file=${ETCD_PEER_TRUSTED_CA_FILE} \
--initial-advertise-peer-urls ${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
--listen-peer-urls ${ETCD_LISTEN_PEER_URLS} \
--listen-client-urls ${ETCD_LISTEN_CLIENT_URLS} \
--advertise-client-urls ${ETCD_ADVERTISE_CLIENT_URLS} \
--initial-cluster-token ${ETCD_INITIAL_CLUSTER_TOKEN} \
--initial-cluster ${ETCD_INITIAL_CLUSTER} \
--initial-cluster-state ${ETCD_INITIAL_CLUSTER_STATE} \
--data-dir=${ETCD_DATA_DIR}
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
etcd.conf etcd集群中配置文件标红的配置不一样,拷贝出来修改即可
ETCD_NAME="etcd1" #20180108 by lys
#ETCD_CERT_FILE="/etc/k8s/kubernetes.pem"
#ETCD_KEY_FILE="/etc/k8s/kubernetes-key.pem"
#ETCD_PEER_CERT_FILE="/etc/k8s/kubernetes.pem"
#ETCD_PEER_KEY_FILE="/etc/k8s/kubernetes-key.pem"
#ETCD_TRUSTED_CA_FILE="/etc/k8s/ca.pem"
#ETCD_PEER_TRUSTED_CA_FILE="/etc/k8s/ca.pem" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://etcd1.server.biz:2380"
ETCD_LISTEN_PEER_URLS="http://etcd1.server.biz:2380"
ETCD_LISTEN_CLIENT_URLS="http://etcd1.server.biz:2379,http://127.0.0.1:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://etcd1.server.biz:2379" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-0"
ETCD_INITIAL_CLUSTER="etcd1=http://etcd1.server.biz:2380,etcd2=http://etcd2.server.biz:2380,etcd3=http://etcd3.server.biz:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_DATA_DIR="/data/etcd"
配置信息说明
上面在启动参数中指定了etcd的工作目录和数据目录是/data/etcd
--cert-file和--key-file分别指定etcd的公钥证书和私钥
--peer-cert-file和--peer-key-file分别指定了etcd的Peers通信的公钥证书和私钥。
--trusted-ca-file指定了客户端的CA证书
--peer-trusted-ca-file指定了Peers的CA证书
--initial-cluster-state new表示这是新初始化集群,--name指定的参数值必须在--initial-cluster中
5、启动etcd
systemctl daemon-reload
systemctl enable etcd
systemctl start etcd
systemctl status etcd
6、检查集群是否健康,在任一节点执行
export ETCDCTL_API=3
etcdctl --endpoints=http://etcd2.server.biz:2379,http://etcd1.server.biz:2379,http://etcd3.server.biz:2379 member list
etcdctl --endpoints=http://etcd2.server.biz:2379,http://etcd1.server.biz:2379,http://etcd3.server.biz:2379 endpoint status -w table
etcdctl --endpoints=http://etcd2.server.biz:2379,http://etcd1.server.biz:2379,http://etcd3.server.biz:2379 endpoint health -w table
sudo journalctl -u etcd.service -l --no-pager|less 查看日志
7、etcd集群成员扩容增加
etcdctl --endpoints=http://etcd2.server.biz:2379,http://etcd1.server.biz:2379,http://etcd3.server.biz:2379 member add etcd4 --peer-urls=http://etcd4.server.biz:2380
Member 5b316fb0b94e59f8 added to cluster f0364a493c8924dc
ETCD_NAME="etcd4"
ETCD_INITIAL_CLUSTER="etcd1=http://etcd1.server.biz:2380,etcd3=http://etcd3.server.biz:2380,etcd2=http://etcd2.server.biz:2380,etcd4=http://etcd4.server.biz:2380"
ETCD_INITIAL_CLUSTER_STATE="existing"
此时,集群会为目标节点生成一个唯一的member ID
注意:新节点加入集群是作为一个全新的节点加入,如果data-dir有数据,etcd启动时会读取己经存在的数据,启动时仍然用的老member ID,也会造成,集群不无法加入,所以一定要清空新节点的data-dir
新扩容的etcd机器的etcd.conf中配置修改为 ETCD_INITIAL_CLUSTER_STATE="existing"
删除 rm-rf /data/etcd/*
启动etcd服务即可
常见问题
1) systemd: Failed at step CHDIR spawning /usr/bin/etcd: No such file or directory
通过查看ll /usr/bin/etcd 启动文件是存在的,后来发现etcd.service里面指定了WorkingDirectory=/var/lib/etcd/ 没有创建对应目录导致,创建了/var/lib/etcd/ 目录应用启动成功
2)etcd 添加集群成员报错
Jul 23 16:58:25 bjzw_82_137 etcd: failed to process raft message (raft: stopped)
Jul 23 16:58:25 bjzw_82_137 etcd: failed to find member c79c567db2d16966 in cluster f0364a493c8924dc
Jul 23 16:58:25 bjzw_82_137 etcd: failed to find member c79c567db2d16966 in cluster f0364a493c8924dc
Jul 23 16:58:25 bjzw_82_137 etcd: failed to find member b13dd19d11c8d25d in cluster f0364a493c8924dc
Jul 23 16:58:25 bjzw_82_137 etcd: failed to find member b13dd19d11c8d25d in cluster f0364a493c8924dc
需要将etcd.conf中的配置修改为
ETCD_INITIAL_CLUSTER_STATE="existing"
---------------------
作者:起航90
来源:CSDN
原文:https://blog.csdn.net/ShouTouDeXingFu/article/details/81167302
版权声明:本文为博主原创文章,转载请附上博文链接!
[转] etcd 搭建与使用的更多相关文章
- 转: centos7.5 下 coredns+etcd搭建DNS服务器
coredns简介 CoreDNS是一个DNS服务器,和Caddy Server具有相同的模型:它链接插件.CoreDNS是云本土计算基金会启动阶段项目. CoreDNS是SkyDNS的继任者. Sk ...
- centos7.5下coredns+etcd搭建DNS服务器
coredns简介 安装etcd 安装coredns 设置域名解析 A记录 AAAA记录 CNAME记录 SRV记录 TXT记录 coredns简介 CoreDNS是一个DNS服务器,和Caddy S ...
- 阿里云手动搭建k8s搭建中遇到的问题解决(持续更新)
ETCD搭建 systemd启动etcd服务的时候出现错误:Failed at step CHDIR spawning /usr/bin/etcd: No such file or directory ...
- confd+etcd实现高可用自动发现
Confd是什么 Confd是一个轻量级的配置管理工具. 通过查询后端存储,结合配置模板引擎,保持本地配置最新,同时具备定期探测机制,配置变更自动reload. 对应的后端存储可以是etcd,redi ...
- Go语言学习之12 etcd、contex、kafka消费实例、logagent
本节内容: 1. etcd介绍与使用 2. ElastcSearch介绍与使用 1. etcd介绍与使用 概念:高可用的分布式key-value存储,可以使用配置共享和服务发现 ...
- GO开发:etcd用法
etcd是什么? A highly-available key value store for shared configuration and service discovery.是一个键值存储仓库 ...
- Go实现海量日志收集系统(三)
再次整理了一下这个日志收集系统的框,如下图 这次要实现的代码的整体逻辑为: 完整代码地址为: https://github.com/pythonsite/logagent etcd介绍 高可用的分布式 ...
- kubernetes 源码安装部署 1.12
一. 前期准备 参考文档 https://jimmysong.io/kubernetes-handbook/practice/create-tls-and-secret-key.html 1. 安装g ...
- 华为云PB级数据库GaussDB(for Redis)揭秘第七期:高斯Redis与强一致
摘要:在KV数据库领域,"强一致性"不仅是一个技术名词,它更是业务与运维的重要需求. 清明刚过,五一假期就要来了.大好春光,不如去婺源看油菜花吧!小云迅速打开APP刷出余票2张,赶 ...
随机推荐
- stl源码分析de练习
// StlTest1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <vector> #include & ...
- HTML5 本地存储+layer弹层组件制作记事本
什么是 HTML5 Web 存储? 使用HTML5可以在本地存储用户的浏览数据. 早些时候,本地存储使用的是 cookie.但是Web 存储需要更加的安全与快速. 这些数据不会被保存在服务器上,但是这 ...
- iconv用法解读
iconv是一个字符集转换函数,原型为: size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, ...
- oracle 索引的分类
1. B树索引(默认索引,保存讲过排序过的索引列和对应的rowid值) 1)说明: 1.oracle中最常用的索引:B树索引就是一颗二叉树:叶子节点(双向链表)包含索引列和指向表中每个匹配行的ROWI ...
- 12、Docker的网络--bridge
单机网络 Bridge Network Host Network None Network 多机网络 Overlay Network 12.1 网络命名空间 启动一个容器 docker run - ...
- 5、Docker架构和底层技术
5.1 Docker Platform Docker提供了一个开发,打包,运行APP的平台 把APP和底层infrastructure隔离开来 5.2 Docker Engine 后台进程(docke ...
- MSP430 G2553 Launchpad实现电容测量
一.基本原理 对于Source-Free RC电路,其电容放电的特性可以描述为: 其中V0是电容的初始电压,t是放电时间,R是串接的电阻阻值,C是电容值,v(t)是t时刻电容上的电压.因此,若已知V0 ...
- PostgreSQL 区域设置
安装PostgreSQL 10.3 windows版本时区域请选择"default locale",安装成功后输入命令: show lc_ctype; show lc_collat ...
- PL/SQL控制语句(二、循环控制语句)
循环允许重复执行代码直到循环条件匹配,PL/SQL中循环主要有LOOP语句和EXIT语句两种,这两种语句相辅相成,一起组成了PL/SQL的循环结构.在PL/SQL中,循环分为四大类,本文将会讲解其中的 ...
- http协议与https协议的区别
1.前言 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可 ...