『高階篇』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的服務發現
- 基於marathon-lb的發現機制,它需要給每個服務定義一個服務埠,註冊到marathon-lb上,我們通過訪問marathon-lb的時候,就會轉發到服務提供者的ip和埠,比較集中式的服務發現,所有的服務都是通過marathon-lb,他們的區別就是埠不同。
-
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開始部署。
ofollow,noindex" target="_blank" href="http://zhanzhang.baidu.com/sitesubmit/index?sitename=https://idig8.com/2018/10/27/gaojipiandockerzhidiaozhengweifuwushiyingmesos25/">百度未收錄
>>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>>原文連結地址:上一篇:已是最新文章