您现在的位置是:首页 > 正文

配置中心ETCD搭建与简单使用 热门推荐

2024-04-01 01:46:38阅读 2

1 ETCD配置

1.1 Ubuntu安装ETCD

以下配置均在Ubuntu16.04系统中。
(1)使用wget命令对ETCD进行安装

wget https://github.com/etcd-io/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz

(2)下载后,解压并移动在指定目录

tar zxvf etcd-v3.3.10-linux-amd64.tar.gz
mv etcd-v3.3.10-linux-amd64 /opt/etcd-v3.3.10

(3)配置环境变量
在终端中,打开bashrc

sudo gedit ~/.bashrc

在bashrc末尾,设置如下环境变量:

export ETCDCTL_API=3          # 指定ETCD版本
export ETCD=/home/xxx/go/gopath/src/github.com/etcd-v3.3.10/etcd     # 设置ETCD链接路径,使ETCD在任何目录下都可以运行
export PATH=$PATH:$ETCD   # 将ETCD环境变量添加到全局PATH中

注意:在etcd 3.0以上的版本中,即存在v2的版本,又有v3,因此需要在环境变量中指定所用版本,这里使用v3的版本,否则使用etcdctl put和get命令不生效。
在环境变量中配置ETCDCTL_API=2,使用etcdctl 可以查看 api2的命令;
在环境变量中配置ETCDCTL_API=2,使用etcdctl 可以查看 api3的命令。
(4)启动ETCD

~/go/gopath/src/github.com/etcd-v3.3.10$ ./etcd
2020-10-09 10:06:43.210921 I | etcdmain: etcd Version: 3.3.10
2020-10-09 10:06:43.210984 I | etcdmain: Git SHA: 27fc7e2
2020-10-09 10:06:43.210990 I | etcdmain: Go Version: go1.10.4
2020-10-09 10:06:43.210993 I | etcdmain: Go OS/Arch: linux/amd64
2020-10-09 10:06:43.210996 I | etcdmain: setting maximum number of CPUs to 8, total number of available CPUs is 8
2020-10-09 10:06:43.211005 W | etcdmain: no data-dir provided, using default data-dir ./default.etcd
2020-10-09 10:06:43.611421 I | embed: listening for peers on http://localhost:2380
2020-10-09 10:06:43.612071 I | embed: listening for client requests on localhost:2379
2020-10-09 10:06:43.618801 I | etcdserver: name = default
2020-10-09 10:06:43.618989 I | etcdserver: data dir = default.etcd
2020-10-09 10:06:43.619090 I | etcdserver: member dir = default.etcd/member
2020-10-09 10:06:43.619121 I | etcdserver: heartbeat = 100ms
2020-10-09 10:06:43.619132 I | etcdserver: election = 1000ms
2020-10-09 10:06:43.619160 I | etcdserver: snapshot count = 100000
2020-10-09 10:06:43.619215 I | etcdserver: advertise client URLs = http://localhost:2379
2020-10-09 10:06:43.619298 I | etcdserver: initial advertise peer URLs = http://localhost:2380
2020-10-09 10:06:43.619332 I | etcdserver: initial cluster = default=http://localhost:2380
2020-10-09 10:06:43.641714 I | etcdserver: starting member 8e9e05c52164694d in cluster cdf818194e3a8c32
2020-10-09 10:06:43.641931 I | raft: 8e9e05c52164694d became follower at term 0
2020-10-09 10:06:43.642163 I | raft: newRaft 8e9e05c52164694d [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2020-10-09 10:06:43.642261 I | raft: 8e9e05c52164694d became follower at term 1
2020-10-09 10:06:43.679850 W | auth: simple token is not cryptographically signed
2020-10-09 10:06:43.692368 I | etcdserver: starting server... [version: 3.3.10, cluster version: to_be_decided]
2020-10-09 10:06:43.694076 I | etcdserver: 8e9e05c52164694d as single-node; fast-forwarding 9 ticks (election ticks 10)
2020-10-09 10:06:43.722167 I | etcdserver/membership: added member 8e9e05c52164694d [http://localhost:2380] to cluster cdf818194e3a8c32
2020-10-09 10:06:44.061949 I | raft: 8e9e05c52164694d is starting a new election at term 1
2020-10-09 10:06:44.062420 I | raft: 8e9e05c52164694d became candidate at term 2
2020-10-09 10:06:44.062579 I | raft: 8e9e05c52164694d received MsgVoteResp from 8e9e05c52164694d at term 2
2020-10-09 10:06:44.062797 I | raft: 8e9e05c52164694d became leader at term 2
2020-10-09 10:06:44.063156 I | raft: raft.node: 8e9e05c52164694d elected leader 8e9e05c52164694d at term 2
2020-10-09 10:06:44.064115 I | etcdserver: setting up the initial cluster version to 3.3
2020-10-09 10:06:44.066910 N | etcdserver/membership: set the initial cluster version to 3.3
2020-10-09 10:06:44.067230 I | etcdserver: published {Name:default ClientURLs:[http://localhost:2379]} to cluster cdf818194e3a8c32
2020-10-09 10:06:44.067379 I | embed: ready to serve client requests
2020-10-09 10:06:44.067832 I | etcdserver/api: enabled capabilities for version 3.3
2020-10-09 10:06:44.068614 E | etcdmain: forgot to set Type=notify in systemd service file?
2020-10-09 10:06:44.074200 N | embed: serving insecure client requests on 127.0.0.1:2379, this is strongly discouraged!
proto: no coders for int
proto: no encoder for ValueSize int [GetProperties]

2 ETCD简单使用

完成上面的安装后,可以在任何目录中运行ETCD命令,以检查版本、设置配置信息、获取指定key等。
(1)查看ETCD版本

$ ./etcd -version
etcd Version: 3.3.10
Git SHA: 27fc7e2
Go Version: go1.10.4
Go OS/Arch: linux/amd64

(2)设置key-value

$ ./etcdctl put k1 v1
OK

(3)获取指定key

$ ./etcdctl get k1
k1
v1

(4)查看rest api版本信息
启动ETCD后,可以通过如下命令查看rest api所使用的etcd的版本信息:

$curl http://127.0.0.1:2379/version
{"etcdserver":"3.3.10","etcdcluster":"3.3.0"}

默认2379和2380端口只在127.0.0.1,即本机上监听。

(5)通过ss命令查看详细的TCP和连接状态信息
ss是Socket Statistics的缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

ss -tnl
State       Recv-Q       Send-Q               Local Address:Port                Peer Address:Port       
LISTEN      0            128                      127.0.0.1:6017                     0.0.0.0:*          
LISTEN      0            128                      127.0.0.1:6018                     0.0.0.0:*          
LISTEN      0            128                      127.0.0.1:6019                     0.0.0.0:*          
LISTEN      0            128                      127.0.0.1:6020                     0.0.0.0:*          
LISTEN      0            128                      127.0.0.1:6021                     0.0.0.0:*          
LISTEN      0            128                      127.0.0.1:2379                     0.0.0.0:*          
LISTEN      0            128                      127.0.0.1:2380                     0.0.0.0:*          
LISTEN      0            128                  127.0.0.53%lo:53                       0.0.0.0:*          
LISTEN      0            128                        0.0.0.0:22                       0.0.0.0:*          
LISTEN      0            5                        127.0.0.1:631                      0.0.0.0:*          
LISTEN      0            128                      127.0.0.1:6010                     0.0.0.0:*          
LISTEN      0            128                      127.0.0.1:43325                    0.0.0.0:*          
LISTEN      0            128                      127.0.0.1:6015                     0.0.0.0:*          
LISTEN      0            128                      127.0.0.1:6016                     0.0.0.0:*          
LISTEN      0            128                              *:39297                          *:*          
LISTEN      0            128                          [::1]:6017                        [::]:*          
LISTEN      0            128                          [::1]:6018                        [::]:*          
LISTEN      0            128                          [::1]:6019                        [::]:*          
LISTEN      0            128                          [::1]:6020                        [::]:*          
LISTEN      0            128                          [::1]:6021                        [::]:*          
LISTEN      0            80                               *:3306                           *:*          
LISTEN      0            128                              *:45717                          *:*          
LISTEN      0            128                           [::]:22                          [::]:*          
LISTEN      0            5                            [::1]:631                         [::]:*          
LISTEN      0            128                          [::1]:6010                        [::]:*          
LISTEN      0            128                              *:8090                           *:*          
LISTEN      0            128                          [::1]:6015                        [::]:*          
LISTEN      0            128                          [::1]:6016                        [::]:* 

ss -tnl命令,表示显示处于监听状态的TCP套接字,不解析服务器的名称。

扩展,以下是ss命令格式和参数。
命令格式:ss [参数] [过滤]

-h, --help 帮助信息
-V, --version 程序版本信息
-n, --numeric 不解析服务名称
-r, --resolve        解析主机名
-a, --all 显示所有套接字(sockets)
-l, --listening 显示监听状态的套接字(sockets)
-o, --options        显示计时器信息
-e, --extended       显示详细的套接字(sockets)信息
-m, --memory         显示套接字(socket)的内存使用情况
-p, --processes 显示使用套接字(socket)的进程
-i, --info 显示 TCP内部信息
-s, --summary 显示套接字(socket)使用概况
-4, --ipv4           仅显示IPv4的套接字(sockets)
-6, --ipv6           仅显示IPv6的套接字(sockets)
-0, --packet         显示 PACKET 套接字(socket)
-t, --tcp 仅显示 TCP套接字(sockets)
-u, --udp 仅显示 UCP套接字(sockets)
-d, --dccp 仅显示 DCCP套接字(sockets)
-w, --raw 仅显示 RAW套接字(sockets)
-x, --unix 仅显示 Unix套接字(sockets)
-f, --family=FAMILY  显示 FAMILY类型的套接字(sockets),FAMILY可选,支持  unix, inet, inet6, link, netlink
-A, --query=QUERY, --socket=QUERY
      QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-D, --diag=FILE     将原始TCP套接字(sockets)信息转储到文件
-F, --filter=FILE   从文件中都去过滤器信息
       FILTER := [ state TCP-STATE ] [ EXPRESSION ]

(6)后台启动时指定IP
若想通过机器IP访问则需要启动时指定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

2020-09-28 18:40:02.623598 I | etcdmain: etcd Version: 3.3.10
2020-09-28 18:40:02.644888 I | etcdmain: Git SHA: 27fc7e2
2020-09-28 18:40:02.644896 I | etcdmain: Go Version: go1.10.4
2020-09-28 18:40:02.644899 I | etcdmain: Go OS/Arch: linux/amd64
2020-09-28 18:40:02.644904 I | etcdmain: setting maximum number of CPUs to 8, total number of available CPUs is 8
2020-09-28 18:40:02.659594 I | etcdmain: advertising using detected default host "192.xxx.xx.xxx"
2020-09-28 18:40:02.659635 W | etcdmain: no data-dir provided, using default data-dir ./default.etcd
2020-09-28 18:40:02.686171 C | etcdmain: listen tcp 0.0.0.0:2380: bind: address already in use

$ nohup ./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 > /tmp/etcd.log 2>&1 &
[1] 42860

0.0.0.0:2379 表示任何ip都可以访问

参考

Ubuntu 搭建etcd
ETCD 安装、简介、使用REST API
golang etcd简明教程
彻底搞懂 etcd 系列文章(二):etcd 的多种安装姿势
每天一个linux命令(57):ss命令
etcd介绍

网站文章

  • QT connect使用简单介绍 最新发布

    QT connect使用简单介绍 最新发布

    QT connect 使用简单介绍

    2024-04-01 01:46:31
  • 吃豆人html代码原理,如何用HTML做一个吃豆人?

    吃豆人html代码原理,如何用HTML做一个吃豆人?

    首先做一个项目的先想如何去实现它。比如做一个吃豆人,如图:167b84dcbf0d3ed647b6b8c4abd75f92.jpg首先,需要分析这个吃豆人的组成部分。上半部分嘴,下半部分嘴,豆基本就三...

    2024-04-01 01:46:06
  • linux命令行设置颜色

    linux命令行设置颜色

    最近一直用linux,看着命令行一成不变的颜色,真的无语!话不多说,直接上教程。 1、编辑.bashrc文件. vim .bashrc 2、在.bashrc文件最后一行加入以下设置。(vim编辑器输入...

    2024-04-01 01:45:51
  • element--Cascader 点击文字选中+选中隐藏+多选

    //element Cascader 点击文字选中+选中隐藏+多选.el-cascader-panel .el-radio {width: 100%;height: 100%;z-index: 10;...

    2024-04-01 01:45:44
  • Vue-富文本编辑器组件封装之TinyMCE

    Vue-富文本编辑器组件封装之TinyMCE

    文章目录背景相关依赖接入说明中文文档组件汉化导入插件创建组件实例组件应用示例效果预览编辑器窗口上传图片效果内容小窗口预览遇到的问题及解决方案在dialog(弹窗)层级、遮挡问题预览效果宽度调整问题图片...

    2024-04-01 01:45:18
  • ffmpeg混音以及音视频混合处理

    ffmpeg混音以及音视频混合处理 ffmpeg的命令 这里是我最近研究的音视频混合处理的一些ffmpeg的命令 // 音频拼接 ffmpeg -i "concat:first.mp3|se...

    2024-04-01 01:45:10
  • MySQL基础笔记(七)DML

    MySQL基础笔记(七)DML

    DML主要是对数据进行增(insert)删(delete)改(update)操作。注意:如果update语句没有加where条件,则会将表中所有数据全部修改!将张三的生日改为 1999-12-12 分数改为99.99。

    2024-04-01 01:45:03
  • 联想小新I1000 win10电脑系统安装教程

    联想小新I1000 win10电脑系统安装教程

    最近因为之前电脑太卡了,想要给自己的联想小新重装系统,发现网上说采用以下方式安装的win10系统会更干净一些,过程做以下记录。

    2024-04-01 01:44:39
  • 软件测试 | FTP 性能测试脚本开发(2) 最新发布

    而许多内网的客户端不能用 PORT 模式登录 FTP 服务器,因为从服务器的 TCP20 端口无法和内部网络的客户端建立一个新的连接,从而造成了无法工作。在二进制传输中,保存文件的位序,以便原始和备份...

    2024-04-01 01:44:32
  • Vulnhub靶机渗透测试实战(一):DC-1(入门) 热门推荐

    Vulnhub靶机渗透测试实战(一):DC-1(入门) 热门推荐

    关于Vulnhub Vulnhub是一个特别好的渗透测试实战网站,提供了许多带有漏洞的渗透测试虚拟机下载。 新手入门DC-1: 下载地址: https://www.vulnhub.com/entry/...

    2024-04-01 01:44:26