etcd 是一个分布式一致性键值存储,用于共享配置和服务发现,Go编写,并使用 Raft 一致性算法来管理高可用复制日志。

特性

简单:支持curl方式的用户API(http+json)
安全:可选ssl客户端证书认证
快速:单实例可达1000/s写操作
可靠:使用Raft实现分布式

etcd有三种集群化启动方案:
静态配置
自身服务发现
通过DNS进行服务发现

主机环境
192.168.1.3   node1
192.168.1.4   node2
192.168.1.5   node3

OS: CentOS7.0
etcd: etcd-v3.0.0-linux-amd64.tar.gz

1、解压etcd(三个节点都需操作)
tar xf etcd-v3.0.0-linux-amd64.tar.gz -C /usr/local/
mv /usr/local/etcd-v3.0.0-linux-amd64 /usr/local/etcd
export ETCDCTL_API=3  ##如果不设置,api还是版本2
2、启动(这里是以静态方式启动)
node1
=========
nohup ./etcd --name e1 --initial-advertise-peer-urls http://192.168.1.3:2380 --listen-peer-urls http://192.168.1.3:2380 --initial-cluster-token etcd-cluster-1 --data-dir /data/etcd/data --wal-dir /data/etcd/wal --listen-client-urls http://192.168.1.3:2379,http://127.0.0.1:2379,http://127.0.0.1:22379,http://127.0.0.1:32379 --advertise-client-urls http://192.168.1.3:2379 --initial-cluster e1=http://192.168.1.3:2380,e2=http://192.168.1.4:2380,e3=http://192.168.1.5:2380 --initial-cluster-state new >> etcd.log 2>&1 &

node2
======
nohup ./etcd --name e2 --initial-advertise-peer-urls http://192.168.1.4:2380  --listen-peer-urls http://192.168.1.4:2380 --initial-cluster-token etcd-cluster-1 --data-dir /data/etcd/data --wal-dir /data/etcd/wal --listen-client-urls http://192.168.1.4:2379,http://127.0.0.1:2379,http://127.0.0.1:22379,http://127.0.0.1:32379 --advertise-client-urls http://192.168.1.4:2379 --initial-cluster e1=http://192.168.1.3:2380,e2=http://192.168.1.4:2380,e3=http://192.168.1.5:2380 --initial-cluster-state new >> etcd.log 2>&1 &

node3
=======
nohup ./etcd --name e3 --initial-advertise-peer-urls http://192.168.1.5:2380 --listen-peer-urls http://192.168.1.5:2380 --initial-cluster-token etcd-cluster-1 --data-dir /data/etcd/data --wal-dir /data/etcd/wal --listen-client-urls http://192.168.1.5:2379,http://127.0.0.1:2379,http://127.0.0.1:22379,http://127.0.0.1:32379 --advertise-client-urls http://192.168.1.5:2379 --initial-cluster e1=http://192.168.1.3:2380,e2=http://192.168.1.4:2380,e3=http://192.168.1.5:2380 --initial-cluster-state new >> etcd.log 2>&1 &

###参数详解
–data-dir      #指定节点的数据存储目录,包括节点ID 集群ID 集群初始化配置 Snapshot文件 若未指定—wal-dir 还会存储WAL文件;
–wal-dir       #指定节点的was文件的存储目录 若指定了该参数 wal文件会和其他数据文件分开存储;
–name          #节点名称
–initial-advertise-peer-urls    #参数表示节点监听其他节点同步信号的地址
–listen-peer-urls               #监听URL 用于与其他节点通讯
–advertise-client-urls          #告知客户端url 也就是服务的url
–initial-cluster                #集群中所有节点new or existing
–initial-cluster-token          #集群的ID 如果所在的网络环境配置了多个etcd集群 为了避免意外发生 最好使用–initial-cluster-token参数为每个集群单独配置一个token认证,这样就可以确保每个集群和集群的成员都拥有独特的ID.
--force-new-cluster             #加备份的数据重新启动节点
peer-urls                       #通常监听的端口为2380(老版本的端口为7001)包括所有已经在集群中正常工作的所有节点的地址。
client-urls                     #通常监听的端口为2379(老版本的端口为4001)为适应复杂的网络环境,新版etcd监听客户端请求的url从原来的1个变为现在可配置的多个 这样etcd可以配合多块网卡同时监听不同网络下的请求。
--initial-cluster-state new     #用于指示本次是否为新建集群。有两个取值new和existing。如果填为existing,则该member启动时会尝试与其他member交互。
集群初次建立时,要填为new,经尝试最后一个节点填existing也正常,其他节点不能填为existing。
集群运行过程中,一个member故障后恢复时填为existing,经尝试填为new也正常。

3. 查看成员信息
root@node1:/usr/local/etcd# ./etcdctl member list
aa8379415edde74c, started, e3, http://192.168.1.3:2380, http://192.168.1.3:2379
da3cf4bd9e4c6189, started, e2, http://192.168.1.4:2380, http://192.168.1.4:2379
e6c603bf0f013bfc, started, e1, http://192.168.1.5:2380, http://192.168.1.5:2379

root@node1:/usr/local/etcd#  curl  http://127.0.0.1:2379/v2/members

4. 集群健康状态检查
etcdctl cluster-health

5. 查看成员角色
curl http://127.0.0.1:2379/v2/stats/leader

6. etcd 修改通过Ip访问方式
./etcd --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
7. 删除一个成员
curl http://192.168.1.131:2379/v2/members/42c5aa0fece37ff6 -XDELETE

8. 增加一个成员
1. curl http://127.0.0.1:2379/v2/members -XPOST -H "Content-Type: application/json" -d '{"peerURLs": ["http://192.168.1.193:2380"]}'

2. etcdctl member add node3 http://192.168.1.193:2380
在新节点,启动etcd服务

测试读写速度
boom -m PUT -d value="hello world!" -n 1000000 -c 10 -H "Content-Type: application/x-www-form-urlencoded" http://127.0.0.1/v2/keys/foo/car

###集群备份
#!/bin/bash
date_time=`date +%Y%m%d`
etcdctl backup --data-dir /data/etcd/ --backup-dir /data/etcd_backup/${date_time}
find /data/etcd_backup/ -ctime +7 -exec rm -r {} \;

etcd3.0集群安装的更多相关文章

  1. hadoop 2.2.0集群安装详细步骤(简单配置,无HA)

    安装环境操作系统:CentOS 6.5 i586(32位)java环境:JDK 1.7.0.51hadoop版本:社区版本2.2.0,hadoop-2.2.0.tar.gz 安装准备设置集群的host ...

  2. CentOS下Hadoop-2.2.0集群安装配置

    对于一个刚开始学习Spark的人来说,当然首先需要把环境搭建好,再跑几个例子,目前比较流行的部署是Spark On Yarn,作为新手,我觉得有必要走一遍Hadoop的集群安装配置,而不仅仅停留在本地 ...

  3. hadoop 2.2.0集群安装

    相关阅读: hbase 0.98.1集群安装 本文将基于hadoop 2.2.0解说其在linux集群上的安装方法,并对一些重要的设置项进行解释,本文原文链接:http://blog.csdn.net ...

  4. ElasticSearch 5.0.0 集群安装部署文档

    1.  搭建环境 3台物理机 操作系统 centos7 es1   192.168.31.141   4g内存   2核 es2   192.168.31.142   4g内存   2核 es3    ...

  5. CentOS下Storm 1.0.0集群安装具体解释

    本文环境例如以下: 操作系统:CentOS 6 32位 ZooKeeper版本号:3.4.8 Storm版本号:1.0.0 JDK版本号:1.8.0_77 32位 python版本号:2.6.6 集群 ...

  6. Linux基于Hadoop2.8.0集群安装配置Hive2.1.1及基础操作

    前言 安装Apache Hive前提是要先安装hadoop集群,并且hive只需要在hadoop的namenode节点集群里安装即可,安装前需保证Hadoop已启(动文中用到了hadoop的hdfs命 ...

  7. redis3.0.0 集群安装详细步骤

    Redis集群部署文档(centos6系统) Redis集群部署文档(centos6系统) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对 ...

  8. hadoop2.20.0集群安装教程

    一.安装的需要软件及集群描述 1.软件: Vmware9.0:虚拟机 Hadoop2.2.0:Apache官网原版稳定版本 JDK1.7.0_07:Oracle官网版本 Ubuntu12.04LTS: ...

  9. 最新版spark1.1.0集群安装配置

    和分布式文件系统和NoSQL数据库相比而言,spark集群的安装配置还算是比较简单的: 很多教程提到要安装java和scala,但我发现spark最新版本是包含scala的,JRE采用linux内嵌的 ...

随机推荐

  1. script写在head与写在body中的区别

    咱先说将Javascript写在head里面的情况吧,如果你要在这里面去操控DOM元素,是会报错的,因为浏览器是先执行head标签里面的内容,在执行时你的DOM元素还没有生成.(使用了windows. ...

  2. win7旗舰版安装 oracle 10g 不能进入图形界面的问题

    前阵子重装了系统,把dell机器自带的win7 64位(家庭版已升级旗舰版,装ORACLE正常)换回了32位系统,前两天因为一些软件开发的问题,需要把以前做的一个系统重新架起来,数据库用的是oracl ...

  3. 《UNIX环境高级编程》(APUE) 笔记第三章 - 文件I/O

    3 - 文件I/O Github 地址 1. 文件描述符 对于内核而言,所有打开的文件都通过 文件描述符 (file descriptor) 引用.当打开一个现有文件或创建一个新文件时,内核向进程返回 ...

  4. 初至cnblogs —— 博客搬迁

    感觉写博客是一种总结.分享知识的有效方式,于是打算坚持通过博客这一载体来提升自己. 最初通过 Hexo + GitHub Page 来搭建个人博客,但是通过这种方式搭建的博客基本没有访问量.个人感觉没 ...

  5. 1年转行资深前端工程师,开源项目过 1k stars,完整学习过程

    先介绍下大致情况时间线. 18 年 8 月正式转方向为前端,之前做了一段时间的 iOS,后来因为对前端更感兴趣所以就打算转方向了.19 年 10 月入职当前公司,定级资深前端,分配到业务架构小组,自此 ...

  6. Swoole 中 TCP、UDP 和长连接、短连接

    TCP 服务 swoole 文档 - TCP 服务 tcp 服务端 <?php // 1. 创建 swoole 默认创建的是一个同步的阻塞tcp服务 $host = "0.0.0.0& ...

  7. Asp.Net Core Blazor之容器部署

    写在前面 Docker作为开源的应用容器引擎,可以让我们很轻松的构建一个轻量级.易移植的容器,通过Docker方式进行持续交付.测试和部署,都是极为方便的,并且对于我们开发来说,最直观的优点还是解决了 ...

  8. 浏览器的回流与重绘 (Reflow & Repaint)

    写在前面 在讨论回流与重绘之前,我们要知道: 浏览器使用流式布局模型 (Flow Based Layout). 浏览器会把HTML解析成DOM,把CSS解析成CSSOM,DOM和CSSOM合并就产生了 ...

  9. salesman,动态规划带一点点贪心。

    题目直接链接 分析一下: 这题题意还是比较明白的(少见的一道中文题),他的意思就是:有这么一个无向图:保证联通且点与点直接有唯一的简单路径(说白了就是棵树,根节点是1),每个节点有一个权值(有正有负) ...

  10. ES6模块与CommonJS模块有什么区别?

    ES6 Module和CommonJS模块的区别: CommonJS是对模块的浅拷贝,ES6 Module是对模块的引用,即ES6 Module只存只读,不能改变其值,具体点就是指针指向不能变,类似c ...