注:先安装go,因为etcd和vpp-agent都需要使用go开发的,所以需要go环境的支持
go安装过程如下:
(1)官网下载对应链接:
链接:https://golang.google.cn/dl/
centos7下使用:wget https://dl.google.com/go/go1.13.linux-amd64.tar.gz(前提先有wget命令)
wget安装:yum -y install wget
(2)解压到/usr/local/目录下:
tar -xvf go1.12.linux-amd64.tar.gz -C /usr/local/
(3)把/usr/local/go/bin路径添加到环境变量PATH中
#修改.bashrc文件:
vim ~/.bashrc
#在最后一行添上:
export PATH=/usr/local/go/bin:$PATH
#生效方法:(有以下两种)
临时生效:1、关闭当前终端窗口,重新打开一个新终端窗口就能生效
永久生效:2、输入“source ~/.bashrc”命令,立即生效
到目前为止算是安装完成,可以使用go命令。比如go env:查看go环境。
发现默认的GOPATH为/root/go
所以可以在/root目录下创建go目录,也可以指定其他的目录为GOPATH;
也可以直接通过yum -y install go来安装;
配置
安装完成后,通过go env查看环境变量,需要注意的有两个:
1.GOROOT就是Go安装路径。已经设置好了不需要在设置。
2.GOPATH就是依赖包的安装路径。设置了默认路径/root/go,如果想修改,可以参考上面步骤为GOPATH添加新的路径。
Go1.12为环境变量GOPROXY设置了默认路径:https://proxy.golang.org,direct。但是由于某些因素,这个使用不了,你懂的。所以七牛云为中国的gopher提供了一个免费合法的代理goproxy.cn,其已经开源。只需一条简单命令就可以使用该代理:
go env -w GOPROXY=https://goproxy.cn,direct
配置完GOPATH之后,GPOPATH目录下
应该有三个目录:
bin:生成的可执行文件,可以手动创建;
pkg:安装的依赖包,一般安装依赖后会自动创建;
src:你的源码,手动创建,里面可以根据自己的项目再次创建多层文件夹;还有一些使用go get从其他网站下载的,也会以文件夹的格式命名,并将代码保存到该目录下的对应文件夹中
常用命令
go install 的编译过程有如下规律:
- go install 是建立在 GOPATH 上的,无法在独立的目录里使用 go install。
- GOPATH 下的 bin 目录放置的是使用 go install 生成的可执行文件,可执行文件的名称来自于编译时的包名。
- go install 输出目录始终为 GOPATH 下的 bin 目录,无法使用-o附加参数进行自定义。
- GOPATH 下的 pkg 目录放置的是编译期间的中间文件。
go get 命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装。整个过程就像安装一个 App 一样简单。
这个命令可以动态获取远程代码包,目前支持的有 BitBucket、GitHub、Google Code 和 Launchpad。在使用 go get 命令前,需要安装与远程包匹配的代码管理工具,如 Git、SVN、HG 等,参数中需要提供一个包名。
这个命令在内部实际上分成了两步操作:第一步是下载源码包,第二步是执行 go install。下载源码包的 go 工具会自动根据不同的域名调用不同的源码工具,对应关系如下:
BitBucket (Mercurial Git)
GitHub (Git)
Google Code Project Hosting (Git, Mercurial, Subversion)
Launchpad (Bazaar)
所以为了 go get 命令能正常工作,你必须确保安装了合适的源码管理工具,并同时把这些命令加入你的 PATH 中。
说明:
go get可以在任意目录执行
使用go get时,ssh不能启动代理,不然会报错超时
etcd
安装
yum安装
编译安装:
如果git clone和go get安装时都特别特别慢,可以选用下面的安装方法:
去GitHub releases page:Releases · etcd-io/etcd · GitHub
根据自己的系统下载对应的软件包,下载完成后解压。
(使用wget工具直接下载下来,速度很快,使用wget时,依然要开启ssh的代理,不过具体环境还是要自己测试,开不开哪个速度更快,我这里开了更快)
进入到解压的目录,将etcd和etcdctl可执行文件移动到$GOPATH/bin目录下。然后执行命令etcd --version,同样会看到版本信息。
补充说明:
因为etcd是go语言编写的,安装只需要下载对应的二进制文件,并放到合适的路径就行。
常用命令
查看etcd信息
./etcd -version
启动:
前台启动:./etcd
后台启动:nohup ./etcd >/tmp/etcd.log 2>&1 & # 日志文件输出到/tmp/etcd.log目录
添加key value
./etcdctl put key value
返回ok则表示添加成功
获取key对应的value
./etcdctl get key
./etcdctl get --prefix / #查看指定目录下的kye value
删除键值对:
./etcdctl del key
设置环境变量
echo 'export ETCDCTL_API=3' >> /etc/profile # 环境变量添加 ETCDCTL_API=3
source /etc/profile # 使profile中修改的文件生效
./etcdctl get key #获取key对应的value
REST API
etcd支持rest风格的接口,可直接利用curl直接与etcd交互
查看基本信息
curl http://127.0.0.1:2379/version
默认2379和2380端口只在127.0.0.1机器上监听,即本机
可以使用ss -tnl查看端口监听情况;
若想通过机器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
# 后台启动
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 &
0.0.0.0:2379 表示任何ip都可以访问
curl http://192.168.72.31:2379/version # 也可以通过本机IP访
补充说明
etcd在键的组织上采用了层次化的空间结构(类似于文件系统中目录的概念),用户指定的键可以为单独的名字,如:testkey,此时实际上放在根目录/下面,也可以为指定目录结构,如/cluster1/node2/testkey,则将创建相应的目录结构
./etcdctl get --prefix /
查看/ 目录下的所有键值对,这里可以指定要查看的目录
vpp-agent
安装启动
流程
直接从github上clone下来用就行了
GitHub - ligato/vpp-agent: ⚡️ Control plane management agent for FD.io's VPP
git clone https://github.com/ligato/vpp-agent.git
执行make 下面这几个