学习

微服务在专网环境下如何实施

2018-09-28  本文已影响77人  questionuncle

又是一次从现场实施归来,这次实施于以往有很大不同,在于系统整体架构从单体应用变迁到前后端分离形式,后端服务也采用docker镜像的形式打包,docker compose进行服务编排,docker swarm部署多个实例。接下来想梳理一下整个流程。

实施准备

专网环境顾名思义就是在客户的局域网内,连接不了互联网,更连不上自己公司的开发网络。要在这样的环境下部署容器技术的应用,得要做好几点准备工作:

1.制作一个带docker的系统镜像

在安装docker时,最方便的办法莫过于通过yum安装了,而由于总总原因客户的网络连接不了互联网,那要在现场安装docker最方便的办法莫过于带一个装有docker的系统镜像,在现场恢复系统镜像即可。
(小技巧:
1.为了便于迁移,系统镜像不要做太大,通过挂载一个新盘符挂载到一个新挂载点下,并修改docker的存储路径为该挂载点。在做系统镜像时,不将该挂载点打包进去,大大减少了系统镜像体积。事实证明,当我们通过网络向VMWARE ESXi系统物理路径下上传系统镜像时,传输速度很慢,主要受限于读写速度,而VMWARE ESXi创建一个大空间却十分快
2.如果你想运维方便,也可以将自己的ssh公匙打包进去)
这次实施在客户的机器上安装VMWARE ESXi6.7,通过页面访问的形式就能够新建虚拟机,十分方便,需要注意的是license,一般申请的license有内核限制,只有8核,如果你想给虚拟机更多核,就得想想办法了。

2.应用镜像的准备

微服务的模式将原有巨石应用拆分成多个服务,每个服务时通过打包成镜像扔到容器中运行提供。所以,需要将你所用到的所有服务所对应的镜像从你的私有仓库(例如:Harbor)中打包下载下来,放到U盘中带走。

docker login -u *** -p *** harbor_url           #登录到harbor_url私有仓库上
docker pull target_image                        #拉去目标镜像至本地
docker save -o target_image.tar target_image    #将目标镜像打包成tar文件

3.编写编排脚本

编写编排脚本,将所需的服务全都罗列上,将配置文件外置,应用通过读取外置文件进行配置。建议将应用内部的端口号统一,暴露端口号配置成不同。
例如:

services:
  storage-service:
    image: harbor_url/storage-service:latest
    ports:
      - 9002:8080
    networks:
      - demo
    environment:
      TZ: Asia/Shanghai
    labels:
      aliyun.logs.storage-service: stdout
    deploy:
      mode: replicated
      replicas: 3
    configs:
      - source: storage-service-yml
        target: /app/application.yml
        
networks:
  demo:
    driver: overlay
    attachable: true

configs:
  storage-service-yml:
    file: ./storage-service.yml

4.现场搭建Harbor

在现场搭建个Harbor,作为实施测的仓库中心,将打包好的镜像push至仓库中心。

docker login -u *** -p *** new_harbor_url             #登录到现场的私有仓库上
docker load -i target_image.tar                       #将打包文件上载
docker tag target_image new_target_image              #将镜像搭上标签
docker push new_target_image                          #将镜像上传

5.本机电脑安装docker

最好在自己的本机电脑上安装docker,作为现场改动代码时的打包环境。
同时,最好配置好L2TP VPN,方便连入公司内网,这样团队在现场开发时,借助VPN拨号连入内网,通过公司的代码库达到代码协同。

上一篇下一篇

猜你喜欢

热点阅读