springcloud+sleuth+kafka+zipkin+elasticsearch使用docker简单部署

springcloud+sleuth+kafka+zipkin+elasticsearch使用docker简单部署

  • 简介
    • 方案
    • 环境
  • 部署
    • spingcloud集成sleuth、zipkin、binder-kafka依赖
    • application.properties配置
    • docker安装zk、kafuka、elasticsearch、elasticsearch-head
    • 下载zipkin、启动zipkin
  • 测试
    • 测试部署效果

简介

springcloud要是下调用链,首选springcloud家族的sleuth,数据展示大多都使用apache的zipkin。日志量大一般会使用mq做消峰,可以选中各种消息中间件,我先使用了rabbitMQ,后决定使用kafuka,因为kafuka吞吐量高于rabbitMQ。数据持久化采用elasticsearch。

方案

考虑到kafuka、elasticsearch部署麻烦,故使用docker安装kafuka、elasticsearch。zipkin下载jar包运行。

环境

docker:18.09.6
springboot:2.0.9.RELEASE
springcloud:Finchley.SR2
sleuth:2.0.2.RELEASE
kafuka:wurstmeister/kafka:latest
zipkin:zipkin-server-2.12.9-exec.jar
elasticsearch:docker.elastic.co/elasticsearch/elasticsearch:6.3.2

部署

spingcloud集成sleuth、zipkin、binder-kafka依赖

需要在所有的服务中加入以下依赖

		<dependency>
			<groupId>org.springframework.cloudgroupId>
			<artifactId>spring-cloud-starter-sleuthartifactId>
		dependency>
		<dependency>
			<groupId>org.springframework.cloudgroupId>
			<artifactId>spring-cloud-starter-zipkinartifactId>
		dependency>




        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-stream-binder-kafkaartifactId>
        dependency>

application.properties配置

需要在所有的服务中加入以下配置

#开启sleuth的debug级别日志
logging.level.org.springframework.cloud.sleuth=debug


#默认方式
#spring.zipkin.base-url=http://localhost:9411/
#spring.sleuth.web.client.enabled=true
#spring.sleuth.sampler.probability=1


#使用rabbitmq方式
#spring.zipkin.sender.type=rabbit
#spring.sleuth.web.client.enabled=true
##采样比例默认是0.1 为1表示全部上报
#spring.sleuth.sampler.probability=1
#spring.rabbitmq.host=127.0.0.1
#spring.rabbitmq.port=5672
#spring.rabbitmq.password=guest
#spring.rabbitmq.username=guest
#spring.rabbitmq.virtual-host=/


#使用kafuka方式
spring.cloud.stream.kafka.binder.brokers: 10.255.32.161:9092
spring.cloud.stream.kafka.binder.zkNodes: 127.0.0.1:2181
spring.sleuth.web.client.enabled=true
#采样比例默认是0.1 为1表示全部上报
spring.sleuth.sampler.probability=1

docker安装zk、kafuka、elasticsearch、elasticsearch-head

#安装zookeeper
docker pull wurstmeister/zookeeper
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
#安装kafuka
docker pull wurstmeister/kafka
docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=192.168.59.101 --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest
#安装elasticsearch
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
#安装elasticsearch-head
docker pull mobz/elasticsearch-head:5
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
#安装rabbitMq
#docker pull rabbitmq:management
#docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management

修改elasticsearch的配置文件,加入跨域配置

docker exec -it es /bin/bash
vi config/elasticsearch.yml

最下面加入两行如下配置:

http.cors.enabled: true
http.cors.allow-origin: "*"

重启elasticsearch服务

docker restart es

下载zipkin、启动zipkin

wget -O zipkin.jar 'https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec'
#rabbitMQ中取数据
#RABBIT_ADDRESSES=127.0.0.1 java -jar zipkin-server-2.12.9-exec.jar
#kafuka中取数据
java -DKAFKA_ZOOKEEPER=127.0.0.1:2181 -DSTORAGE_TYPE=elasticsearch -DES_HOSTS=http://127.0.0.1:9200 -jar zipkin-server-2.12.9-exec.jar

测试

测试部署效果

zipkin访问地址:

http://127.0.0.1:9411/zipkin/

elasticsearch-head访问地址:

http://127.0.0.1:9100/

elasticsearch访问地址:

http://localhost:9200/

请求微服务,让产生相互调用。之后在zipkin中查看调用记录日志。

你可能感兴趣的:(spring,springcloud)