Ef41715539fff5f34d770011aab8656f
Go 日志收集系统:Docker 安装 etcd 集群、kafka、zookeeper

我们开发一个日志收集系统,需要用到etcd、kafka,etcd用作服务的注册与发现,健康检查,kafka用作消息接受和存储,我们先用docker来安装etcd集群,并简单介绍下etcd的使用。如果对docker不熟悉的,可以查看我之前的dokcer课程链接提示

简介

在分布式系统中,各种服务的配置信息的管理分享,服务的发现是一个很基本同时也是很重要的问题。CoreOS 项目就希望基于 etcd 来解决这一问题,
一般情况下,用户使用 etcd 可以在多个节点上启动多个实例,并添加它们为一个集群。同一个集群中的 etcd 实例将会保持彼此信息的一致性。

Docker 镜像方式运行

镜像名称为 quay.io/coreos/etcd,可以通过下面的命令启动 etcd 服务监听到 2379 和 2380 端口。

docker run --name etcd \
    -p 2379:2379 \
    -p 2380:2380 \
    --volume=/Users/chenlong/docker/etcd-data:/etcd-data \
    quay.io/coreos/etcd:latest \
    /usr/local/bin/etcd \
    --data-dir=/Users/chenlong/docker/etcd-data --name node1 \
    --initial-advertise-peer-urls http://192.168.92.172:2380 --listen-peer-urls http://0.0.0.0:2380 \
    --advertise-client-urls http://192.168.92.172:2379 --listen-client-urls http://0.0.0.0:2379 \
    --initial-cluster node1=http://192.168.92.172:2380

注意:ip换成自己的,etcd 官方标注 quay.io/coreos/etcd 即将废弃,启用新的 gcr.io/etcd-development/etcd 镜像,但后者由于网络原因,国内不能下载到该镜像,这里仍然使用前者作为演示。

docker-compose启动etcd 集群

```
version: '3'
services:
etcd0:
image: quay.io/coreos/etcd
ports:
- 2379
volumes:
- etcd0:/etcd_data
command:
- /usr/local/bin/etcd
- -name
- etcd0
- --data-dir
- /etcd_data
- -advertise-client-urls
- http://etcd0:2379
- -listen-client-urls
- http://0.0.0.0:2379
- -initial-advertise-peer-urls
- http://etcd0:2380
- -listen-peer-urls
- http://0.0.0.0:2380
- -initial-cluster
- etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380
etcd1:
image: quay.io/coreos/etcd
ports:
- 2379
volumes:
- etcd1:/etcd_data
command:
- /usr/local/bin/etcd
- -name
- etcd1
- --data-dir
- /etcd_data
- -advertise-client-urls
- http://etcd1:2379
- -listen-client-urls
- http://0.0.0.0:2379
- -initial-advertise-peer-urls
- http://etcd1:2380
- -listen-peer-urls
- http://0.0.0.0:2380
- -initial-cluster
- etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380
etcd2:
image: quay.io/coreos/etcd
ports:
- 2379

top Created with Sketch.