Etcd ,Cadvisor 基础安装和应用

安装Etcd,二进制程序包下载安装

mkdir - p /home/install && cd /home/install
wget https://github.com/etcd-io/etcd/releases/download/v0.4.6/etcd-v0.4.6-linux-amd64.tar.gz
[root@localhost install]# tar -zxvf etcd-v0.4.6-linux-amd64.tar.gz 
etcd-v0.4.6-linux-amd64/
etcd-v0.4.6-linux-amd64/etcd
etcd-v0.4.6-linux-amd64/etcdctl
etcd-v0.4.6-linux-amd64/README-etcd.md
etcd-v0.4.6-linux-amd64/README-etcdctl.md
[root@localhost install]# cd etcd-v0.4.6-linux-amd64
[root@localhost etcd-v0.4.6-linux-amd64]# ls
etcd  etcdctl  README-etcdctl.md  README-etcd.md
[root@localhost etcd-v0.4.6-linux-amd64]# cp etcd* /bin/
[root@localhost etcd-v0.4.6-linux-amd64]# /bin/etcd -version
etcd version 0.4.6    #显示此信息说明部署成功
[root@localhost etcd-v0.4.6-linux-amd64]#
[root@localhost etcd-v0.4.6-linux-amd64]# mkdir -p /data/etcd   #etcd数据目录
[root@localhost etcd-v0.4.6-linux-amd64]# /bin/etcd -name etcdserver -peer-addr 192.168.118.129:7001 -addr 192.168.118.129:4001 -data-dir /data/etcd/ -peer-bind-addr 0.0.0.0:7001 -bind-addr 0.0.0.0:4001 &
[1] 9641
[root@localhost etcd-v0.4.6-linux-amd64]# [etcd] Aug 30 20:24:24.819 INFO      | etcdserver is starting a new cluster
[etcd] Aug 30 20:24:24.826 INFO      | etcd server [name etcdserver, listen on 0.0.0.0:4001, advertised url http://192.168.118.129:4001]
[etcd] Aug 30 20:24:24.827 INFO      | peer server [name etcdserver, listen on 0.0.0.0:7001, advertised url http://192.168.118.129:7001]
[etcd] Aug 30 20:24:24.828 INFO      | etcdserver starting in peer mode
[etcd] Aug 30 20:24:24.828 INFO      | etcdserver: state changed from 'initialized' to 'follower'.
[etcd] Aug 30 20:24:24.828 INFO      | etcdserver: state changed from 'follower' to 'leader'.
[etcd] Aug 30 20:24:24.828 INFO      | etcdserver: leader changed from '' to 'etcdserver'.

由于Etcd具备多机容灾支持,参数“-peer-addr”指定与其他节点通信的地址;参数“-addr” 指定服务监听地址;参数“-data-dir”为指定数据存储目录;IP地址192.168.118.129为安装Etcd的主机。

查看端口

[root@localhost etcd-v0.4.6-linux-amd64]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1036/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1168/master         
tcp6       0      0 :::4001                 :::*                    LISTEN      9641/etcd           
tcp6       0      0 :::22                   :::*                    LISTEN      1036/sshd           
tcp6       0      0 :::7001                 :::*                    LISTEN      9641/etcd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1168/master

配置Etcd服务防火墙,其中4001为服务端口,7001为集群数据交换端口,策略如下:

[root@localhost etcd-v0.4.6-linux-amd64]# iptables -I INPUT -s 192.168.118.0/24 -p tcp --dport 4001 -j ACCEPT
[root@localhost etcd-v0.4.6-linux-amd64]# iptables -I INPUT -s 192.168.118.0/24 -p tcp --dport 7001 -j ACCEPT

使用方法:
Etcd提供了2种操作方法,一种是基于HTTP的RESTful API,是一个用HTTP并遵循REST原则的web服务,通过不同URL来封装业务逻辑,由于基于HTTP协议,因此我们可以使用curl命令来操作,比较适合程序的调用。另一个是通过命令etcdctl方法.

(1)Set key(设置键值)

给“/message” key设置“Hello world”值,

[root@localhost etcd]# curl http://192.168.118.129:4001/v2/keys/messsage -XPUT -d value-"hello world"
{"action":"set","node":{"key":"/messsage","value":"","modifiedIndex":3,"createdIndex":3}}
[root@localhost etcd]#

命令行操作如下:

[root@localhost etcd]# etcdctl set /message "Hello world"
Hello world
(2)Get key(获取键值)

获取“/message” key值,

[root@localhost etcd]# curl http://192.168.118.129:4001/v2/keys/message
{"action":"get","node":{"key":"/message","value":"Hello world","modifiedIndex":4,"createdIndex":4}}
[root@localhost etcd]# etcdctl get /message
Hello world
(3)Changing value(更新键)

更新“/message” key的值为“Hello world”,操作命令如下:

[root@localhost etcd]# curl http://192.168.118.129:4001/v2/keys/message -XPUT -d value="Hello etcd"
{"action":"set","node":{"key":"/message","value":"Hello etcd","modifiedIndex":5,"createdIndex":5},"prevNode":{"key":"/message","value":"Hello world","modifiedIndex":4,"createdIndex":4}}
[root@localhost etcd]# etcdctl update /message "Hello etcd"
Hello etcd
(4)Deleting a key(删除键)

删除“/message ” key ,

[root@localhost etcd]# curl http://192.168.118.129:4001/v2/keys/message -XDELETE
{"action":"delete","node":{"key":"/message","modifiedIndex":7,"createdIndex":5},"prevNode":{"key":"/message","value":"Hello etcd","modifiedIndex":6,"createdIndex":5}}
[root@localhost etcd]#
[root@localhost etcd]# etcdctl rm /message
(5)Creating Directories(创建目录)

创建一个“/dir”目录,

[root@localhost etcd]# curl http://192.168.118.129:4001/v2/keys/dir -XPUT -d dir=true
{"action":"set","node":{"key":"/dir","dir":true,"modifiedIndex":11,"createdIndex":11}}
[root@localhost etcd]# etcdctl mkdir /dir
(6)Deleting a Directory(删除目录)

删除“/dir”目录

[root@localhost etcd]# curl 'http://192.168.118.129:4001/v2/keys/dir?dir=true' -XDELETE
{"action":"delete","node":{"key":"/dir","dir":true,"modifiedIndex":12,"createdIndex":11},"prevNode":{"key":"/dir","dir":true,"modifiedIndex":11,"createdIndex":11}}
[root@localhost etcd]# etcdctl rmdir /dir
(7)watch value change(捕捉key的value更新事件)

用于捕捉key的value的更新事件,从而触发某个动作。实现捕捉“/message” key的变化,命令执行后会处于等待状态,直到key的value发生改变才退到系统提示符,

[root@localhost etcd]# curl http://192.168.118.129:4001/v2/keys/message?wait=true
[root@localhost etcd]# etcdctl watch /message

Cadvisor实践

Cadvisor容器监控平台,是用来分析运行中的Docker容器的资源占用及性能特性的工具。Cadvisor是一个运行中的守护进程,用来收集、聚合、处理和导出运行容器相关的信息,每个容器保持独立的参数、历史资源使用情况和完整的资源使用数据。

访问http://ip:8081,访问成功,说明安装成功。

docker run --volume=/var/run:/var:rw --volume=/sys/fs/cgroup/:/sys/fs/cgroup:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8081:8080 -detach=true google/cadvisor

参数参考:

--volume , -v       Bind mount a volume

--detach , -d       Run container in background and print container ID

Publish or expose port (-p, --expose)
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
This binds port 8080 of the container to TCP port 80 on 127.0.0.1 of the host machine. You can also specify udp and sctp ports. The Docker User Guide explains in detail how to manipulate ports in Docker.

Cadvisor提供了Remote REST API,,可以轻松与采集程序进行对接。
通过接口我们可以获取前端UI看到的所有原始数据,调用地址格式如下(限V1.0版本):

http://<hostname>:<port>/api/<version>/<request>

(1)获取容器性能数据。API访问格式如下:

http://ip:8081/api/v1.0/containers  #获取所有容器信息
http://ip:8081/api/v1.0/containers/docker/container id #获取指定的容器ID信息

(2)获取主宿机性能数据。通过CadvisorAPI,我们也可以获取主宿机的性能数据,API访问格式如下:

http://ip:8080/api/v1.0/machine

猜你喜欢

转载自blog.csdn.net/qq_40279031/article/details/82462015
今日推荐