『高级篇』docker之Mesos调整微服务(25)

上次已经搭建了mesos的集群环境,这次看看如何把mesos运行在集群之上,首选需要考虑的问题服务的发现,之前用docker-compose是如何在同一台机器上做的,是不是通过link的名称,link的前提就是需要在同一台主机上,我们当时是在同一台虚拟机上,通过link服务让他们都运行起来,通过名字就可以互相的访问,我们在代码的配置上,也是通过名字让他们彼此之间可以相互的访问,但是现在的情况,我们有2台slave,1台master,我们运行其中任何一个配置的时候都有可能分配到slave中的一个,所以用docker自带的link机制肯定是有问题的。源码:https://github.com/limingios/msA-docker mesos分支

mesos的服务发现

  1. 基于marathon-lb的发现机制,它需要给每个服务定义一个服务端口,注册到marathon-lb上,我们通过访问marathon-lb的时候,就会转发到服务提供者的ip和端口,比较集中式的服务发现,所有的服务都是通过marathon-lb,他们的区别就是端口不同。
  2. mesos-dns,它是通过名字来发现服务,原理就是多台slave机器都需要运行mesos-dns,通过跟mesos交互获取到每个服务对应的ip和端口号。在本机添加一条记录,方便相互的访问,但是mesos-dns 在hub.docker.com二年多都不更新了。废弃这种方式了。使用第一种方式。

既然服务的机制跟之前的不同的,我们的代码肯定要做下调整。下面我就一起改下。

修改配置文件适应mesos的方式

一种6个微服务。一个一个来吧。

  • message-thrift-python-service

对外提供的9090,它是服务内部的。因为它不需要访问任何服务,不需要修改配置。

  • user-thrift-service

里面的mysql是公共组件不需要进行修改,它也不需要依赖任何服务,不需要修改配置。

  • user-edge-service

里面的redis是公共组件不需要进行修改。

通过域名的方式来访问,然后在每个slave机器上绑定一个host

server.name=user-edge-service
server.port=8082

thrift.user.ip=lb.idig88.com
#thrift.user.ip=127.0.0.1
thrift.user.port=10001

thrift.message.ip=lb.idig88.com
thrift.message.port=10002


#redis config
spring.redis.host=${redis.address}
#spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=liming
spring.redis.timeout=30000
  • user-edge-service-client

无配置文件不需要考虑。

  • course-edge-service

修改配置文件

server.port=8081

#dubbo config
spring.dubbo.application.name=course-dubbo-service
spring.dubbo.registry.address=zookeeper://${zookeeper.address}:2181
#spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.scan=com.idig8.course

user.edge.service.addr=lb.idig88.com:10003
  • course-dubbo-service

zookeeper 和 mysql 公共组件不需要修改

#dubbo 配置
spring.dubbo.application.name=course-dubbo-service
spring.dubbo.registry.address=zookeeper://${zookeeper.address}:2181
#spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
#spring.dubbo.protocol.host=127.0.0.1
spring.dubbo.scan=com.idig8.course

#数据源的配置
spring.datasource.url=jdbc:mysql://${mysql.address}:3306/db_course
#spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db_course
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

thrift.user.ip=lb.idig88.com
#thrift.user.ip=127.0.0.1
thrift.user.port=10001
  • gataway-zuul
server:
  port: 8080

spring:
  application:
    name: gateway-zuu
  cloud:
    gateway:
      routes:
      - id: course-edge-service
        uri: http://lb.idig88.com:10004
        predicates:
        - Path=/course/**
      - id: user-edge-service
        uri: http://lb.idig88.com:10003
        predicates:
        - Path=/user/**

logging:
  level:
    org.springframework.cloud.gateway: debug
  • 端口关系列表

一共6个微服务,中间2个服务可以通过的是dubbo来控制的,服务注册给zookeeper,调用者也可以通过zookeeper来获取服务地址,我们就不需要关心服务发现的东西了,所以5个服务就够了。

# 服务名称=新端口/老端口
user-thrift-service=10001/7911
message-thrift-python-service=10002/9000
user.edge.service=10003/8082
course-edge-service=10004/8081
gayway-zuul-service=10005:

PS:代码的微服务调整已经完毕,下一步连接mesos开始部署。

原文发布于微信公众号 - 编程坑太多(idig88)

原文发表时间:2018-10-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏测试开发架构之路

ubuntu开启root登陆

46540
来自专栏编码小白

DNS域名服务器

4.1    域名服务器 4.1.1    简介     DNS(Domain Name Server,...

79450
来自专栏技术专栏

Zookeeper 在linux&mac下 安装配置

详情参考 http://zookeeper.apache.org/doc/r3.4.5/zookeeperStarted.html

47720
来自专栏L宝宝聊IT

Squid代理服务器

1.2K110
来自专栏菜鸟致敬

MySQL 连接

使用mysql二进制方式连接 您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库。 实例 以下是从命令行中连接mysql服务器的...

389120
来自专栏小狼的世界

IE6利用Javascript进行表单提交遇到的问题

状况是这样的:利用一个超链接进行表单的提交<a href="javascript:void(0);" onclick="submitForm()">提交表单</...

14030
来自专栏ionic3+

【技巧】Ionic3多文件上传

文件上传,我们一般需要和本地文件打交道,先安装file插件(全称cordova-plugin-file),

16140
来自专栏蘑菇先生的技术笔记

浅谈C#网络编程(二)

上篇提到用多线程处理多个阻塞同步IO而实现并发服务端,这种模式在连接数量比较小的时候非常适合,一旦连接过多,性能会急速下降。 在大多数服务端网络软件中会采用一种...

12420
来自专栏蘑菇先生的技术笔记

浅谈C#网络编程(二)

21640
来自专栏JetpropelledSnake

Linux学习笔记之如何让普通用户获得ROOT权限

在学习sodu的时候,我发现一些命令只能由root用户使用,普通用户使用会提示此用户没有使用sudo的权限。我想到的解方法是把正在使用的普通用户获得root权限...

17210

扫码关注云+社区

领取腾讯云代金券