文档章节

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

wwlleo123
 wwlleo123
发布于 2017/02/16 19:35
字数 421
阅读 144
收藏 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
2018/04/21
0
0
Ansible自动化部署实践交流

技术主题介绍 Ansilbe通过SSH协议进行管理节点和远程节点之间的通信。理论上说管理员通过ssh到一台远程主机上能做的操作Ansible都可以做。 1. Ansible 安装,入门使用 2. Ansible Galaxy 认识...

chenbilly
2017/02/15
97
0
Spring Cloud(二) Consul 服务治理实现

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

lemonLove
2018/08/11
0
0
服务发现之consul的介绍、部署和使用

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

sunsky303
2018/06/15
0
0
Nacos发布 v0.2 版本,无缝支持 Spring Cloud 微服务生态及高可用集群模式

近日,阿里巴巴新开源项目Nacos 发布了 v0.2 版本,该版本开始支持完整的Spring生态技术栈,这包括 Spring Framework、Spring Boot和Spring Cloud。 为了让更多的Spring用户可以在生产上基于...

中间件小哥
2018/09/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
8
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
3
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部