Docker EFK 搭建

Docker Swarm 集群安装

准备

  • CentOS7
192.168.174.150 swarm-m
192.168.174.151 swarm-n
  • Docker
Client:
 Version:           18.09.8
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        0dd43dd87f
 Built:             Wed Jul 17 17:40:31 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.8
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       0dd43dd
  Built:            Wed Jul 17 17:10:42 2019
  OS/Arch:          linux/amd64
  Experimental:     false

安装

本文档主要介绍 Swarm 集群环境安装,以及可视化管理界面 Portainer 安装。

【集群】基础环境配置

第一步:Docker 安装

// 省略

第二步:修改主机名

# 192.168.174.150 主机
hostnamectl --static set-hostname swarm-m
# 192.168.174.151 主机
hostnamectl --static set-hostname swarm-n1

第三步:关闭SELinux

# 查看 SELinux 状态
getenforce
/usr/sbin/sestatus -v
# 临时关闭
setenforce 0
# 永久关闭
# 修改 /etc/selinux/config 配置文件,将SELINUX=enforcing改为SELINUX=disabled
#SELINUX=enforcing
SELINUX=disabled
# 重启
reboot

第四步:关闭防火墙

#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service

第五步:修改docker监听端口

# 修改 /lib/systemd/system/docker.service 配置文件,在ExecStart加入:-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

第六步:重启docker服务

#使配置文件生效
systemctl daemon-reload
#重启docker服务
systemctl restart docker

【集群】Swarm安装和集群创建

第一步:Swarm镜像下载

# 在两台主机上分别安装 Swarm
docker pull swarm
[root@swarm-m ~]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
swarm                 latest              ff454b4a0e84        13 months ago       12.7MB

第二步:初始化 Swarm(192.168.174.150)

[root@swarm-m ~]# docker swarm init --advertise-addr 192.168.174.150
Swarm initialized: current node (xvzoctxprixgk4r9qfrafzcr6) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-1rd4qulqvyfrmpz5z8qbh9jw1obgpde5fhl2crvigxvz0p737o-b02c8cqcq1sb7d9q3l8xuo12m 192.168.174.150:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

第三步:添加集群node节点(192.168.174.151)

docker swarm join --token SWMTKN-1-1rd4qulqvyfrmpz5z8qbh9jw1obgpde5fhl2crvigxvz0p737o-b02c8cqcq1sb7d9q3l8xuo12m 192.168.174.150:2377

第四步:查看集群节点(192.168.174.150)

[root@swarm-m ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
xvzoctxprixgk4r9qfrafzcr6 *   swarm-m             Ready               Active              Leader              18.09.8
pcajl37kieq1g70d08ypr23v6     swarm-n1            Ready               Active                                  18.09.8

Portainer 可视化管理界面(192.168.174.150)

下载官方镜像

docker pull portainer/portainer

单机运行

如果仅有一个docker宿主机,则可使用单机版运行,Portainer单机版运行十分简单,只需要一条语句即可启动容器,来管理该机器上的docker镜像、容器等数据。

创建数据卷:

docker volume create portainer_data

运行容器:

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

参数说明:
-d:容器在后台运行;
-p 9000:9000 :宿主机9000端口映射容器中的9000端口
-v /var/run/docker.sock:/var/run/docker.sock :把宿主机的Docker守护进程(Docker daemon)默认监听的Unix域套接字挂载到容器中;
-v portainer_data:/data :把宿主机portainer_data数据卷挂载到容器/data目录;

集群运行

更多的情况下,我们会有一个docker集群,可能有几台机器,也可能有几十台机器,因此,进行集群管理就十分重要了,Portainer也支持集群管理,Portainer可以和Swarm一起来进行集群管理操作。首先要搭建了一个Swarm,本文不着重介绍swarm集群的安装。

portainer集群启动:

# 方式一
$ docker service create \
--name portainer \
--publish 9000:9000 \
--replicas=1 \
--constraint 'node.role == manager' \
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
--mount type=bind,src=//opt/portainer,dst=/data \
portainer/portainer \
-H unix:///var/run/docker.sock

# 方式二
docker run -d -p 9000:9000 --restart=always --name prtainer-test portainer/portainer

使用

使用 http://ip:9000 (admin / admin2019)访问,首次进入界面需要创建一个管理员账号,进入之后添加对应集群endpoint节点就行。

Swarmprom - Swarm的Prometheus监控

准备

  • Docker CE 17.09.0-ce或Docker EE 17.06.2-ee-3(或更高版本)
  • Swarm 具有一个管理器和一个工作器节点的集群
  • 启用了Docker引擎实验功能并将指标地址设置为 0.0.0.0:9323

安装

  1. 设置Docker 9323端口
# 修改 /lib/systemd/system/docker.service 配置文件,在ExecStart加入:--experimental=true --metrics-addr 0.0.0.0:9323
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --experimental=true --metrics-addr 0.0.0.0:9323
  1. clone swarmprom 项目(根据所需就行配置)
mkdir -p /opt/beyondsoft/warm #命名随意
git clone https://github.com/stefanprodan/swarmprom.git
cd swarmprom
  1. 通过docker stack 启动swarmprom监控
ADMIN_USER=admin \
ADMIN_PASSWORD=admin \
SLACK_URL=https://hooks.slack.com/services/TOKEN \
SLACK_CHANNEL=devops-alerts \
SLACK_USER=alertmanager \
docker stack deploy -c docker-compose.yml mon

【注】具体配置请参考官方文档

Weave

准备

  • Swarm 集群(master:10.8.7.71 slave1:10.8.7.72)

安装

Weave介绍

Weave是Github上一个比较热门的Docker容器网络方案,具有非常良好的易用性且功能强大。Weave 的框架它包含了两大主要组件:

  • Weave:用户态的shell脚本,用于安装Weave,将container连接到Weave虚拟网络。并为它们分配IP。
  • Weaver:运行于container内,每个Weave网络内的主机都要运行,是一个Go语言实现的虚拟网络路由器。不同主机之间的网络通信依赖于Weaver路由。

Weave通过创建虚拟网络使Docker容器能够跨主机通信并能够自动相互发现。
通过weave网络,由多个容器构成的基于微服务架构的应用可以运行在任何地方:主机,多主机,云上或者数据中心。
应用程序使用网络就好像容器是插在同一个网络交换机上一样,不需要配置端口映射,连接等。
在weave网络中,使用应用容器提供的服务可以暴露给外部,而不用管它们运行在何处。类似地,现存的内部系统也可以接受来自于应用容器的请求,而不管容器运行于何处。

一个Weave网络由一系列的'peers'构成----这些weave路由器存在于不同的主机上。每个peer都由一个名字,这个名字在重启之后保持不变.这个名字便于用户理解和区分日志信息。
每个peer在每次运行时都会有一个不同的唯一标识符(UID).对于路由器而言,这些标识符不是透明的,尽管名字默认是路由器的MAC地址。

Weave路由器之间建立起TCP连接,通过这个连接进行心跳握手和拓扑信息交换,这些连接可以通过配置进行加密。
peers之间还会建立UDP连接,也可以进行加密,这些UDP连接用于网络包的封装,这些连接是双工的而且可以穿越防火墙。
Weave网络在主机上创建一个网桥,每个容器通过veth pari连接到网桥上,容器由用户或者weave网络的IPADM分配IP地址。

  1. weave
# 下载
curl -L git.io/weave -o /usr/local/bin/weave
# 赋予执行权限
chmod a+x /usr/local/bin/weave

# 查看weave版本
weave version
# 查看weave状态
weave status
weave status connections

yum -y install bridge-utils


# 启动weave 10.8.7.71
weave launch
# 节点启动的时候连接到master (创建weave网络的主机叫master) 10.8.7.72
weave launch 10.8.7.72

docker ps  # 如果有一个weaveworks/weave容器在运行就表示启动成功,后边两个检查并非必须!
brctl show # 检查网桥, weave启动还会生成一个名叫weave的网桥, (docker0网桥是docker默认生成的)
docker network ls  # 检查docker中的网络配置, 发现其中也生成了一个Name为weave的网络
  1. scope
sudo curl -L git.io/scope -o /usr/local/bin/scope
sudo chmod a+x /usr/local/bin/scope
# 10.8.7.71 执行
scope launch
# 10.8.7.72 执行
scope launch 10.8.7.71
  1. 访问地址 http://10.8.7.71:4040 进行验证

【注】详细可参考官方文档

posted @ 2022-03-02 18:04  萱Baby  阅读(380)  评论(0编辑  收藏  举报