Go语言中文网 为您找到相关结果 498

golang

一、go基础 二、go应用 1 初级应用 1.1. 反射reflection 1.2. server服务 1.3. 文件操作 1.4. 终端读取 1.5. json协议 1.6. web模板 1.7. 时间处理 1.8. 锁机制 1.9. 原子操作 1.10. 加密解密 1.11. 日志包 1.12. 随机数验证码 1.13. 编码格式的转换 1.14. 常用算法 1.15. 限流器 2 高级应用 2.1. rpc 2.2. pprof 2.3. goim 2..4. gopush 2.5. cgo 2.6. Golang GC 2.7. 封装websocket 3 第三方应用库 3.1. cli应用 Cobra 3.2. 图标库 3.3. 开源IM 3.4. 机器学习库 3.5. 生成二维...阅读全文

博文 2019-06-13 22:32:41 yongfutian

golang基础库之获取本地IP

# 使用场景 做服务注册的时候,我们会将本地IP注册到注册中心(zookeeper、etcd)等,该库可以获取本地IP 和 本地IP列表,,可直接使用,方便简介,什么收藏。 # 用法 ## Installation ``` go get github.com/go-basic/ipv4 ``` ## Example ``` package main import ( "fmt" "github.com/go-basic/ipv4" ) func main() { ip := ipv4.LocalIP() fmt.Println(ip) ips, _ := ipv4.LocalIPv4s() fmt.Println(ips) } ``...阅读全文

博文 2020-05-25 15:37:40 rushui

Centos7.2搭建kubernates集群

一、准备环境 1.1 准备机器 准备三台CentOS7.2机器,一台作为master节点,其他作为node节点 修改主机名称 hostnamectl set-hostname k8s-mst Role IP Hostname Master 192.168.0.87 k8s-cns1-mst Node 192.168.0.88 k8s-cns1-nod1 Node 192.168.0.89 k8s-cns1-nod2 修改master节点/etc/hosts,添加以下内容(不设置的话,在master上kubectl相关命令无法操作对应主机上对象) 192.168.0.87 k8s-cns1-mst 192.168.0.88 k8s-cns1-nod1 192.168.0.89 k8s-cns1...阅读全文

博文 2017-07-16 07:06:27 我心随我

Golang之context

前言 当我们使用一些golang框架的时候,总能在框架中发现有个叫做context的东西。如果你之前了解过java的spring,那么你肯定也听说过其中有个牛逼的ApplicationContext。Context这个东西好像随时随地都在出现,在golang中也是非常重要的存在。今天我们就来看看这个神奇的Context。 定义 首先我们要知道什么是context? 很多人把它翻译成上下文,其实这个是一个很难描述很定义的东西,对于这种东西,我习惯用功能去定义它。 我的定义是:context是用于在多个goroutines之间传递信息的媒介。 官方定义:At Google, we developed a context package that makes it easy to pass req...阅读全文

博文 2019-06-27 20:02:41 LinkinStar

etcd实现服务发现

### 前言 [etcd环境安装与使用](https://bingjian-zhu.github.io/2020/05/09/etcd%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8/)文章中介绍了etcd的安装及`v3 API`使用,本篇将介绍如何使用etcd实现服务发现功能。 ### 服务发现介绍 服务发现要解决的也是分布式系统中最常见的问题之一,即在同一个分布式集群中的进程或服务,要如何才能找到对方并建立连接。本质上来说,服务发现就是想要了解集群中是否有进程在监听 udp 或 tcp 端口,并且通过名字就可以查找和连接。 ![](https://img2020.cnblogs.com/blog/1508611...阅读全文

博文 2020-05-15 15:21:19 939496716

golang etcd简明教程

etcd 是一个高可用强一致性的键值仓库在很多分布式系统架构中得到了广泛的应用,本教程结合一些简单的例子介绍golang版本的etcd/clientv3中提供的主要功能及其使用方法。 如果还不熟悉etcd推荐先阅读: 看图轻松了解etcd etcd常用操作介绍 Let's get started now! 安装package 我们使用v3版本的etcd client, 首先通过go get下载并编译安装etcd clinet v3。 go get github.com/coreos/etcd/clientv3 复制代码该命令会将包下载到$GOPATH/src/github.com/coreos/etcd/clientv3中,所有相关依赖包会自动下载编译,包括protobuf、grpc等。 官...阅读全文

博文 2019-10-31 14:34:36 kevinyan

13位的时间golang

UnixNano纳秒要转换成毫秒, 进6个位 1 纳秒 = 1000皮秒 1,000 纳秒 = 1微秒 μs 1,000,000 纳秒 = 1毫秒 ms 1,000,000,000 纳秒 = 1秒 s t := strconv.FormatInt(time.Now().UnixNano()/1e6, 10) fmt.Println(len(t)) // 13 fmt.Println(t) // 1588733947147 fmt.Println(fmt.Sprint(1e6)) // 1*10^6= 100000...阅读全文

博文 2020-05-06 11:32:50 百里江山

k8s与网络--Flannel源码分析

前言 之前在k8s与网络--Flannel解读一文中,我们主要讲了Flannel整体的工作原理。今天主要针对Flannel v0.10.0版本进行源码分析。首先需要理解三个比较重要的概念: 网络(Network):整个集群中分配给 flannel 要管理的网络地址范围 子网(Subnet):flannel 所在的每台主机都会管理 network 中一个子网,子网的掩码和范围是可配置的 后端(Backend):使用什么样的后端网络模型,比如默认的 udp,还是 vxlan 等 源码分析 整体的代码组织如下: 除了可执行文件的入口 main.go之外,有backend,network,pkg和subnet这么几个代码相关的文件夹。 network主要是iptables相关。主要是供main函数根...阅读全文

博文 2018-09-21 16:34:46 iyacontrol

Go存储怎么写?深度解析etcd存储设计

导读:etcd是用于共享配置和服务发现的分布式,一致性的KV存储系统,在CoreOS和Kubernetes等开源项目中广泛使用。本文作者深入分析了etcd存储模块的设计和实现,对于深入学习Go存储有很大参考作用。作者 codedump codedump.info 博主,多年从事互联网服务器后台开发工作。可访问作者博客阅读 codedump 更多文章。在前面已经分析了Raft算法原理、etcd raft库的实现,接着就可以看etcd如何使用raft实现存储服务的了。以下的分析主要针对etcd V3版本的实现。概览下图中展示了etcd如何处理一个客户端请求的涉及到的模块和流程。图中淡紫色的矩形表示etcd,它包括如下几个模块:etcd server:对外接收客户端的请求,对应etcd代码中的et...阅读全文

博文 2019-01-22 21:14:52 高可用架构

gRPC负载均衡(客户端负载均衡)

### 前言 [上篇](https://bingjian-zhu.github.io/2020/05/14/etcd%E5%AE%9E%E7%8E%B0%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0/)介绍了如何使用`etcd`实现服务发现,本篇将基于etcd的服务发现前提下,介绍如何实现gRPC客户端负载均衡。 ### gRPC负载均衡 gRPC官方文档提供了关于gRPC负载均衡方案[Load Balancing in gRPC](https://github.com/grpc/grpc/blob/master/doc/load-balancing.md),此方案是为gRPC设计的,下面我们对此进行分析。 #### 1、对每次调用进行负载均衡 gRPC中的负载平衡...阅读全文

博文 2020-05-18 20:44:54 939496716

DockOne技术分享(十五):如何在裸机中自动安装部署CoreOS和Kubernetes

【编者的话】本次分享的主题是:如何在裸机下自动安装部署 CoreOS + Kubernetes。主要从背景、工作原理、具体过程、采过的坑四个方面来分享。 先介绍一下背景随着光音业务规模的上升,线上业务产品的数量及服务器的采购量也越来越大。当达到一定数量级后,就不能使用常规的维护方法来解决这些问题。 以前,一旦业务量上去,我们就不得不停下手头的开发工作,部署业务所需要的环境及线上调试,到最后,只有特别熟悉业务和代码的同事才能胜任此工作。为了解决这些问题,我们从前年开始就关注了LXC,并试着小规模地使用了一段时间,但是由于LXC本身存在一系列的问题,比如内核版本的限制及二次开发困难,没能大规模地推广。 后来随着Docker的发展及火热,我们也接触到了CoreOS,它的AB分区升级特性特别吸引人。...阅读全文

博文 2017-06-25 15:01:08 李颖杰

跟我学 K8S--代码: Kubernetes StatefulSet 代码分析与Unknown 状态处理

节点离线后的 pod 状态 在 kubernetes 使用过程中,根据集群的配置不同,往往会因为如下情况的一种或几种导致节点 NotReady: kubelet 进程停止 apiserver 进程停止 etcd 进程停止 kubernetes 管理网络 Down 当出现这种情况的时候,会出现节点 NotReady,进而当kube-controller-manager 中的--pod-eviction-timeout定义的值,默认 5 分钟后,将触发 Pod eviction 动作。 对于不同类型的 workloads,其对应的 pod 处理方式因为 controller-manager 中各个控制器的逻辑不通而不同。总结如下: deployment: 节点 NotReady 触发 evict...阅读全文

博文 2019-06-15 16:32:38 FelixShu

golang 的交叉编译

Go是一门编译型语言,所以在不同平台上,需要编译生成不同格式的二进制包。 由于Go 1.5对跨平台编译有了一些改进,包括统一了编译器、链接器等。 编译时候只需要指定两个参数:GOOS和GOARCH即可。 示例: # 编译到 linux 64bit $ GOOS=linux GOARCH=amd64 go build # 或者可以使用 -o 选项指定生成二进制文件名字 $ GOOS=linux GOARCH=amd64 go build -o app.linux # 编译到 linux 32bit $ GOOS=linux GOARCH=386 go build # 编译到 windows 64bit $ GOOS=windows GOARCH=amd64 go build # 编译到 win...阅读全文

博文 2017-07-03 08:03:33 中柠檬

DockOne技术分享(十):跨主机的 --link

【编者的话】 这次技术分享的内容是做到跨主机的容器定位通信,取代了--link无法跨主机和互通的障碍。 阅读本文之前,请先阅读我的上一篇文章,让容器跨主机互相访问,通过自制路由器广播路由条目互相学习。 来让一个LAN里的Docker主机全部知道对方网络的下一跳怎么走,但是解决了刚需之后,又一个很大的问题告诉我,Docker在重启容器或者服务之后会更改自己的IP地址。 就像配置思科路由器的 ip local pool (不是DHCP服务)不会释放地址池等等,所以在不能很轻易固定IP的情况下,我想到了域名解析。但怎么让DNS服务器去知道容器的IP和名字呢?我查阅了一些资料发现DDNS是很适合这个需求。但是DDNS 是配合DHCP的,docker0却不是,Docker容器不会从DHCP服务器请求地...阅读全文

博文 2017-06-25 15:01:03 Georce

DockOne微信分享(一零四):艺龙部署体系的演进

【编者的话】随着公司业务规模的逐渐扩大,传统的基于机器层面的部署系统在面对服务扩缩容、故障迁移、成本控制等方面已经越来越力不从心,于是,我们开始将容器技术与当前公司内部已有的自动化运维体系相结合,来实现一套艺龙的容器云平台,以期解决上述问题。 原有部署平台的架构设计在讲解部署系统之前,我先给大家讲一下目前艺龙自动化运维的业务模型。早期艺龙的运维,因为规模较小,通常人工处理,当规模大了以后,就开始尝试基于Puppet等脚本的方式操作。随着规模的进一步扩大,逻辑需求的增加,使得原有的这种基于行为的模型很难更高效的进行管理。 因此,我们抽象出服务这个概念,用户对服务做出定义,服务之间采用树形关联,服务节点上挂载元信息,而机器也是元信息之一,因此,新的模型就变为人去定义服务,而服务去关联机器。无论上...阅读全文

博文 2017-06-25 16:25:29 百事可乐

构建生产环境可用的高可用kubernetes集群

kubernetes集群三步安装 构建生产环境可用的高可用kubernetes集群 | sealos项目地址 特性 [x] 支持任意节点的etcd集群自动构建,且etcd集群使用安全证书,通过static pod方式启动,这样可以通过监控pod来监控etcd集群健康状态 [x] 支持多master节点,允许任意一台master宕机集群功能不受影响 [x] calico使用etcd集群,配置安全证书,网络管控数据无单点故障 [x] 包含dashboard, heapster coreDNS addons, coreDNS双副本,无单点故障 [x] 使用haproxy负载master节点,同样是用static pod,这样可通过统一监控pod状态来监控haproxy是否健康 [x] haprox...阅读全文

golang对etcd存取和数值监测

测试代码如下 package main import ( "fmt" "log" "time" "go.etcd.io/etcd/clientv3" "golang.org/x/net/context" ) var ( dialTimeout = 5 * time.Second requestTimeout = 2 * time.Second endpoints = []string{"192.168.99.106:2379", "192.168.99.107:2379", "192.168.99.108:2379"} ) func main() { cli, err := clientv3.New(clientv3.Config{ Endpoints: endpoints, DialTim...阅读全文

博文 2019-09-12 17:02:42 麦穗儿

k8s容器编排

1.k8s集群的安装(kubeadm安装) 1.1 k8s的架构 从系统架构来看,k8s分为2个节点 Master 控制节点 指挥官 Node 工作节点 干活的 1.Master节点组成 API Server :提供k8s API接口 主要处理Rest操作以及更新Etcd中的对象 是所有资源增删改查的唯一入口。 Scheduler:资源调度器 根据etcd里的节点资源状态决定将Pod绑定到哪个Node上 Controller Manager 负责保障pod的健康存在 资源对象的自动化控制中心,Kubernetes集群有很多控制器。 Etcd 这个是Kubernetes集群的数据库 所有持久化的状态信息存储在Etcd中 2.Node节点的组成 Docker Engine 负责节点容器的管理工作...阅读全文

博文 2020-03-06 23:32:43 唯爱熊

Go语言(二十)日志采集项目(二)Etcd的使用

日志采集项目(二)Etcd的使用 ETCD 介绍 概念: 高可用的分布式key-value存储,实现配置共享和服务发现 类似项目: zookeeper和consul 开发语言: Go 接口: 提供restful的http接口,使用简单 实现算法: 基于raft算法的强一致性,高可用的服务存储目录 ETCD的应用场景 服务发现和注册 配置中心 分布式锁 master选举 ETCD环境搭建 下载地址:https://github.com/etcd-io/etcd/releases/download/v3.4.7/etcd-v3.4.7-linux-amd64.tar.gz 启动方式: bin/etcd 可以直接启动 [root@centos7-node1 etcd]# nohup ./etcd ...阅读全文

博文 2020-05-15 17:39:06 wx5b285b48ed74e

kubernetes(1):Centos7 安装 kubernetes 1.4.0 版本

首先看到最新的kubernetes 1.4.0 发布了。激动了下,就开始研究了。 本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/52685592 未经博主允许不得转载。 博主地址是:http://blog.csdn.net/freewebsys 1,关于k8s Kubernetes 是来自 Google 云平台的开源容器集群管理系统。基于 Docker 构建一个容器的调度服务。该系统可以自动在一个容器集群中选择一个工作容器供使用。其核心概念是 Container Pod。 项目地址: http://kubernetes.io/ 2,安装1.4 http://kubernetes.io/docs/getting-starte...阅读全文

博文 2017-07-12 10:25:23 freewebsys

使用vault管理ETCD RBAC

ETCD RBAC功能简介 ETCD的介绍网上已经烂大街了,我就不赘述了。因为本文主要是使用ETCD的RBAC功能,所以重点介绍一下此功能。RBAC及Role-based access control,直译就是基于角色的访问控制。核心就是三个部分,权限、角色、用户。为角色绑定权限,为用户分配角色,目的是简化权限的管理。相同角色的用户拥有相同的权限,不需要对每个用户分配权限。ETCD 在版本2.1后实现了此功能。ETCD使用RBAC主要作用是隔离不同用户的访问空间,我们知道ETCD是一个键值储存系统用来存贮用户的关键信息。如果不开启RBAC,所用用户都可以访问及操作所有的内容,这对一个存贮关键信息的系统来说是有安全隐患的。使用RBAC可以为不同的角色分配不同的键值访问权限,这样就保证了关键信息...阅读全文

博文 2019-01-10 13:34:39 30的小周

10分钟将你的Go工程转换为Go Module模式

自从在Go 1.11和高版本中引入了Go的新管理系统以来,GoLang开发人员已经接受了包版本控制解决方案。这样做的用户可以使用GoCenter存储库中的不可变公共Go 模块,并通过健壮、可靠的Go Pipeline获得快的构建速度。但是,将现有的项目转换为使用Go Module并不总是很容易,如果该项目已经尝试过GoLang的其他包管理解决方案时。为了帮助GoLang社区正确地使用Go Module,我们将使用开源的etcd项目(Kubernetes使用的键值数据存储)作为示例。这是一个实践的实际示例,因为它很复杂,可以展示一些常见的实践Go 项目依赖管理痛点分析 传统GO项目进行第三方模块依赖时,往往是去下载第三方源码,这种方式将存在以下常见问题:1.性能及稳定性:每次下载从各大VCS系...阅读全文

博文 2019-12-20 00:32:53 JFrog杰蛙科技

请问指针怎么在前端页面赋值

初学者请多多包涵 请问下面的DeviceInfo里引用了CpuInfo,在前端页面怎么赋值呢 使用device.cpu.total在前端页面连输入都不让输,输入以后直接给我清空了 ``` type CpuInfo struct{ Total int 'json:"total"' Around string 'json:"around"' } ``` ``` type DeviceInfo struct{ Version String Serial String Cpu *CpuInfo } ``` 前端vue页面: ```

CPU: <input type="tex...阅读全文

etcd_selector.go

package clientselectorimport ( "errors" "math/rand" "net" "net/rpc" "net/url" "strconv" "strings" "time" "golang.org/x/net/context" "github.com/coreos/etcd/client" "github.com/smallnest/rpcx")// EtcdClientSelector is used to select a rpc server from etcd.//etcd 负载均衡器 结构体 type EtcdClientSelector struct { EtcdServers []string //etcd 客户端连接地址列表 KeysAPI...阅读全文

博文 2017-09-07 16:30:17 zhangboyu

“三次握手,四次挥手”你真的懂吗?

目录 什么是“3次握手,4次挥手” TCP服务模型 TCP头部 状态转换 为什么要“三次握手,四次挥手” 三次握手 四次挥手 “三次握手,四次挥手”怎么完成? 三次握手 四次挥手 为什么建立连接是三次握手,而关闭连接却是四次挥手呢? “三次握手,四次挥手”进阶 ISN 序列号回绕 syn flood攻击 无效连接的监视释放 延缓TCB分配方法 使用SYN Proxy防火墙 连接队列 半连接队列满了 全连接队列满了 命令 小结 “三次握手,四次挥手”redis实例分析 总结 参考资料 记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有下文了,面试官貌似也没有深入下去的意思,深入下去...阅读全文

博文 2019-07-22 22:15:32 qcrao-2018

我们如何在Rockset上实时分析和可视化Kubernetes事件

Rockset的Kubernetes 在Rockset,我们使用Kubernetes(k8s)进行集群编排。它运行我们所有的生产微服务-从我们的提取工人到我们的查询服务层。除了托管所有生产基础架构之外,每位工程师还拥有自己的Kubernetes命名空间和专用资源,我们可以使用它们在本地部署和测试新版本的代码和配置。这种沙盒开发环境使我们每周可以放心地多次发布软件。在此博客文章中,我们将探索内部构建的工具,该工具可让我们查看Kubernetes事件,这是有关系统状态的极好信息源,我们发现该工具有助于对系统进行故障排除和了解其长期运行状况。 为什么我们关心Kubernetes Events? 只要它管理的任何资源发生任何更改,Kubernetes都会发出事件。这些事件通常包含有关触发它的实体的重...阅读全文

博文 2020-01-26 09:32:39 iyacontrol

高可用分布式存储 etcd 的实现原理

Home Menu 高可用分布式存储 etcd 的实现原理 22 Oct 2018 分布式系统 etcd Raft 数据库 协调 简介 Raft 介绍 节点选举 定时器与心跳 竞选流程 节点状态 存储 后端 只读事务 读写事务 索引 KeyIndex 读操作 写操作 索引的恢复 存储 kvstore watchableStore 应用 总结 相关文章 Reference 在上一篇文章 详解分布式协调服务 ZooKeeper 中,我们介绍过分布式协调服务 Zookeeper 的实现原理以及应用,今天想要介绍的 etcd 其实也是在生产环境中经常被使用的协调服务,它与 Zookeeper 一样,也能够为整个集群提供服务发现、配置以及分布式协调的功能。 这篇文章将会介绍 etcd 的实现原理,其中...阅读全文

博文 2019-03-19 12:20:02 draveness.me

简单易懂的golang[go-micro]微服务

微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。 一般的微服务工作流程都可以用写明这种图来表达。 image.png 先把自己的服务注册到注册中心 客户端调用的时候去注册中心查询调用的服务的服务器列表 得到服务列表,随机调取一台进行远程协程 我们这里的注册中心使用的是ETCD 1.为什么不选择Redis? ps:首先注册中心的存放必须保证稳定,不可缺失。要不注册中心挂了,你要一个个服务的去重启?然后把它们从新注册到注册中心?这工作量你想想都不愿意更别说运维了。 2.为什么不选择ZooKeeper ? ps: ZooKeeper 因为Zookeeper...阅读全文

博文 2020-04-02 21:33:17 傻梦兽

DockOne技术分享(十八):一篇文章带你了解Flannel

【编者的话】Flannel是 CoreOS 团队针对 Kubernetes 设计的一个覆盖网络(Overlay Network)工具,其目的在于帮助每一个使用 Kuberentes 的 CoreOS 主机拥有一个完整的子网。这次的分享内容将从Flannel的介绍、工作原理及安装和配置三方面来介绍这个工具的使用方法。 第一部分:Flannel介绍Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。 在Kubernetes的网络模型中,假设了每个物理节点应该具备一段“属于同一个内网IP段内”的“专用的子网IP”。例如: 节点A:10.0.1.0/24 节点B:10.0.2....阅读全文

博文 2017-06-25 15:01:11 FanLin

Using Lua to modify entity behavior in a Go Game Server on the fly?

<p>I have a tiny game server cluster in Akka Scala and am interested in porting it to Go to see what all the rage is about. One of the things I was looking forward to doing in my Akka Scala implementation was hot code reload so that I could modify entity behavior on the fly without bringing the cluster down. </p> <p>My research i...阅读全文

Kubernetes笔记(5)—— kubernetes layout

Node(也称之为minion)运行docker container,而master则负责调度管理这些container。 Master运行下列服务: API Server—nearly all the components on the master and nodes accomplish their respective tasks by making API calls. These are handled by the API Server running on the master. Etcd—Etcd is a service whose job is to keep and replicate the current configuration and run state o...阅读全文

博文 2017-06-24 19:21:20 肖楠

(转)多阶段构建---多个FROM指令

老版本Docker中为什么不支持多个 FROM 指令 Docker 17.05版本以后,新增了Dockerfile多阶段构建。所谓多阶段构建,实际上是允许一个Dockerfile 中出现多个FROM指令。这样做有什么意义呢?老版本Docker中为什么不支持多个 FROM 指令在17.05版本之前的Docker,只允许Dockerfile中出现一个FROM指令,这得从镜像的本质说起。在《Docker概念简介》中我们提到,你可以简单理解Docker的镜像是一个压缩文件,其中包含了你需要的程序和一个文件系统。其实这样说是不严谨的,Docker镜像并非只是一个文件,而是由一堆文件组成,最主要的文件是层。Dockerfile 中,大多数指令会生成一个层,比如下方的两个例子:# 示例一,foo 镜像的D...阅读全文

博文 2019-10-17 19:33:17 aside section ._1OhGeD

k8s与etcd--备份etcd数据到s3

前言 整个k8s诸多组件几乎都是无状态的,所有的数据保存在etcd里,可以说etcd是整个k8s集群的数据库。可想而知,etcd的重要性。因而做好etcd数据备份工作至关重要。这篇主要讲一下我司的相关的实践。 备份etcd数据到s3 能做etcd的备份方案很多,但是大同小异,基本上都是利用了etcdctl命令来完成。 为什么选择s3那? 因为我们单位对于aws使用比较多,另外我们希望我们备份到一个高可用的存储中,而不是部署etcd的本机中。 此外,s3支持存储的生命周期的设置。设置一下,就可以aws帮助我们定时删除旧数据,保留新的备份数据。 具体方案 我们基本上用了etcd-backup这个项目,当然也fork了,做了稍微的更改,主要是更改了dockerfile。将etcdctl 修改为我们...阅读全文

博文 2019-01-18 14:34:45 iyacontrol

浅入深出ETCD之【集群部署与golang客户端使用】

前言 之前说了etcd的简介,命令行使用,一些基本原理。这次来说说现实一点的集群部署和golang版本的客户端使用。因为在实际使用过程中,etcd的节点肯定是需要2N+1个进行部署的,所以有必要说明一下集群的部署。 集群部署 网上有很多集群部署的教程,有的很复杂,其实对于我们实际使用来说,其实配置并不复杂,下面举例一种最简单的集群配置。(简单到你想不到~) 下载 https://github.com/etcd-io/etcd/releases 还是在github上面找到需要下载的版本 我使用的是etcd-v3.3.13-linux-amd64.tar.gz 使用wget下载到linux你喜欢的目录,或者本地下载完成之后上传均可。 部署 首先我找了三台机器,对应ip为 192.168.4.22...阅读全文

博文 2019-06-14 16:02:52 LinkinStar

shipyard研发系列(1)-shipyard安装指南

Docker之shipyard安装指南 一、前言:最近在研究shipyard的docker容器管理平台,在研究过程发现自己对docker基础理解还存在一定的欠缺,为了更好的理解docker,将我对shipyard项目的理解共享给docker爱好者,也系统的形成一份研发日志。dockerclub的shipyard研发系列详细请访问 二、shipyard项目介绍:shipyard是一个集成管理docker容器、镜像、Registries的系统,他最大亮点应该是支持多节点的集成管理,可以动态加载节点,可托管node下的容器。这里暂时不对shipyard的细节讲解,后续章节会讲他的架构。 三、shipyard安装使用介绍,shipyard项目的安装可以参考官网逐步操作,这里补充一些坑的解决过程。 3...阅读全文

博文 2017-02-09 08:08:51 dockerclub

etcd常用操作介绍

安装 最简单的安装方法是直接去etcd GitHub的Release页下载预编译好的二进制文件。etcd官方为各个系统提供了不同的二进制文件,供开发者根据自己的系统去下载。 下载地址:https://github.com/etcd-io/et... 下载完成解压后,目录中有两个二进制文件,etcd以及etcdctl。其中etcd就是运行etcd服务的二进制文件,etcdctl是官方提供的命令行etcd客户端,使用etcdctl可以在命令行中访问etcd服务。 将etcd和etcdctl这两个文件软链到系统环境变量$PATH对应的目录下,方便服务启动,当然试验目的直接把工作目录切换到刚才下载的目录直接运行两个文件即可。 我从GitHub上下载了MacOS对应的etcd文件,执行下面的命令可以看...阅读全文

博文 2019-10-24 13:32:42 KevinYan

TiDB 集群安装

安装 TiDB TiDB 需要安装 TiKV,RocksDB, PD等软件。 环境 Ubuntu 14.04.4 (64bit) 编译二进制文件 二进制程序如tidb-server, tikv-server, pd-server都可以在一台主机上编译后分发到其它主机上去,只要保持主机环境基本一致即可。 而RocksDB是编译成动态库文件,在不同主机上共享比较麻烦(甚至无法共享?),所以建议每台放置TiKV组件的主机上都进行一次编译。 注:本次部署是在一台跳板机上进行所有二进制文件的编译。 编译PD 1)安装Golang wget https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gz tar -C /usr/local...阅读全文

博文 2018-12-17 15:34:46 hiekay