音效素材网提供各类素材,打造精品素材网站!

站内导航 站长工具 投稿中心 手机访问

音效素材

详解基于docker 如何部署surging分布式微服务引擎
日期:2018-06-18 11:04:37   来源:脚本之家

1、前言

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

surging源码下载

2、概述

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

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

那么Docker又是什么呢?

  1. Docker是基于Go语言开发并开源的容器引擎
  2. Docker将应用软件运行时所需的一切都打包成互相隔离的容器
  3. Docker可以自动执行并配置开发/线上环境,快速构建,测试和运行复杂的多容器应用程序
  4. 对拥有数千个节点或容器的应用程序,Docker也能快速的扩展和调配
  5. 可以运行在主流的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 命令查看你当前的内核版本

[root@runoob ~]# 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 run -d --restart=always -p 8080:8080 rancher/server

 

复制代码 代码如下:

 #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 的参数,而我是把参数写到了配置文件里。

  1. datacenter:数据中心名称(库名)
  2. data_dir:数据存储目录
  3. server:运行在server模式
  4. ui:使用UI界面
  5. bind_addr:内部集群通信绑定的地址。默认是 0.0.0.0 ,如果有多块网卡,需要指定,否则启动报错
  6. client_addr:客户端接口绑定的地址,默认是 127.0.0.1 ;
  7. retry_join:重新加入集群
  8. retry_interval:重试时间
  9. rejoin_after_leave:在离开集群之后才重试加入
  10. 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

配置说明

  1. Mapping_ip:映射的外部IP(环境变量)
  2. Mapping_port :映射的外部端口 (环境变量)
  3. RootPath:业务模块存储的根路径 (环境变量)
  4. Register_Conn:注册中心地址 (环境变量)
  5. EventBusConnection:eventbus 地址 (环境变量)
  6. 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 左右

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

    您感兴趣的教程

    在docker中安装mysql详解

    本篇文章主要介绍了在docker中安装mysql详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编...

    详解 安装 docker mysql

    win10中文输入法仅在桌面显示怎么办?

    win10中文输入法仅在桌面显示怎么办?

    win10系统使用搜狗,QQ输入法只有在显示桌面的时候才出来,在使用其他程序输入框里面却只能输入字母数字,win10中...

    win10 中文输入法

    一分钟掌握linux系统目录结构

    这篇文章主要介绍了linux系统目录结构,通过结构图和多张表格了解linux系统目录结构,感兴趣的小伙伴们可以参考一...

    结构 目录 系统 linux

    PHP程序员玩转Linux系列 Linux和Windows安装

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,Linux和Windows安装nginx教程,具有一定的参考价值,感兴趣...

    玩转 程序员 安装 系列 PHP

    win10怎么安装杜比音效Doby V4.1 win10安装杜

    第四代杜比®家庭影院®技术包含了一整套协同工作的技术,让PC 发出清晰的环绕声同时第四代杜比家庭影院技术...

    win10杜比音效

    纯CSS实现iOS风格打开关闭选择框功能

    这篇文章主要介绍了纯CSS实现iOS风格打开关闭选择框,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作...

    css ios c

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的

    Win7给电脑C盘扩容的办法大家知道吗?当系统分区C盘空间不足时,就需要给它扩容了,如果不管,C盘没有足够的空间...

    Win7 C盘 扩容

    百度推广竞品词的投放策略

    SEM是基于关键词搜索的营销活动。作为推广人员,我们所做的工作,就是打理成千上万的关键词,关注它们的质量度...

    百度推广 竞品词

    Visual Studio Code(vscode) git的使用教程

    这篇文章主要介绍了详解Visual Studio Code(vscode) git的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。...

    教程 Studio Visual Code git

    七牛云储存创始人分享七牛的创立故事与

    这篇文章主要介绍了七牛云储存创始人分享七牛的创立故事与对Go语言的应用,七牛选用Go语言这门新兴的编程语言进行...

    七牛 Go语言

    Win10预览版Mobile 10547即将发布 9月19日上午

    微软副总裁Gabriel Aul的Twitter透露了 Win10 Mobile预览版10536即将发布,他表示该版本已进入内部慢速版阶段,发布时间目...

    Win10 预览版

    HTML标签meta总结,HTML5 head meta 属性整理

    移动前端开发中添加一些webkit专属的HTML5头部标签,帮助浏览器更好解析HTML代码,更好地将移动web前端页面表现出来...

    移动端html5模拟长按事件的实现方法

    这篇文章主要介绍了移动端html5模拟长按事件的实现方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家...

    移动端 html5 长按

    HTML常用meta大全(推荐)

    这篇文章主要介绍了HTML常用meta大全(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    cdr怎么把图片转换成位图? cdr图片转换为位图的教程

    cdr怎么把图片转换成位图? cdr图片转换为

    cdr怎么把图片转换成位图?cdr中插入的图片想要转换成位图,该怎么转换呢?下面我们就来看看cdr图片转换为位图的...

    cdr 图片 位图

    win10系统怎么录屏?win10系统自带录屏详细教程

    win10系统怎么录屏?win10系统自带录屏详细

    当我们是使用win10系统的时候,想要录制电脑上的画面,这时候有人会想到下个第三方软件,其实可以用电脑上的自带...

    win10 系统自带录屏 详细教程

    + 更多教程 +
    WIN服务器linux服务器FTP服务器DNS服务器其他