博客
关于我
基于docker 如何部署surging分布式微服务引擎
阅读量:417 次
发布时间:2019-03-06

本文共 3198 字,大约阅读时间需要 10 分钟。

基于Docker的容器化部署指南

前言

转眼间surging开源已经有1年了,经过1年的打磨,surging从最初在window部署的分布式微服务框架,发展成为可以在docker部署并利用rancher进行服务编排的分布式微服务引擎。通过配置路径驱动加载业务模块,这种细粒度设计使得业务能够更加灵活地从对象层面进行拆分和聚合。以下将重点探讨基于docker的部署方案。

概述

容器是用来存放镜像的器皿,而镜像是构建成一个轻量的、独立的、可执行的包,包含了执行它所需的所有内容:代码、运行环境、系统工具、系统库、设置等。程序被构建成镜像后,所依赖的下层环境就不再重要了。它可以在任何地方运行,甚至在混合云环境下也能正常运行。因此,容器技术兴起让Docker逐渐映入大家的眼帘。

Docker是什么

Docker是基于Go语言开发的开源容器引擎。它将应用软件运行时所需的一切都打包成互相隔离的容器。Docker可以自动执行并配置开发/线上环境,快速构建、测试和运行复杂的多容器应用程序。即使面对数千个节点或容器的应用程序,Docker也能快速扩展和调配。它支持主流的Linux系统、Mac以及Windows,并能保证无论软件在哪里部署,都能正常运行并得到一致的结果。

相关概念

  • Image镜像Container容器:可以类比为类与实例对象或ISO系统镜像与虚拟机的关系。不同的Image包含不同的软件或环境,通过Dockerfile进行管理。而Container则是以Image为模板,可以独立运行的微型系统,一个Image可以创建多个Container实例。
  • Registry镜像仓库:如Docker Hub,为开发者提供庞大的镜像资源进行拉取和使用。
  • Dockerfile:用于将镜像构建命令组合在一起,自动构建Image。

环境搭建

系统环境

  • 宿主机:Windows 10专业版
  • Linux服务器:CentOS 3.10

安装Docker

Docker要求CentOS内核版本高于3.10。通过uname -r命令查看当前内核版本。安装步骤如下:

  • 使用yum install docker-engine安装docker包。
  • 安装成功后,运行docker version命令确认是否安装成功。
  • 启动Docker服务,运行systemctl start docker
  • 查看Docker状态,运行systemctl status docker
  • 测试运行hello-world,运行docker run hello-world
  • 安装Rancher

  • 下载Rancher镜像,运行docker pull rancher/server
  • 启动Rancher,运行docker run -d --restart=always -p 8080:8080 rancher/server
  • 访问http://ip:8080查看Rancher界面。
  • 安装RabbitMQ

  • 下载RabbitMQ镜像,运行docker pull rabbitmq:management
  • 启动RabbitMQ,运行docker run -d --name rabbitmq --publish 5672:5672 --publish 4369:4369 --publish 25672:25672 --publish 15671:15671 --publish 15672:15672 rabbitmq:management
  • 访问http://ip:15672查看RabbitMQ管理界面。
  • 安装Consul

  • 下载Consul镜像,运行docker pull docker.io/consul:latest
  • 创建Consul配置文件,运行vim /opt/platform/consul/server.json,填写如下内容:
    {    "datacenter": "quark-consul",    "data_dir": "/consul/data",    "server": true,    "ui": true,    "bind_addr": "192.168.249.162",    "client_addr": "192.168.249.162",    "bootstrap_expect": 1,    "retry_interval": "10s",    "rejoin_after_leave": false,    "skip_leave_on_interrupt": true  }
  • 启动Consul,运行docker run -d --net=host --name consul -v /opt/platform/consul/config:/consul/config -v /opt/platform/consul/data:/consul/data consul agent
  • 访问http://ip:8500查看Consul界面。
  • 安装dotnetcore 2.1 runtime

  • 下载镜像,运行sudo docker pull microsoft/dotnet:2.1-runtime
  • 启动,运行sudo docker run -it microsoft/dotnet:2.1-runtime
  • 部署程序

    部署Surging引擎

    新建Dockerfile文件:

    FROM microsoft/dotnet:2.1-runtime  WORKDIR /app  COPY . .  ENTRYPOINT ["dotnet", "Surging.Services.Server.dll"]
  • 发布程序,运行dotnet publish -r centos.7-x64 -c release
  • 创建镜像,运行docker build -t surgingserver .
  • 启动,运行docker run --name surgingserver --env Mapping_ip=192.168.249.162 --env Mapping_Port=198 --env RootPath=/home/fanly --env Register_Conn=192.168.249.162:8500 --env EventBusConnection=172.17.0.4 --env Surging_Server_IP=0.0.0.0 -v /home/fanly:/home/fanly -it -p 198:198 surgingserver
  • 部署成功后,可以在Rancher中查看相关服务。
  • 部署Surging网关

    新建Dockerfile文件:

    FROM microsoft/dotnet:2.1-runtime  WORKDIR /app  COPY . .  ENTRYPOINT ["dotnet", "Surging.ApiGateway.dll"]
  • 发布程序,运行dotnet publish -r centos.7-x64 -c release
  • 创建镜像,运行docker build -t surgingapi .
  • 启动,运行docker run --name surgingapi -it -p 729:729 --env Register_Conn=192.168.249.162:8500 surgingapi
  • 访问http://ip:729进行网关测试。
  • 总结

    通过1年的开发,Surging已经趋于完善,性能表现优异,平均访问时间仅为0.12ms左右。未来,Surging将在上海微软研发中心与开发者见面,分享更多技术细节,欢迎大家积极参与讨论。

    转载地址:http://bscuz.baihongyu.com/

    你可能感兴趣的文章
    nodejs配置express服务器,运行自动打开浏览器
    查看>>
    NodeMCU教程 http请求获取Json中文乱码解决方案
    查看>>
    Nodemon 深入解析与使用
    查看>>
    NodeSession:高效且灵活的Node.js会话管理工具
    查看>>
    node~ http缓存
    查看>>
    node不是内部命令时配置node环境变量
    查看>>
    node中fs模块之文件操作
    查看>>
    Node中同步与异步的方式读取文件
    查看>>
    node中的get请求和post请求的不同操作【node学习第五篇】
    查看>>
    Node中的Http模块和Url模块的使用
    查看>>
    Node中自启动工具supervisor的使用
    查看>>
    Node入门之创建第一个HelloNode
    查看>>
    node全局对象 文件系统
    查看>>
    Node出错导致运行崩溃的解决方案
    查看>>
    Node响应中文时解决乱码问题
    查看>>
    node基础(二)_模块以及处理乱码问题
    查看>>
    node安装卸载linux,Linux运维知识之linux 卸载安装node npm
    查看>>
    node安装及配置之windows版
    查看>>
    Node实现小爬虫
    查看>>
    Node提示:error code Z_BUF_ERROR,error error -5,error zlib:unexpected end of file
    查看>>