zoukankan      html  css  js  c++  java
  • docker部署spring boot并接入skywalking【部署篇】

    docker部署spring boot并接入skywalking【部署篇】

      首先给大家说声抱歉,大家看我之前这篇文章:docker部署spring boot并接入skywalking【探索篇】(https://www.cnblogs.com/windysai/p/15350506.html),应该是挺懵逼的,不单读者们看得迷迷糊糊,我估计以旁观者身份看,应该也觉得云里雾里。所以为了弥补我的过错,今天好好交代下整个部署流程。

      这个测试是从线上业务拿下来的,线上的架构是前后端分离

      前端:nginx代理转发到静态目录

      后端:nacos注册中心,直接跑在操作系统的微服务jar包(没用到docker),数据库(mysql、mongo、redis)

      整个测试,涉及公司内网3台服务器:服务器A用于jenkins发布,服务器B专门跑docker服务(跑nginx、nacos、jar),最后一台服务器C用于跑mysql数据库(原来已装有mysql,数据从线上测试环境同步过来,mongo和redis懒得装了,直接连线上的)

    服务器 应用 补充说明
    A jenkins发布前后端任务 内网本来已经装有
    B docker服务(nginx、nacos、jar、skywalking)  
    C mysql mongo、redis连线上

     

    一、准备工作

      服务器C上面说过,已装有mysql,只需要把线上测试环境的表同步下来

      叫开发帮忙在gitlab上的前端和后端git地址,帮我另起测试分支,将连接服务中心nacos的ip都从线上的改成公司内网虚拟机。最关键的是,前端登录接口要改成内网测试环境的。

     

    二、skywalking部署

     yaml文件参考探索篇的链接

    docker-compose -f skywalking-docker-compose.yaml up -d

    三、前端部署

      jenkins写的pipeline,npm编译后直接发布到nginx代理的静态页目录

    像我这里测试:docker start nginx  映射到宿主机的目录为 /usr/docker/nginx/html/项目目录/项目目录二级目录名

     

    、后端部署

    1、docker部署启动nacos

     用的是nacos的官方镜像:nacos/nacos-server

    下面的docker run命令上的 NACOS_SERVERS  ip 随意

    docker run -d --name nacos -p 8848:8848 -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server -e NACOS_SERVERS=172.17.0.2:8848 

    启动之后需要进容器修改配置文件:

    /home/nacos/conf/application.properties,主要是mysql连接信息改成公司服务器C的配置信息

    重启nacos生效:docker restart nacos

    没什么问题的话(关防火墙),访问地址应为:http://服务器B的ip地址:8848/nacos/#/login

    2、docker 部署微服务

      探索篇已经说过,由三个目录组成:build、services、yaml。

      build目录:基于skywalking-base 基础镜像来构建微服务镜像,包括一些环境变量声明

      services目录:映射运行目录到docker里面,包括jar包和日志

      yaml 目录:装有docker-compose.yaml文件,用于管理微服务启停

    这里交代一下,有些问题我还处理好,导致不能用docker-compose 来启动微服务,今天测试完全是基于手动运行的,因为docker-compose跑的时候一直报错说找不到build进去的脚本startup.sh,导致容器内的jar包压根没有起来。怀疑是构建微服务镜像写的Dockerfile文件有问题,打进去的运行脚本:startup.sh 是放在/app目录下的,docker-compose文件映射的运行目录也是/app,估计会覆盖,导致脚本都搞没了(猜测,可能会有误导成分 = =)

      自动化只能等明天上班再排查下了。。。今晚远程公司电脑都连不了,囧。。

    手动运行流程介绍
    假设我已经build好了一个微服务镜像文件:叫 windysai.sw(运行docker images能查到)
     
    (1)docker映射目录和端口,做容器内外关联
    docker run -itd --name windysai-sw -p 8080:8080 -v /root/test_sw/services/windysai:/app windysai:sw bash

    这里假设返回容器id:465456456

    (2)进入容器

    docker exec -it 465456456 bash

    (3)容器内手动运行jar包

    java -Duser.timezone=GMT+08 -javaagent:/skywalking/agent/skywalking-agent.jar -jar windysai.jar >> out_windysai.log

    整台服务器B的docker服务运行完是这样的

    skywalking监控图:

      前提是服务都已经成功注册到nacos上哈(服务列表能查到一堆微服务注册上来)

      登录前端页面好,进行一系列骚操作(开玩笑),就是各种点击、同步,千万不要删除,或者增加啥。。。

     拓扑图:

     

  • 相关阅读:
    uGUI知识点剖析之RectTransform
    C#中的结构体要使用new来实例化吗?
    LOL数值分析
    【《Effective C#》提炼总结】提高Unity中C#代码质量的21条准则
    AnimationCurve
    Unity3D 自动添加Fbx Animation Event
    unity 代码添加AnimationEvent
    untiy AnimationEvent添加返回参数
    Windows CreateEvent,SetEvent,WaitForSingleObject的用法
    C++ Socket编程步骤
  • 原文地址:https://www.cnblogs.com/windysai/p/15404429.html
Copyright © 2011-2022 走看看