etcd

etcd TLS 部署 flanneld

左心房为你撑大大i 提交于 2019-11-28 20:00:14
1.首先使用cfssl 生成相关证书文件 参考 https://coreos.com/os/docs/latest/generate-self-signed-certificates.html 2.etcd.service文件 [Unit] Description=Etcd Server [Service] Type=notify #WorkingDirectory=/home/etcd_data #EnvironmentFile=-/root/etcd-v3.3.9-linux-amd64/etcd.conf ExecStart=/root/etcd-v3.3.9-linux-amd64/etcd --name infra0 \ --initial-advertise-peer-urls https://xxx.xxx.xxx.xxx:2380 \ --listen-peer-urls https://xxx.xxx.xxx.xxx:2380 \ --listen-client-urls https://xxx.xxx.xxx.xxx:2379,https://127.0.0.1:2379 \ --advertise-client-urls https://xxx.xxx.xxx.xxx:2379 \ --initial-cluster infra0=https://xxx

etcdctl环境变量设置

浪子不回头ぞ 提交于 2019-11-28 19:59:50
每次使用etcdctl,都要长长的一大串,太麻烦了,直接把变量写入文件中,就方便很多了 vi ~/.bashrc 行尾添加 export ETCDCTL_ENDPOINTS=https://127.0.0.1:2379 export ETCDCTL_CACERT=/etc/kubernetes/pki/etcd/ca.crt export ETCDCTL_CERT=/etc/kubernetes/pki/etcd/healthcheck-client.crt export ETCDCTL_KEY=/etc/kubernetes/pki/etcd/healthcheck-client.key 然后保存退出 source ~/.bashrc 然后就可以欢快的etcdctl get /flannel/network/config 参考: https://github.com/etcd-io/etcd/tree/master/etcdctl 来源: http://www.cnblogs.com/lizhaoxian/p/11498268.html

etcdctl的使用

爷,独闯天下 提交于 2019-11-28 19:59:34
etcdctl是一个提供简洁命令的etcd客户端,使用etcdctl可以直接和etcd服务打交道,对etcd中的键值对进行增删改查。 安装etcdctl 下载etcdctl工具 下载地址: etcdctl工具 解压安装 tar -xzvf etcd-xxx-linux-amd64.tar.gz cd etcd-xxx-linux-amd64 cp etcdctl /usr/local/bin/ 测试是否安装成功 $ etcdctl -h NAME:   etcdctl - A simple command line client for etcd. WARNING:   Environment variable ETCDCTL_API is not set; defaults to etcdctl v2.   Set environment variable ETCDCTL_API=3 to use v3 API or ETCDCTL_API=2 to use v2 API. USAGE:   etcdctl [global options] command [command options] [arguments...] VERSION:   3.3.10 常用etcdl命令 使用etcdctl v3版本,需要设置环境变量ETCDCTL_API=3 使用方法:export

etcd api 接口

女生的网名这么多〃 提交于 2019-11-28 19:54:36
etcd api接口   基本操作api: https://github.com/coreos/etcd/blob/6acb3d67fbe131b3b2d5d010e00ec80182be4628/Documentation/v2/api.md   集群配置api: https://github.com/coreos/etcd/blob/6acb3d67fbe131b3b2d5d010e00ec80182be4628/Documentation/v2/members_api.md   鉴权认证api: https://github.com/coreos/etcd/blob/6acb3d67fbe131b3b2d5d010e00ec80182be4628/Documentation/v2/auth_api.md   配置项:https://github.com/coreos/etcd/blob/master/Documentation/op-guide/configuration.md      https://coreos.com/etcd/docs/latest/runtime-configuration.html   https://coreos.com/etcd/docs/latest/clustering.html   https://coreos.com/etcd

kubernetes高可用设计-CA,etcd

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-28 19:48:18
环境准备: master01:192.168.150.128 master02:192.168.150.130 master03:192.168.150.131 node01:192.168.150.132 lb01:192.168.150.133 lb02:192.168.150.134 集群环境变量 后面的嗯部署将会使用到的全局变量,定义如下(根据自己的机器、网络修改): # TLS Bootstrapping 使用的Token,可以使用命令 head -c 16 /dev/urandom | od -An -t x | tr -d ' ' 生成 BOOTSTRAP_TOKEN="8981b594122ebed7596f1d3b69c78223" # 建议使用未用的网段来定义服务网段和Pod 网段 # 服务网段(Service CIDR),部署前路由不可达,部署后集群内部使用IP:Port可达 SERVICE_CIDR="10.254.0.0/16" # Pod 网段(Cluster CIDR),部署前路由不可达,部署后路由可达(flanneld 保证) CLUSTER_CIDR="172.30.0.0/16" # 服务端口范围(NodePort Range) NODE_PORT_RANGE="30000-32766" # etcd集群服务地址列表 ETCD_ENDPOINTS

etcd集群一键安装运行

天涯浪子 提交于 2019-11-28 19:48:04
1. 使用方式: ./run.sh etcd03 etcd01=http://192.168.2.44:2380,etcd02=http://192.168.2.45:2380,etcd03=http://192.168.2.46:2380 2. 源码run.sh #!/bin/sh # 安装 # ./run.sh etcd03 etcd01=http://192.168.2.44:2380,etcd02=http://192.168.2.45:2380,etcd03=http://192.168.2.46:2380 etcd --version if [[ $? -eq 0 ]]; then echo 'etcd exists, exit!' exit else yum -y install etcd fi export HOST=$(ifconfig eth0 | grep 'inet'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $2}') echo $HOST tee /etc/etcd/etcd.conf <<-'EOF' ETCD_NAME="$1" ETCD_DATA_DIR="/var/lib/etcd/$1" ETCD_LISTEN_PEER_URLS="http://$HOST:2380" ETCD

etcd代理组件的开发思想

淺唱寂寞╮ 提交于 2019-11-28 19:45:57
最近在一个项目中,需要使用到etcd集群来实现服务发现的功能,目的是统一管理相应的服务资源,同时也可对资源做一定的负载均衡策略。然而,项目中使用的技术栈是C++语言,github上没有合适的C++开源的etcd客户端。于是需要在etcd和应用组件间加上一个etcd的代理层,利用etcd代理来沟通彼此。 etcd代理模块实现的思路: etcd代理组件作为客户端与etcd集群建立TCP长连接,并通过区分不同的指令来与集群做不同的消息交互(数据形式:cmd+payload)。同时暴露一些接口给应用层调用,发送一些指令到集群,如注册和监听相应的服务信息。当etcd代理接收到etcd集群发送回来的tcp包时,使用回调函数,或C++信号与槽函数的关系来调用应用层的处理接口,从而可更新服务信息。 主要实现的细节和方法: 1、在etcd代理内部维持一个循环,不断等待并处理epoll事件,监听socket消息 2、定时向etcd发送心跳消息,保持socket长连接 3、通信数据格式可采用struct+Json的形式(struct用于传相关头信息及cmd,而json则为具体的数据) 4、etcd代理类采用单例模式,提供统一的对象访问接口(static instance()) 5、回调函数的构建有两种方式:     1.在etcd代理中创建一个接口类,包含相应的回调函数(虚函数)

traefik+etcd构建grpc微服务demo

前提是你 提交于 2019-11-28 19:45:21
1.下载安装traefik https://github.com/containous/traefik/releases 2.下载安装etcd3 https://github.com/coreos/etcd/releases 3.配置traefik,监控etcd的k-v,traefik使用文档地址 https://docs.traefik.io/master/user-guide/grpc/ [etcd] prefix = "/myservice" watch=true endpoint = "127.0.0.1:2379" #APIV3=true useAPIV3 = true [entryPoints] [entryPoints.http] address = ":8001" //http1,htp2的入口地址 compress = true [entryPoints.bar] address = ":8081" [api] entryPoint = "bar" //admin的入口地址 dashboard = true debug = true 4.将服务信息写入ETCD put /myservice/backends/backend1/servers/server1/url h2c://backend.local:8080 put /myservice/frontends

Zookeeper和etcd比较

安稳与你 提交于 2019-11-28 19:43:37
zookeeper: zookeeper是基于paxos的简化版zab,我觉得确实很难理解?,以前看了好多遍《从paxos到zookeper》才感觉似懂非懂了,然而过了几个月发现又一脸蒙蔽了,在这里在整理一下(仅表示我自己的理解) ZAB协议中存在着三种状态,每个节点都属于以下三种中的一种: 1. Looking :系统刚启动时或者Leader崩溃后正处于选举状态 2. Following :Follower节点所处的状态,Follower与Leader处于数据同步阶段; 3. Leading :Leader所处状态,当前集群中有一个Leader为主进程; 在开始时,所有的节点都是looking状态并且每个节点都希望自己能成为leader节点,所有每个节点都会向集群中发送一个提案内容是选取自己作为leader节点,提案编号是ZXID (ZAB协议中使用ZXID作为事务编号,ZXID为64位数字,低32位为一个递增的计数器,每一个客户端的一个事务请求时Leader产生新的事务后该计数器都会加1,高32位为Leader周期epoch编号,当新选举出一个Leader节点时Leader会取出本地日志中最大事务Proposal的ZXID解析出对应的epoch把该值加1作为新的epoch,将低32位从0开始生成新的ZXID;ZAB使用epoch来区分不同的Leader周期)

ETCD高可用特性学习

爷,独闯天下 提交于 2019-11-28 19:43:21
https://coreos.com/etcd/docs/latest/admin_guide.html 只有当集群中多数节点正常的情况下,才可以进行运行时的配置管理。如果集群多数节点损坏,集群就失去了写入数据的能力。官方推荐3,5,7为etcd cluster数目,其中7可以满足大部分情况 通常情况下,如果是Follower节点宕机,如果剩余可用节点数量超过半数,集群可以几乎没有影响的正常工作。如果是Leader节点宕机,那么Follower就收不到心跳而超时,发起竞选获得投票,成为新一轮term的Leader,继续为集群提供服务。 在最初启动etcd集群时,发现核心节点的数量已经满足要求时,多余的自动启用Proxy模式,若核心节点挂掉,proxy模式的节点并不会转化为普通节点,etcd目前没有任何机制会自动去变化整个集群总共的节点数量 节点迁移和替换 当你节点所在的机器出现硬件故障,或者节点出现如数据目录损坏等问题,导致节点永久性的不可恢复时,就需要对节点进行迁移或者替换。当一个节点失效以后,必须尽快修复,因为etcd集群正常运行的必要条件是集群中多数节点都正常工作。 迁移一个节点需要进行四步操作: 暂停正在运行着的节点程序进程 把数据目录从现有机器拷贝到新机器 使用api更新etcd中对应节点指向机器的url记录更新为新机器的ip 使用同样的配置项和数据目录