# 《Seckill秒杀系统》第117章:容器化集群部署落地实现

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本章重点:从整体上理解秒杀系统容器化集群部署的落地实现,掌握容器化集群部署的架构方案,理解大规模分布式容器化的架构设计与落地实现,并且能够结合自身实际项目思考如何能够将容器化架构设计与落地方案运用到自身实际项目中。

大家好,我是冰河~~

微服务的容器化集群部署是一种趋势,在秒杀系统中,我们不仅仅要实现微服务的部署架构与落地实现,更要实现容器化集群部署的架构设计与落地实现,容器化集群部署不仅仅能够简化运维的工作量,更能够快速实现系统的扩缩容需求。

# 一、前言

随着互联网的不断发展和技术的更新迭代,系统的架构模式由最初的单体应用架构,一直发展到如今的微服务与云原生架构,而项目的部署结构也随着系统架构模式的不断演进而发生了翻天覆地的变化。由最初在单台服务器上运维单个服务实例,到如今大规模集群运维和容器化部署,从最初一行行敲命令到如今可视化运维,都在预示着技术的进步和解放运维重复而繁琐的工作。

# 二、本章诉求

对秒杀系统的容器化集群部署进行落地实现,在实际部署的过程中体验大规模容器化集群部署为企业带来的遍历,掌握大规模容器化集群部署的架构方案和落地实现,结合自身实际项目思考如何能够将容器化架构设计与落地方案运用到自身实际项目中。

本章基本环境:

  • 操作系统:CentOS 7。
  • Docker:23.0.6。
  • 服务器IP:192.168.184.102。

# 三、部署基础环境

本节,我们就来一起在服务器上部署秒杀系统的基础环境。

# 3.1 编写部署脚本

这里,为了方便部署基础中间件环境,我将部署中间件的脚本单独分离出来,命名为:docker-cluster-middlewares.yml。

docker-cluster-middlewares.yml文件详见:项目的environment/docker-cluster-middlewares.yml,文件内容如下所示。

version: '3.2'

networks:
  binghe-cluster-middlewares:
    driver: overlay
    attachable: true

volumes:
  prometheus_data: {}
services:
  mysql:
    image: mysql:5.7
    container_name: mysql
    volumes:
    - ./data/db_data:/var/lib/mysql
    - ./config/mysql/init:/docker-entrypoint-initdb.d/
    command: [
      '--character-set-server=utf8mb4',
      '--collation-server=utf8mb4_unicode_ci',
      '--default-time-zone=+8:00'
    ]
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: seckill
      MYSQL_USER: binghe
      MYSQL_PASSWORD: binghe
    ports:
    - 3306:3306
    networks:
    - binghe-cluster-middlewares
    restart: on-failure
#   ***************省略其他服务配置**************
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

可以看到,在部署中间件基础环境时,我们主要部署了MySQL、Redis、Sentinel、Nacos、RocketMQ、Elasticsearch、Logstash、Kibana、Portainer等,当然这里也是简化后的配置,大家获取到本章对应的源码分支时,也可以参考docker-compose.yml配置文件,在docker-cluster-middlewares.yml配置文件中添加prometheus与grafana相关的配置进行部署。

# 3.2 运行部署环境

运行docker-cluster-middlewares.yml脚本部署基础中间件环境的步骤如下所示。

(1)初始化Swarm环境

在服务器命令行执行如下命令初始化Swarm环境。

docker swarm init
1

(2)上传脚本

编写好docker-cluster-middlewares.yml脚本后,我们将seckill秒杀系统项目下的整个environment目录上传到服务器。

注意:这里一定要将整个environment目录上传到服务器。

(3)部署运行基础环境

将服务器命令行切换到environment目录下,并且创建中间件容器并启动,如下所示。

[root@binghe102 environment]# docker-compose -f docker-cluster-middlewares.yml up -d --force-recreate
[+] Running 12/12
 ✔ Network environment_binghe-cluster-middlewares  Created
 ✔ Container elasticsearch                         Started
 ✔ Container sentinel                              Started
 ✔ Container mysql                                 Started
 ✔ Container redis                                 Started
 ✔ Container redis-commander                       Started
 ✔ Container environment-portainer-1               Started
 ✔ Container rmqnamesrv                            Started
 ✔ Container rmqbroker                             Started
 ✔ Container logstash                              Started
 ✔ Container kibana                                Started
 ✔ Container nacos-standalone-mysql                Started
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码