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

1、前言

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

surging源码下载: https://github.com/fanliang11/surging

2、概述

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

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

 

640?wx_fmt=png

 

那么Docker又是什么呢?

  • Docker是基于Go语言开发并开源的容器引擎

  • Docker将应用软件运行时所需的一切都打包成互相隔离的容器

  • Docker可以自动执行并配置开发/线上环境,快速构建,测试和运行复杂的多容器应用程序

  • 对拥有数千个节点或容器的应用程序,Docker也能快速的扩展和调配

  • 可以运行在主流的Linux系统,Mac以及Windows上,并且保证无论软件在哪里部署,都能正常运行并得到相同的结果

相关概念介绍

  • Image镜像和Container容器:你可以把两者理解为类和实例对象,或者是ISO系统镜像和虚拟机的关系。不同的Image所包含的软件或者环境是不同的,但是你可以使用Dockerfile(docker特有语法规则所创建的文件)进行管理。而Container则是以Image作为模板,可以独立运行的微型系统,一个Image可以创建出来多个Container容器的实例

  • Registry:Docker Hub镜像仓库,为每个人提供庞大的镜像资源进行拉取和使用

  • Dockerfile:是一个将镜像命令组合在一起的文件,用于Image的自动构建

ASP.NET Core应用开发

作者:[美] James Chambers,David Paquette,Simon Timms著 杜伟 涂曙光 柴晓伟 译

当当 广告
购买

 3、环境搭建

系统环境

宿主机:Windows 10 专业版

Linux服务器: CentOS 3.10 

1.安装Docker

 

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

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

 

1
[root@runoob ~]# uname -r 3.10.0-862.E17.X86_64

 

 # yum install docker-engine 安装docker包

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

640?wx_fmt=png

 

 启动 Docker

1
systemctl  start  docker

 查看docker信息,如下图

1
systemctl  status  docker

 

640?wx_fmt=png

 

测试运行 hello-world

1
#docker run hello-world

 2.安装rancher

下载镜像

 

1
docker pull rancher/server

启动rancher

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

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

640?wx_fmt=png

 3.安装rabbitmq

 下载镜像

1
#docker pull rabbitmq:management

启动rabbitmq

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

640?wx_fmt=png

4.安装Consul

下载镜像

 

1
#docker pull docker.io/consul:latest

 

 创建 Consul 配置

1
#vim /opt/platform/consul/server.json

 

1
2
3
4
5
6
7
8
9
10
11
12
{
    "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访问,如下图所示

640?wx_fmt=png

 

5. 安装dotnetcore 2.1 runtime

下载镜像

#sudo docker pull microsoft/dotnet:2.1-runtime

启动 

 

1
#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"]

发布程序

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

 使用Dockerfile创建镜像

1
#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如下图所示

640?wx_fmt=png

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

640?wx_fmt=png

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

 

1
2
3
4
FROM microsoft/dotnet:2.1-runtime
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet""Surging.ApiGateway.dll"]

 

 发布程序

 

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

 

 使用Dockerfile创建镜像

 

1
docker build -t surgingapi .

 

  启动

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

 启动后在rancher如下图所示

640?wx_fmt=png

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

640?wx_fmt=png

 

 640?wx_fmt=png

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

640?wx_fmt=png

四、总结

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

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


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P4213-[模板]杜教筛(Sum)

正题 题目链接:https://www.luogu.com.cn/problem/P4213 题目大意 给出nnn,求∑i1nφ(i)\sum_{i1}^n\varphi(i)i1∑n​φ(i) 和 ∑i1nμ(i)\sum_{i1}^n\mu(i)i1∑n​μ(i) 解题思路 考虑如何将φ\varphiφ卷起来,我们可以乘上一个函数I(I(x)1)I(I(x)1…

线段树专题-等差子序列 BZOJ-2124

线段树专题-等差子序列 感谢 感谢孙耀峰的线段树PPT,使我获益匪浅. 题目来源 BZOJ−2124BZOJ-2124BZOJ−2124 题意 给出长度为nnn的1−n1-n1−n的排列AAA 问是否存在一组1≤p1≤p2≤...≤pl≤n,l≥31 \le p_1 \le p_2 \le ... \le p_l \le n,l \ge 31≤p1​≤p2​≤...≤p…

【模拟】小游戏

小游戏 题目大意: 有n个数形成一个环,从第S个开始,先往后数N个数然后把这个数取出来,再往前数K个数把这个数取出来,问取的数字依次是什么 原题: 题目描述 【题目背景】 yk同学是一个灰常灰常有爱的同…

P4051-[JSOI2007]字符加密【SA】

正题 题目链接:https://www.luogu.com.cn/problem/P4051 题目大意 给一个字符串,求它当每个环状字符串(比如ABCABCABC的就是ABC,CAB,BCAABC,CAB,BCAABC,CAB,BCA)排序后所有串的末尾连起来当字符串。 解题思路 这个其实就是每个串的后缀加上…

DevOps 实践:千里之行

在上一篇 DevOps 渊源:角色消融 中我们分析了在作坊式团队中的责任重叠,也回顾了 DBA 角色的消融。那么,如今我们讲的 DevOps 又是什么角色的消融呢? 我想你已经猜到了,接下来要消融的角色就是运维人员了。那这次又是什…

线段树专题-黑白棋盘 BZOJ-1453

线段树专题-黑白棋盘 题目来源 BZOJ−1453BZOJ-1453BZOJ−1453 题意 QQQ次操作每次操作给出(x,y)(x,y)(x,y),将(x,y)(x,y)(x,y)个格子颜色取反每次操作后,输出棋盘上黑白联通块的个数n≤100,Q≤104n \le 100,Q \le 10^4n≤100,Q≤104 题解 显然不能直接套并查集,因为直接套…

约数个数

约数个数 题目大意: 求a到b之间每个数的约数的个数之和 原题: 题目描述 定义f(x)为x的约数个数,x为正整数。 f(a)f(a1)……f(b),即a,b之间每个数的约数的总和。 输入 一行两个正整数a、b,以一个空格隔开。 输出…

P2257-YY的GCD【莫比乌斯反演】

正题 题目链接:https://www.luogu.com.cn/problem/P2257 题目大意 给出n,mn,mn,m,求∑i1n∑j1m[gcd(i,j)∈p]\sum_{i1}^n\sum_{j1}^m[gcd(i,j)\in p]i1∑n​j1∑m​[gcd(i,j)∈p] 定义ppp是质数集 解题思路 首先考虑定义f(x)∑i1n∑j1m[gcd(i,j)x]f(x)\sum_{i1}…

asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程...

最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionless的学习做下笔记!Exceptionless是什么?能做什么呢?“Exceptionless”这…

【dfs】【树】机器选择

机器选择 题目大意: 有一个树状的图,要求安一个点,使这个点到最远的点的距离最小 原题: 题目描述 自从省队NOI赛前集训在scz举行之后,一个名叫cs1.6.exe的文件开始在机房广泛使用起来。每天大家都要找神犇小X借移…

ACM-ICPC中博弈论的一些小小总结

博弈论 参考 [1]https://blog.csdn.net/clover_hxy/article/details/53818624 [2]https://blog.csdn.net/foreyes_1001/article/details/82862324 [3]https://www.cnblogs.com/lxm940130740/p/3268803.html 一.尼姆博弈 问题提出 下面给出Nim游戏的三种变体 现有nnn堆石子,每…

P3312-[SDOI2014]数表【莫比乌斯反演,树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P3312 题目大意 定义F(x)F(x)F(x)表示xxx的约数和 给出n,m,an,m,an,m,a,求∑i1n∑j1m[F(gcd(i,j))≤a]∗F(gcd(i,j))\sum_{i1}^n\sum_{j1}^m[F(gcd(i,j))\leq a]*F(gcd(i,j))i1∑n​j1∑m​[F(gcd(i,j))≤a]∗F(g…

使用 IIS 在 Windows 上托管 ASP.NET Core2.0

准备:操作系统:Windows Server 2008 R2 或更高版本开发环境:VS2017回到顶部第一步:新建项目ASP.NET Core Web应用程序在 Visual Studio 中,选择“文件”>“新建”>“项目”。在新建项目对话框的左侧窗格选择“.N…

数学推导题,NTT,快速数论变换,Wannafly-导数卷积

导数卷积 题目描述 题解 参考了一下标程的推导过程,因为这个推导对我这种数学弱渣真的有点难鸭. [1]f(x)f(x)f(x)的iii次导函数: f(i)(x)ai∗i!0!ai1∗(i1)!1!∗x1...an−1∗(n−1)!(n−1−i)!∗xn−1−if^{(i)}(x) a_{i}*\frac{i!}{0!} a_{i1}*\frac{(i1)!}{1!}*x^{1} ...…

初一级练习题(2019.3.8)

成绩: rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4111hkyhkyhky250250250100100100100100100505050000222lyflyflyf240240240100100100505050505050404040333wjjwjjwjj210210210909090707070505050000555lthlthlth12012012020202050505050505…

使用 C# 代码实现拓扑排序

0.参考资料尊重他人的劳动成果,贴上参考的资料地址,本文仅作学习记录之用。https://www.codeproject.com/Articles/869059/Topological-sorting-in-Csharphttps://songlee24.github.io/2015/05/07/topological-sorting/https://www.cnblogs.com/skywang1…

P3327-[SDOI2015]约数个数和【莫比乌斯反演】

正题 题目链接:https://www.luogu.com.cn/problem/P3327 题目大意 TTT组询问给出n,mn,mn,m,d(x)d(x)d(x)表示xxx的约数个数,求∑i1n∑j1md(i∗j)\sum_{i1}^n\sum_{j1}^md(i*j)i1∑n​j1∑m​d(i∗j) 解题思路 对于iii和jjj的两个约数a,ba,ba,b如果他们…

数学推导题,NTT,快速数论变换,Wannafly-乒乓球

乒乓球 题目描述 小 BoBoBo 是某省乒乓球名列前茅的选手,现在他有 nnn 颗乒乓球一字排开,第iii颗乒乓球的权值为 wiw_iwi​ 每次他会随机从现有的乒乓球中等概率选一颗拿走,然后得到的收益是这颗球左边第一个乒乓球和右边第一个乒乓球的权值…

ASP.NET Core 2.1带来SignalR、Razor类库

随着.NET Core 2.1的发布,微软推出了 ASP.NET Core 2.1。这是一个强大的版本,包括实时通信库SignalR,更新的模板使GDPR更容易遵守,并且针对Angular、React,以及React Redux更新了SPA模板。在2013年发布传统的ASP.NET时…

【bfs】WJ的逃离

WJ(J)的逃离 题目大意: 有一个nm的矩阵,*是不可走的,0是可走的,求1,1到n,m的最小转弯次数 原题: 题目描述 当WJ醒来时,发现自己被困在一个地图的左上角,幸好WJ有张图…