基于docker 如何部署surging分布式微服务引擎

1、前言

转眼间surging 开源已经有1年了,经过1年的打磨,surging已从最初在window 部署的分布式微服务框架,到现在的可以在docker部署利用rancher 进行服务编排的分布式微服务引擎,再把业务进行剥离, 通过配置路径就能驱动加载业务模块,这样的细粒度设计,能更加灵活从业务中针对于对象加以细分,能更加灵活的拆分聚合服务。而这篇文章我们来谈谈基于docker 如何部署

surging源码下载

2、概述

容器,就是用来存放镜像的器皿,而镜像是构建成的一个轻量的、独立的、可执行的包,包括了执行它所需要的所有东西:代码、运行环境、系统工具、系统库、设置。

程序被构建成镜像放到容器中,那么它所依赖的下层环境就不再重要了。它可以在任何地方运行,甚至在混合云环境下也可以。所以为何容器能流行起来,而容器技术兴起让Docke也渐渐的映入大家的眼帘,

那么Docker又是什么呢?

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

相关概念介绍

  • Image镜像和Container容器:你可以把两者理解为类和实例对象,或者是ISO系统镜像和虚拟机的关系。不同的Image所包含的软件或者环境是不同的,但是你可以使用Dockerfile(docker特有语法规则所创建的文件)进行管理。而Container则是以Image作为模板,可以独立运行的微型系统,一个Image可以创建出来多个Container容器的实例
  • Registry:Docker Hub镜像仓库,为每个人提供庞大的镜像资源进行拉取和使用
  • Dockerfile:是一个将镜像命令组合在一起的文件,用于Image的自动构建

3、环境搭建

系统环境

宿主机:Windows 10 专业版

Linux服务器: CentOS 3.10

1.安装Docker

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过 uname -r 命令查看你当前的内核版本

[[email protected] ~]# uname -r 3.10.0-862.E17.X86_64

# yum install docker-engine 安装docker包

安装成功后,使用docker version命令查看是否安装成功,安装成功后------如下图

启动 Docker

systemctl  start  docker

 查看docker信息,如下图

systemctl  status  docker

测试运行 hello-world

#docker run hello-world

2.安装rancher

下载镜像

docker pull rancher/server

启动rancher

docker run -d --restart=always -p 8080:8080 rancher/server

安装成功后,通过http://ip:8080访问,如下图所示

3.安装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访问,如下图所示

4.安装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
}

配置说明

官方在启动容器的时候是将一部分配置作为 docker run 的参数,而我是把参数写到了配置文件里。

  • datacenter:数据中心名称(库名)
  • data_dir:数据存储目录
  • server:运行在server模式
  • ui:使用UI界面
  • bind_addr:内部集群通信绑定的地址。默认是0.0.0.0,如果有多块网卡,需要指定,否则启动报错
  • client_addr:客户端接口绑定的地址,默认是127.0.0.1
  • retry_join:重新加入集群
  • retry_interval:重试时间
  • rejoin_after_leave:在离开集群之后才重试加入
  • skip_leave_on_interrupt:在启动后,是否 Ctrl+C 优雅退出,我们是容器模式,所以不用管,直接 true 就好了。

启动 consul-server

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访问,如下图所示

5. 安装dotnetcore 2.1 runtime

下载镜像

#sudo docker pull microsoft/dotnet:2.1-runtime

启动

#sudo docker run -it microsoft/dotnet:2.1-runtime

三、部署程序

1. 部署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

使用Dockerfile创建镜像

#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

配置说明

  • Mapping_ip:映射的外部IP(环境变量)
  • Mapping_port:映射的外部端口(环境变量)
  • RootPath:业务模块存储的根路径(环境变量)
  • Register_Conn:注册中心地址(环境变量)
  • EventBusConnection:eventbus 地址(环境变量)
  • Surging_Server_IP:容器内部IP(环境变量)

启动后在rancher如下图所示

因为方便,把宿主机的目录进行了挂载,microsurging 为分布式微服务引擎,Modules 为业务模块目录,surgingapi为网关

2. 部署surging网关,新建Dockerfile文件

FROM microsoft/dotnet:2.1-runtime
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "Surging.ApiGateway.dll"]

发布程序

dotnet publish -r centos.7-x64 -c release

使用Dockerfile创建镜像

docker build -t surgingapi .

启动

#docker run --name surgingapi -it -p 729:729 --env Register_Conn=192.168.249.162:8500 surgingapi

启动后在rancher如下图所示

可以通过http://ip:729进行访问

然后可以通过postman 来测试网关,如下图

四、总结

通过1年的开发,surging 也趋于完善,性能非常不错,平均访问在0.12ms 左右,而且6月30日会在上海微软研发中心和大家见面讲解下surging 微服务引擎,也请大家多多关注

原文地址:https://www.cnblogs.com/fanliang11/p/9191793.html

时间: 2024-10-08 01:49:39

基于docker 如何部署surging分布式微服务引擎的相关文章

docker部署PiggyMetrics分布式微服务

在上一篇文章里http://www.cnblogs.com/lyhero11/p/8686058.html, 讲解了如何在windows10下安装docker社区版. 那如何利用docker落地一个分布式微服务架构的系统呢? github上有一个不错的开源项目PiggyMetrics,通过这个可以学习用docker和spring cloud做分布式微服务架构. 原项目地址:https://github.com/sqshq/PiggyMetrics 国内有个网友把里边应用的mongodb数据库示例

Spring Cloud分布式微服务云架构构建

大型企业分布式微服务云架构服务组件 实现模块化.微服务化.原子化.灰度发布.持续集成 commonservice eurekaNetflix 云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移. commonservice configSpring 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储.Git以及Subversion. Spring Cloud BusSpring 事件.消息总线,用于在集群(例如,配置变化事件

分布式微服务b2b b2c o2o电子商务云平台

大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B2C.C2C.O2O.新零售.直播电商等子平台. 技术解决方案 开发语言: java.j2ee 数据库:mysql JDK支持版本: JDK1.6.JDK1.7.JDK1.8版本 核心技术:分布式.云服务.微服务.服务编排等. 核心架构: 使用Spring Cloud分布式微服务云架构进行服务化开发,所有模块功能完全解耦,提供服务发现.注册.配置中心.消息总线.负载均衡.断路器.数据监控等. 技术列

互联网分布式微服务云平台规划分析--系统管理平台

1.介绍 鸿鹄云架构[系统管理平台]是一个大型企业.分布式.微服务.云架构的JavaEE体系快速研发平台,基于模块化.微服务化.原子化.热部署的设计思想,使用成熟领先的无商业限制的主流开源技术构建. 采用服务化的组件开发模式,可实现复杂的业务功能.使用Maven进行项目的构建管理,采用Jenkins进行持续集成,主要定位于大型分布式企业系统或大型分布式互联网产品的架构.使用当前最流行最先进的开源技术实现服务组件化及管理,真正为企业打造分布式微服务云架构平台. ? ?2.平台基础功能 首页统计 待

spring cloud互联网分布式微服务云平台规划分析--spring cloud系统管理平台

1.介绍 鸿鹄云架构[系统管理平台]是一个大型企业.分布式.微服务.云架构的JavaEE体系快速研发平台,基于模块化.微服务化.原子化.热部署的设计思想,使用成熟领先的无商业限制的主流开源技术构建. 采用服务化的组件开发模式,可实现复杂的业务功能.使用Maven进行项目的构建管理,采用Jenkins进行持续集成,主要定位于大型分布式企业系统或大型分布式互联网产品的架构.使用当前最流行最先进的开源技术实现服务组件化及管理,真正为企业打造分布式微服务云架构平台. ???2.平台基础功能 首页统计 待

企业分布式微服务云架构服务组件

大型企业分布式微服务云架构服务组件 实现模块化.微服务化.原子化.灰度发布.持续集成 Spring Cloud SecuritySpring 基于spring security的安全工具包,为你的应用程序添加安全控制. commonservice zipkinSpring 日志收集工具包,封装了Dapper和log-based追踪以及Zipkin和HTrace操作,为SpringCloud应用实现了一种分布式追踪解决方案. commonservice cachecache 独立分布式缓存服务.

Spring cloud--Hong hu Cloud分布式微服务云系统—Config

介绍 Spring Cloud Config 为分布式系统中的外部配置提供服务器和客户端支持.使用 Config Server,您可以在所有环境中管理应用程序的外部属性.客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同, 因此它们与 Spring 应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用.随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切.服务器存储后端

Spring cloud--鸿鹄Cloud分布式微服务云系统—Config

介绍 Spring Cloud Config 为分布式系统中的外部配置提供服务器和客户端支持.使用 Config Server,您可以在所有环境中管理应用程序的外部属性.客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同, 因此它们与 Spring 应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用.随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切.服务器存储后端

docker安装步骤及基于docker容器部署web应用LNMP服务器环境

docker的介绍 docker的定义: 1.docker的三个概念:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器Docker 镜像 - Docker images: Docker 镜像是 Docker 容器运行时的只读模板Docker 仓库 - Docker registeries: Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库(Docker Hub)Docker 容器 - Docker containers:每一个 Docke