前言
hello!大家好呀!今天是2020-08-07号,星期五,又和大家见面了,我是会打篮球会做饭的程序员,御前带糖侍卫。今天这篇文章是紧接着上一篇文章的内容,上一篇讲了如何在linux系统搭建docker环境,以及使用docker搭建mysql、activemq、redis 组件。今天就和大家讲讲如何在linux上搭建 elk、consul、 nexus 吧。教程开始之前先简单介绍一下这些中间件吧。
- elk 即 elasticsearch + logstash + kibana 的组合。elasticsearch不用说了,优秀的搜索引擎数据库,elogstash可用于线上的日志采集,或者其他的数据输入,存储到es里面 ,通过kibana查看es里面的数据。
- consul 作为微服务的服务注册中心。
- nexus maven私服,可以上传私有的jar包。
1. elk ----> 使用docker搭建elk环境
- 第一步:安装docker环境,没有安装的参考上一篇文章
- 第二步:使用docker-compose的方式安装elk
- 为了方便,可以使用docker-compose方式
- 创建一个elk文件夹,文件目录结构
- 编写 docker-compose.yml
version: '2'
services:
elasticsearch:
build:
context: elasticsearch/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
- ./elasticsearch/data:/usr/share/elasticsearch/data:rw
- ../xpack/x-pack-core-7.2.0.jar:/usr/share/elasticsearch/modules/x-pack-core/x-pack-core-7.2.0.jar
- ./elasticsearch/plugins:/usr/share/elasticsearch/plugins
restart: always
ports:
- "9200:9200"
- "9300:9300"
environment:
ES_JAVA_OPTS: "-Xmx4g -Xms4g"
ELASTIC_PASSWORD: changeme
networks:
- elk
logstash:
build:
context: logstash/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro
- ./logstash/pipeline:/usr/share/logstash/pipeline:ro
# - ./libs/mysql-connector-java-8.0.11.jar:/opt/logstash/logstash-core/lib/jars/mysql-connector-java-8.0.11.jar
- ./libs/jdk1.8.1_221:/usr/share/logstash/jdk8
#- ./libs/mysql.conf:/usr/share/logstash/config/mysql.conf
restart: always
ports:
- "5000:5000"
- "9600:9600"
#command: "-f /usr/share/logstash/config/mysql.conf"
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
JAVA_HOME: "/usr/share/logstash/jdk8"
networks:
- elk
depends_on:
- elasticsearch
kibana:
build:
context: kibana/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml:ro
restart: always
ports:
- "5601:5601"
networks:
- elk
depends_on:
- elasticsearch
networks:
elk:
driver: bridge
- docker-compose的方式启动elk
docker-compose up -d
2. nexus ----> maven私服 nexus3
- 搜索 nexus 镜像
docker search nexus
- 拉取镜像,一般选择第一个,可以加上版本号,不加的话默认最新版本,latest
docker pull sonatype/nexus3
- 查看镜像是否拉取成功
docker images
- docker run 方式启动 sonatype/nexus3
docker run -d --privileged=true --name=fuhang_nexus3 --restart=always -p 8081:8081 -v /root/nexus-data:/var/nexus-data sonatype/nexus3
命令 | 命令的含义 |
---|---|
-d | 后台运行 |
-p | 暴露的端口号,‘:’前面的是宿主机对外暴露的端口号,后面的组件的端口号 |
-v | docker容器里面挂在在宿主机的文件目录,‘:’前面是宿主机的文件目录,后面是组件在docker容器里面的文件目录 |
-e | environment运行环境,设置mysql的密码 |
- 为了方便,可以使用docker-compose方式
- 创建一个nexus3文件夹,文件目录结构
- 编写 docker-compose.yml
version: '3'
services:
nexus:
image: sonatype/nexus3
container_name: nexus3
restart: always
ports:
- 8082:8081
volumes:
- /root/nexus-data:/var/nexus-data
- docker-compose的方式启动nexus3
docker-compose up -d
3. consul----> 微服务 注册服务中心
- 第二步:使用docker-compose的方式安装consul
- 为了方便,可以使用docker-compose方式
- 创建一个consul文件夹,文件目录结构
- 编写 docker-compose.yml
version: '2'
networks:
byfn:
services:
consul1:
image: consul
container_name: node1
command: agent -server -bootstrap-expect=3 -node=node1 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1
restart: always
networks:
- byfn
consul2:
image: consul
container_name: node2
command: agent -server -retry-join=node1 -node=node2 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1
restart: always
depends_on:
- consul1
networks:
- byfn
consul3:
image: consul
container_name: node3
command: agent -server -retry-join=node1 -node=node3 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1
restart: always
depends_on:
- consul1
networks:
- byfn
consul4:
image: consul
container_name: node4
command: agent -retry-join=node1 -node=ndoe4 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1 -ui
restart: always
ports:
- 8500:8500
depends_on:
- consul2
- consul3
networks:
- byfn
- docker-compose的方式启动consul
docker-compose up -d
三、结束语
- 今天内容到此结束,本篇文章我们 介绍了安装maven私服,nexus、elk、consul 的docker-compose的搭建方式。需要配置文件的发邮箱1170115956@qq.com有空就会给你发过去的!