swarm docker eureka

简介: 本文围绕阿里云swarm 容器编排工具,整理阿里云相关文档,实现gitlab代码托管,jenkins持续交付,eureka高可用

作者 hoxing


1. 初始化swarm集群

1. 实例选择同区域,同交换机
2. 实例可以按小时计费,也可以添加已购买实例,本文选择选购三台4核8G做实验
3. 每台实例带宽可以选择最小,两个原因:服务之间数据传输为内网,对外暴露的 api会走阿里云的负载均衡,按流量收费
4. 价格(2018-11时期)简单计算一个月费用三台实例5.568/小时,负载均衡管理费0.02/小时,负载均衡流量300/月,每个月花费差不多4323
5. 创建完成之后, 会生成一个集群实例,一个负载均衡实例,负载80端口会映射集群路由器的9080端口
6. 默认一级域名 cn-shenzhen.alicontainer.com   默认二级域名$container-id.cn-shenzhen.alicontainer.com,域名可以做改动, 本文默认。

tool-editor
tool-editor
tool-editor
tool-editor

2.jenkins 2.89.2

1.  镜像选择2.89.2 阿里云默认容器编排比此版本低
2.  容器编排会有一些slave节点,这些节点的意思是每种不同的编译环境,如果不需要可以去掉,保留slave-java
3.  按照下面配置文件,在浏览器下访问 http://jenkins.$container-id.cn-shenzhen.alicontainer.com
4.  jenkins 初始化页面会有一个秘钥,秘钥可以在容器生成的日志里边查
5.  安装按照默认即可,之后根据个人需求补插件
jenkins:
    image: 'registry.cn-hangzhou.aliyuncs.com/acs-sample/jenkins:2.89.2'
    mem_limit: 4000000000
    volumes:
        - /var/lib/docker/jenkins:/var/jenkins_home
    restart: always 
    labels:
        aliyun.scale: '1'
        aliyun.probe.url: 'tcp://container:8080'
        aliyun.probe.initial_delay_seconds: '10'
        aliyun.routing.port_8080: jenkins
    links:
        - slave-golang
        - slave-java
        - slave-nodejs
        - slave-python
        - slave-php
slave-golang:
    image: 'registry.aliyuncs.com/acs-sample/jenkins-slave-dind-golang'
    volumes:
        - /var/run/docker.sock:/var/run/docker.sock
    restart: always 
    labels:
        aliyun.scale: '1'
slave-java:
    image: 'registry.aliyuncs.com/acs-sample/jenkins-slave-dind-java'
    volumes:
        - /var/run/docker.sock:/var/run/docker.sock
    restart: always 
    labels:
        aliyun.scale: '1'        
slave-nodejs:
    image: 'registry.aliyuncs.com/acs-sample/jenkins-slave-dind-nodejs'
    volumes:
        - /var/run/docker.sock:/var/run/docker.sock
    restart: always 
    labels:
        aliyun.scale: '1'
slave-python:
    image: 'registry.aliyuncs.com/acs-sample/jenkins-slave-dind-python'
    volumes:
        - /var/run/docker.sock:/var/run/docker.sock    
    restart: always 
    labels:
        aliyun.scale: '1'
slave-php:
    image: 'registry.aliyuncs.com/acs-sample/jenkins-slave-dind-php'
    volumes:
        - /var/run/docker.sock:/var/run/docker.sock    
    restart: always 
    labels:
        aliyun.scale: '1'

tool-editortool-editor
tool-editor

3.gitlab

 1. aliyun.routing.port_80: gitlab 三级域名改成这个
 2. GITLAB_HOST=gitlab.$container-id.cn-shenzhen.alicontainer.com,这个地方改成要生成的服务域名,之后项目方便复制代码链接
 3. 如果需要配置邮件登录(我用的qsmtp.qq.com),之后有用户注册会发验证邮件;如果不需要可以按照阿里云默认编排模板
 4. 访问 http://gitlab.$container-id.cn-shenzhen.alicontainer.com
 5. 初始root用户密码可以登录到容器里边 是这个脚本 /home/git/gitlab/bin/rails,具体参考https://docs.gitlab.com/ce/security/reset_root_password.html
postgresql:
  image: registry.cn-hangzhou.aliyuncs.com/acs-sample/postgresql-sameersbn:9.4-24
  environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - DB_EXTENSION=pg_trgm
  labels:
    aliyun.probe.url: tcp://container:5432
  volumes:
    - /srv/docker/gitlab/postgresql:/var/lib/postgresql
gitlab:
  image: registry.cn-hangzhou.aliyuncs.com/acs-sample/gitlab-sameersbn:latest
  links:
    - redis:redisio
    - postgresql:postgresql
  ports:
    - "10080:80"
    - "10022:22"
  environment:
    - TZ=Asia/Shanghai
    - SMTP_ENABLED=true
    - SMTP_DOMAIN=qq.com
    - SMTP_HOST=smtp.qq.com
    - SMTP_PORT=465
    - SMTP_USER=8888888@qq.com
    - SMTP_PASS=123456789
    - SMTP_STARTTLS=true
    - SMTP_TLS=true
    - SMTP_AUTHENTICATION=login
    - GITLAB_TIMEZONE=Kolkata
    - GITLAB_HOST=gitlab.$container-id.cn-shenzhen.alicontainer.com
    - GITLAB_PORT=80
    - GITLAB_SSH_PORT=22
    - GITLAB_EMAIL=8888888@qq.com
    - GITLAB_EMAIL_REPLY_TO=noreply@example.com
    - GITLAB_BACKUPS=daily
    - GITLAB_BACKUP_TIME=01:00
    - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string
    - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string
  volumes:
    - /srv/docker/gitlab/gitlab:/home/git/data
  labels:
    aliyun.probe.url: tcp://container:80
    aliyun.probe.initial_delay_seconds: "10"
    aliyun.routing.port_80: gitlab
redis:
  image: registry.cn-hangzhou.aliyuncs.com/acs-sample/redis-sameersbn:latest
  volumes:
    - /srv/docker/gitlab/redis:/var/lib/redis

tool-editor
tool-editor

4.eureka高可用

1. image要用自己的,本文举例
2. 网络别名要设置
3. docker内jar包路径注意改
4. ADDITIONAL_EUREKA_SERVER_LIST目的eureka是配置文件的唯一(不用写三个)
5. 会生成三个服务链接 http://eureka[1,2,3].$container-id.cn-shenzhen.alicontainer.com
 eureka1:
  image: 'registry-vpc.cn-shenzhen.aliyuncs.com/project/eureka:master'
  networks:
    multi-host-network:
      aliases:
        - eureka1
  mem_limit: 1073741824
  environment:
    - LANG=C.UTF-8
    - JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
    - ADDITIONAL_EUREKA_SERVER_LIST=http://{account}:{pass}@eureka2:8761/eureka/,http://{account}:{pass}8@eureka3:8761/eureka/
    - HOSTNAME=eureka1
  kernel_memory: 0
  memswap_reservation: 0
  restart: always
  shm_size: 0
  memswap_limit: 0
  labels:
    aliyun.scale: '1'
    aliyun.routing.port_8761: 'http://eureka1'
  command:
    - java
    - '-jar'
    - '-Dspring.profiles.active=prd'
    - /usr/local/javaapp/eureka.jar
eureka2:
  image: 'registry-vpc.cn-shenzhen.aliyuncs.com/project/eureka:master'
  networks:
    multi-host-network:
      aliases:
        - eureka2
  mem_limit: 1073741824
  environment:
    - LANG=C.UTF-8
    - JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
    - ADDITIONAL_EUREKA_SERVER_LIST=http://{account}:{pass}@eureka1:8761/eureka/,http://{account}:{pass}@eureka3:8761/eureka/
    - HOSTNAME=eureka2
  kernel_memory: 0
  memswap_reservation: 0
  restart: always
  shm_size: 0
  memswap_limit: 0
  labels:
    aliyun.scale: '1'
    aliyun.routing.port_8761: 'http://eureka2'
  command:
    - java
    - '-jar'
    - '-Dspring.profiles.active=prd'
    - /usr/local/javaapp/eureka.jar
eureka3:
  image: 'registry-vpc.cn-shenzhen.aliyuncs.com/project/eureka:master'
  networks:
    multi-host-network:
      aliases:
        - eureka3
  mem_limit: 1073741824
  environment:
    - LANG=C.UTF-8
    - JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
    - ADDITIONAL_EUREKA_SERVER_LIST=http://{account}:{pass}@eureka1:8761/eureka/,http://{account}:{pass}@eureka2:8761/eureka/
    - HOSTNAME=eureka3
  kernel_memory: 0
  memswap_reservation: 0
  restart: always
  shm_size: 0
  memswap_limit: 0
  labels:
    aliyun.scale: '1'
    aliyun.routing.port_8761: 'http://eureka3'
  command:
    - java
    - '-jar'
    - '-Dspring.profiles.active=prd'
    - /usr/local/javaapp/eureka.jar

tool-editor
tool-editor


目录
相关文章
|
Prometheus 监控 Cloud Native
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
1146 79
|
Prometheus 监控 Cloud Native
如何使用Prometheus监控Docker Swarm集群的资源使用情况?
还可以根据实际需求进行进一步的配置和优化,如设置告警规则,当资源使用超出阈值时及时发出警报。通过这些步骤,能够有效地使用 Prometheus 对 Docker Swarm 集群的资源进行监控和管理。
982 161
|
Prometheus 监控 Cloud Native
如何监控Docker Swarm集群的性能?
如何监控Docker Swarm集群的性能?
1077 163
|
调度 开发者 Docker
Docker Swarm
Docker Swarm 为容器化应用的部署和管理提供了一种高效、可靠的方式,使开发者能够更轻松地构建和运行分布式应用。随着容器技术的不断发展,Docker Swarm 在企业级应用中的应用也将越来越广泛。
662 162
|
监控 Docker 容器
Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项
本文深入探讨了Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项,旨在帮助用户高效管理集群资源,适应业务变化,确保服务稳定性和资源优化。
564 12
|
Kubernetes 负载均衡 调度
Docker Swarm 核心概念及详细使用
Docker Swarm 是 Docker 的原生集群管理工具,用于将多个 Docker 主机整合成一个虚拟主机,提供集群管理和调度功能。其核心特点包括集群管理、容错与高可用性、负载均衡、声明式服务模型、服务发现和安全性。本文档详细介绍了 Docker Swarm 的安装配置、服务部署、节点管理、网络配置及故障模拟等关键操作,适用于中小型项目或对 Kubernetes 复杂性有所顾虑的用户。
1641 6
|
应用服务中间件 nginx Docker
Docker Swarm、Docker Stack和Portainer的使用
Docker Swarm、Docker Stack 和 Portainer 各有其独特的功能和优势。Docker Swarm 适用于分布式服务的管理和编排,Docker Stack 便于多容器应用的定义和部署,而 Portainer 提供了直观的 UI,简化了 Docker 环境的管理。结合使用这些工具,可以大大提高容器化应用的部署和管理效率。希望本文对您理解和应用这些工具有所帮助。
1209 5
|
API Docker 容器
【赵渝强老师】构建Docker Swarm集群
本文介绍了如何使用三台虚拟主机构建Docker Swarm集群。首先在master节点上初始化集群,然后通过特定命令将node1和node2作为worker节点加入集群。最后,在master节点上查看集群的节点信息,确认集群构建成功。文中还提供了相关图片和视频教程,帮助读者更好地理解和操作。
348 0
|
调度 Docker 容器
【赵渝强老师】Docker Swarm集群的体系架构
Docker Swarm自1.12.0版本起集成至Docker引擎,无需单独安装。它内置服务发现功能,支持跨多服务器或宿主机创建容器,形成集群提供服务。相比之下,Docker Compose仅限于单个宿主机。Docker Swarm采用主从架构,Swarm Manager负责管理和调度集群中的容器资源,用户通过其接口发送指令,Swarm Node根据指令创建容器运行应用。
552 0
|
负载均衡 安全 调度
深入调查研究Docker Swarm
【10月更文挑战第19天】
567 0