文档章节

spring cloud & docker 多宿主机,多节点扩展部署

wwlleo123
 wwlleo123
发布于 2017/02/16 19:35
字数 421
阅读 96
收藏 0
点赞 0
评论 0

业务场景描述:

     微服务情况下,需要随时可以启动任意多个docker实例来进行分布式负载。(比如抢红包,活动秒杀等)

需要解决的问题如下:

  1. 多宿主机情况,即docker实例可以在多台机器上任意部署。
  2. 使用spring cloud作为微服务方案。(如果不用spring cloud的话,直接使用docker swarm已经基本能满足要求)

遇到的问题:

  1. docker直接注册IP为容器IP,跨宿主机时无法访问,或需要使用第三方来link,很烦。
  2. 如果使用hostname来注册,则需要维护hostname表,更烦。

 

之前由于大部分业务直接跑docker swarm解决了,也没有深究下去,今年准备弄一个简单的基于spring boot的监控玩玩,结果发现去年的技术债还是要解决,跨宿主机docker无法注册。

 

其实解决的方法很简单,就是把需要动态的值都当参数传递给spring boot 和 docker

docker run -d --name auxplat-helloworld --expose=6999 -p 6999:6999 -e "EUREKA_INSTANCE_IP-ADDRESS=100.100.20.214" -e "SERVER_PORT=6999" aux/auxplat-helloworld

docker run -d --name auxplat-helloworld-1 --expose=6998 -p 6998:6998 -e "EUREKA_INSTANCE_IP-ADDRESS=100.100.20.214" -e "SERVER_PORT=6998" aux/auxplat-helloworld

docker run -d --name auxplat-helloworld --expose=6999 -p 6999:6999 -e "EUREKA_INSTANCE_IP-ADDRESS=100.100.20.212" -e "SERVER_PORT=6999" aux/auxplat-helloworld

前两条在 100.100.20.214 上 跑两个 6999 和 6998 的docker实例。

第三条在 100.100.20.212 上跑个 6999的实例。

执行效果如下:

本地跑了一个测试

@RequestMapping("/registered")
	public List<String> getRegistered() {
		List<ServiceInstance> list = discoveryClient.getInstances("STORES");
		
		List<String> showList = new ArrayList<String>();

		for (String s : discoveryClient.getServices()) {
			System.out.println("services " + s);
			List<ServiceInstance> serviceInstances = discoveryClient.getInstances(s);
			for (ServiceInstance si : serviceInstances) {

				showList.add(si.getHost()+" : "+si.getPort());

			}

		}

		return showList;
	}

本例子基于spring boot 1.4.4.RELEASE,spring cloud  Camden.SR5 。

 

 

© 著作权归作者所有

共有 人打赏支持
wwlleo123
粉丝 5
博文 9
码字总数 6677
作品 0
宁波
使用 Docker 部署 Spring Boot之项目的构建

Docker通常用于如下场景: web应用的自动化打包和发布; 自动化测试和持续集成、发布; 在服务型环境中部署和调整数据库或其他的后台应用; 从头编译或者扩展现有的OpenShift或Cloud Foundry...

qq_28089993
04/21
0
0
服务发现之consul的介绍、部署和使用

什么是服务发现 微服务的框架体系中,服务发现是不能不提的一个模块。我相信了解或者熟悉微服务的童鞋应该都知道它的重要性。这里我只是简单的提一下,毕竟这不是我们的重点。我们看下面的一...

sunsky303
06/15
0
0
基于docker部署的微服务架构(二): 服务提供者和调用者

前言 前一篇 基于docker部署的微服务架构(一):服务注册中心 已经成功创建了一个服务注册中心,现在我们创建一个简单的微服务,让这个服务在服务注册中心注册。然后再创建一个调用者,调用...

月冷X心寒
2016/11/17
455
0
基于docker部署的微服务架构(三): 服务网关

前言 在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个公共网关根据请求的url,路由到相应的服务。在网关中可以做一些服务调用的前置处理,比如权限验证。也可以通过动态路由,...

月冷X心寒
2016/11/18
709
0
Spring Cloud、Consul、Prometheus、Docker,你想要的系统监控?

spring cloud 本篇文章要介绍的是如何使用Spring Cloud集成Consul做服务发现,并且利用Promtheus对其进行系统监控。Consul及Promtheus使用docker容器安装。 一. 项目搭建 建立Spring Boot项目...

板凳儿儿
05/30
0
0
微服务 SpringCloud 的eureka部署在Docker上的网络问题

使用Spring Cloud 的eureka 做服务注册和发现,多个eureka注册中心实例组成集群(http://blog.didispace.com/springcloud6/),使用Maven 将项目打成Docker镜像,使用Docker部署运行,如何解决doc...

FTR
2016/12/06
2.4K
2
Spring Boot 2.0(六):使用 Docker 部署 Spring Boot 开源软件云收

只需三步即可部署开源项目云收藏,打造专属个人的收藏系统,就是这么简单! 云收藏项目已经开源2年多了,作为当初刚开始学习 Spring Boot 的练手项目,使用了很多当时很新的技术,现在看来其...

纯洁微笑
06/26
0
0
安装docker并运行docker swarm模式

概要 docker 1.12版本最大的改变在于集成了docker swarm,在docker engine下提供了 swarm 模式,这里主要说一下docker swarm。 docker engine本身只提供了容器技术,没有解决集群环境下的容器...

openthings
2016/11/20
427
0
硅谷Spring项目组专家教你利用Spring Cloud构建微服务

src="https://mmbiz.qlogo.cn/mmbiz/tibrg3AoIJTuFDicicUn0SS2W0qcVsRz88M3ejbY1FyA14DNxZSK1iaRSMKTKKOQWP3zlyEJwZHy7wWoaGQl9ZML0Q/0?wxfmt=jpeg" data-ratio="0.6036363636363636" data-t......

Kenny Bastani
2016/07/05
0
0
Spring Cloud(二)Consul 服务治理实现

Spring Cloud Consul 项目是针对Consul的服务治理实现。Consul是一个分布式高可用的系统,具有分布式、高可用、高扩展性。 Consul 简介 Consul 是 HashiCorp 公司推出的开源工具,用于实现分...

whs0668
01/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

expect(spawn) 自动化git提交和scp拷贝---centos(linux)

**在进行SCP文件拷贝中,往往需要进行用户密码的输入,即用户交互。若采用自动化脚本的方式进行,则可用以下方式: ** #!/usr/bin/expect #设置参数 set src [lindex $argv 0] set dest [lin...

helplove
6分钟前
1
0
用Build来构建对象的写法

如果一个类的属性过多,用构造器来构建对象很难写,因此我们时用Build方式来构建对象。写法大致如下。 import java.io.Serializable;import java.util.Date;public class Log impleme...

算法之名
9分钟前
11
0
利用 acme.sh 获取网站证书并配置https访问

acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.(https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E) 主要步骤: 安装 acme.sh 生成证书 copy 证书到 nginx/ap...

haoyuehong
22分钟前
2
0
微擎框架内如何根据media_id获取到微信图片的路径

微擎的框架内,图片选择后,获取的是那个字符串是media_id,相当于你这张图片在微信的图片服务器里面的id 要求是:获取https://mmbiz.qpic.cn/mmbiz_jpg/…… 微信图片的路径 而微信并没有根据m...

老bia同学
26分钟前
1
0
Spring boot中日期的json格式化

Model 在model层中,类的日期属性上面添加如下注解: @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss") 参考 Jackson Date格式化教程...

亚林瓜子
28分钟前
2
0
Eclipse:Failed to load the JNI shared library

1.问题背景: 由于我之前使用jdk1.9学习,当使用Luke的时候发现jdk版本过高,需要向下配置jdk,就向朋友拷了一个安装包。重新配置路径后,便开始报错。 2.问题描述: Failed to load the JNI...

tinder_boy
30分钟前
1
0
少儿学习编程课程是否真的适合七八岁的低龄儿童[图]

少儿学习编程课程是否真的适合七八岁的低龄儿童[图]: 天下熙熙皆为利来,天下攘攘皆为利往。 这几年来,乐高教育机构在国内如同雨后春笋般出现,当然关闭/转手的也很多。从教师角度来看,部...

原创小博客
35分钟前
1
0
ES12-词项查询

1.词项查询介绍 全文查询将在执行之前分析查询字符串,但词项级别查询将按照存储在倒排索引中的词项进行精确操作。这些查询通常用于数字,日期和枚举等结构化数据,而不是全文本字段。 或者,...

贾峰uk
43分钟前
2
0
http状态码与ajax的状态值

ajax状态值 1.1 200 & OK:状态请求成功

litCabbage
46分钟前
2
0
iOS动画效果合集、飞吧企鹅游戏、换肤方案、画板、文字效果等源码

iOS精选源码 动画知识运用及常见动画效果收集 3D卡片拖拽卡片叠加卡片 iFIERO - FLYING PENGUIN 飞吧企鹅SpriteKit游戏(源码) Swift封装的空数据提醒界面EmptyView 沙盒文件浏览与分享调试控...

sunnyaigd
50分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部