[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 搭建与使用的更多相关文章

  1. 转: centos7.5 下 coredns+etcd搭建DNS服务器

    coredns简介 CoreDNS是一个DNS服务器,和Caddy Server具有相同的模型:它链接插件.CoreDNS是云本土计算基金会启动阶段项目. CoreDNS是SkyDNS的继任者. Sk ...

  2. centos7.5下coredns+etcd搭建DNS服务器

    coredns简介 安装etcd 安装coredns 设置域名解析 A记录 AAAA记录 CNAME记录 SRV记录 TXT记录 coredns简介 CoreDNS是一个DNS服务器,和Caddy S ...

  3. 阿里云手动搭建k8s搭建中遇到的问题解决(持续更新)

    ETCD搭建 systemd启动etcd服务的时候出现错误:Failed at step CHDIR spawning /usr/bin/etcd: No such file or directory ...

  4. confd+etcd实现高可用自动发现

    Confd是什么 Confd是一个轻量级的配置管理工具. 通过查询后端存储,结合配置模板引擎,保持本地配置最新,同时具备定期探测机制,配置变更自动reload. 对应的后端存储可以是etcd,redi ...

  5. Go语言学习之12 etcd、contex、kafka消费实例、logagent

    本节内容:    1. etcd介绍与使用    2. ElastcSearch介绍与使用 1. etcd介绍与使用    概念:高可用的分布式key-value存储,可以使用配置共享和服务发现    ...

  6. GO开发:etcd用法

    etcd是什么? A highly-available key value store for shared configuration and service discovery.是一个键值存储仓库 ...

  7. Go实现海量日志收集系统(三)

    再次整理了一下这个日志收集系统的框,如下图 这次要实现的代码的整体逻辑为: 完整代码地址为: https://github.com/pythonsite/logagent etcd介绍 高可用的分布式 ...

  8. kubernetes 源码安装部署 1.12

    一. 前期准备 参考文档 https://jimmysong.io/kubernetes-handbook/practice/create-tls-and-secret-key.html 1. 安装g ...

  9. 华为云PB级数据库GaussDB(for Redis)揭秘第七期:高斯Redis与强一致

    摘要:在KV数据库领域,"强一致性"不仅是一个技术名词,它更是业务与运维的重要需求. 清明刚过,五一假期就要来了.大好春光,不如去婺源看油菜花吧!小云迅速打开APP刷出余票2张,赶 ...

随机推荐

  1. NetLink通信机制学习

    Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,在 Linux 2.4 版以后版本的内核中,几乎全部的中断过程与用户态进程的通信都是使用 netlink 套接字 ...

  2. pycharm控制台出现python编译器的编辑功能

    一.最近研究了下python,然后昨天发现新建项目后,出现如图的输入状况(Ctrl+Alt+F10) 二 二.更改方式 (1)点开如图位置,进入编辑模式 (2)将如图位置的√去掉就好了

  3. tp5主从数据库设置读写分离

    // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '192.168.0.5,192.168.0.6', // 数据库名 'databas ...

  4. Ansible 笔记 (1) - 安装和配置

    本文参考 <Ansible 自动化运维和最佳实践>,这两天刚读这本书,写写总结.主控机环境是 centos 7,被控机均是 centos 6.8 . 确保 python 版本大于 2.6 ...

  5. Tomcat项目部署问题记录

    Tomcat项目部署问题记录 1. -bash: ./startup.sh: Permission denied 问题: 新装tomcat后,执行启动命令会出现 -bash: ./startup.sh ...

  6. Babel 是干什么的

    首先babel是干什么的?Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行. babel就是为了支持原有的旧的环境. 一.配置文件.babelrc Babel的配置 ...

  7. ajax 调用示例

    $.ajax({ type: "post", url: url, data: { "key": "ValidateMobile", &quo ...

  8. CDI(Weld)高级<4> Event(事件) (转)

    目录[-] 1. Event payload(事件的有效载入) 2. Event observers(event的观察者) 3. Event producers(event生产者) 4.Annotat ...

  9. 原创:MVC 5 实例教程(MvcMovieStore 新概念版:mvc5.0,EF6.01) - 2、数据框架 和 功能预览

    说明:MvcMovieStore项目已经发布上线,想了解最新版本功能请登录 MVC 影视(MvcMovie.cn) 进行查阅.如需转载,请注明出处:http://www.cnblogs.com/Dod ...

  10. Ultimate guide to learning AngularJS in one day

    What is AngularJS? Angular is a client-side MVC/MVVM framework built in JavaScript, essential for mo ...