欢迎来到阿里云授权服务中心典名科技有限公司!咨询电话:023-66887777 18623333330

微信
手机版
网站地图

docker集群化自建方案有哪些?

2021-09-28 10:45:58 投稿人 : admin 围观 : 41 次 0 评论

  俗话说鸡蛋不要都放在一个篮子里面,把各种集群的节点拆分部署,应该把各种节点分机器部署,多个宿主机这样部署。在自建集群之前,由于不同应用的依赖环境千差万别,每添加一个应用,不得不考虑主机上的现有环境和已经在跑的服务,而且部署和测试也是比较繁琐,没有办法满足我快速尝试新点子的需求。而 Docker 恰好可以解决应用部署的环境问题,自建 Docker 集群可以充分利用我手上的闲置 VPS,并且提高应用的可用性。下面就由和大家聊一聊docker集群化自建方案。


  一、硬件资源

  自建集群有 8 台 VPS,其中 4 台性能比较好的 Vultr 中低配小鸡,一台腾讯云低配 VPS,一台搬瓦工 CN2 小鸡,一台 CloudCone 低配小鸡,还有一台朋友送的 VirMach 小鸡。

  手上还有几台谷歌云服务器,不过考虑到用不长久,而且流量贵,就没在自建集群的考虑范围内。

  [root@ctrl-bwh-01 scripts]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION q0kllzk1ezr9h449cjatak17z GLBS-CC-01 Ready Active 18.09.5 ioacz1khl94m01wul1z70qatu * ctrl-bwh-01 Ready Active Reachable 18.09.5 1sj867qzlrgdp72705pcnvleb db-vultr-01 Ready Active 18.09.5 dua8lh9h6yt5b58jwwn5vtlu6 db-vultr-02 Ready Active 18.09.5 rk4newk0r7z51lvgjil564bar web-qq-01 Ready Active 18.09.5 xaq6d5n4kzcxj7phnvc32xw21 web-virmach-01 Ready Active 18.09.5 1e2a4scv0eskgq0og3xqpedco web-vultr-01 Ready Active Reachable 18.09.5 5jw8pe7vkzr2iwo3m1rrr1ef5 web-vultr-02 Ready Active Leader 18.09.5

  二、集群方案

  说到 Docker 集群,一般都会提到鼎鼎有名的 k8s。而我觉得 k8s 太重了,我的众多低配 VPS 跑 k8s 之后,能分配给应用的资源就少得可怜,所以 k8s 是直接就被我 pass 掉的。

  虽然也有 k3s 之类的轻量级 k8s 解决方案,不过我还是选择了原生的 docker swarm。VPS 安装好 Docker 之后,不需要额外安装软件,就可以马上建立集群。

  # 集群初始化,节点成为 manager 节点 docker swarm init --advertise-addr=x.x.x.x # 集群丢失 Leader 时,强制重建集群 docker swarm init --advertise-addr=x.x.x.x --force-new-cluster # 获取作为 worker 节点加入集群的命令 docker swarm join-token worker # 获取作为 manager 节点加入集群的命令 docker swarm join-token manager # 加入集群 docker swarm join --token xxx x.x.x.x:xxx --advertise-addr=x.x.x.x

  官方文档中有提到,Docker 会自动设置--advertise-addr,该参数非必填。不过根据个人经验来看,还是强烈建议显式指定该参数,尤其当 VPS 有多个网卡时。

未标题-1.jpg


  三、统一的服务入口

  在集群内部通过docker service create xxx的命令创建服务之后,如果有设置对外暴露端口,那么可以向集群中任意一台 VPS 的指定端口请求服务。

  手上的应用还是 Web 应用居多,而它们都需要 80 或 443 端口,为了让它们都能正常提供服务,集群需要一个统一的前端应用提供负载均衡服务,根据一定的规则(比如域名)转发给后端应用。

  虽然 nginx 也可以比较方便地实现负载均衡,但是我此处选用的是相对专业的、功能更完善的 traefik。traefik 提供服务自动发现、HTTPS 证书自动生成、服务监测指标数据 等功能,感兴趣的同学可以前往官网了解详情。

  Traefik 还提供了简易的 Web UI,可以看到当前集群的服务数量和服务状态。


  四、集群管理面板

  虽然可以登录到 manager 节点,敲命令行管理集群节点、服务,但还是稍麻烦些,而且不太希望所有维护人员都有权限直接操作机器。

  可以管理 Docker Swarm 集群管理面板也不少,能入法眼的就 Rancher 和 Portainer,然而由于 Rancher 对宿主机配置要求比较高,消耗资源较多,我最终选择了轻量级的 Portainer。

  Portainer 官网提供了比较多的管理方式,踩了比较多的坑之后,我采用的是 agent + portainer 这种方式。以 global 模式在每个节点部署 agent 服务,portainer 部署时需要指定连接 agent 服务。欲知详情,请看官方文档。

  Portainer 还提供了服务更新的 WebHook,我现在的博客和部分站点的代码仓库更新后,通过在 GitLab 设置的 CI-CD 配置,自动打包镜像,然后触发 WebHook 自动更新,省时省力。

  当然,Portainer 也是有不完善的地方,比如查看集群服务时,会偶尔出现「无法连接」的报错,而且不能连接数据库,所以部署 Portainer 服务时,要限制它固定在某台宿主机上。不然,会出现频繁设置密码等现象。

  五、监控和告警系统

  traefik 提供的管理面板是非常简单的,仅能查看一些基础数据,比如某个服务有多少后端,整体的服务状态。为了能够定制化监控集群中的服务,并且在需要的时候触发告警,让物理人介入进行维护,需要一个监控和告警系统。

  而 Grafana 恰好可以满足需求,配合 Prometheus 以及 Prometheus 相关的 Exporter,一个五脏俱全的监控告警系统呼之欲出。

  因为腾讯云主机的带宽极小、性能又比较一般,提供对外服务不太合适,为了充分利用资源,我便把监控和告警系统相关的大多服务都部署在上面。本来还想搞一个 ES 在腾讯上,无奈配置太低,只好作罢。

  有了监控面板,可以清楚地知道具体服务的服务状态和服务数据规律,下图中的柱状图表示了以 5 分钟为统计周期的「每秒处理请求数」。注:该面板的标题Total requests over容易产生误解。

  下图是站点升级结束时,Redis 的服务数据。一般情况下,Clients 会在 10 以下,当 Clients 飙升到 50 以上,就要额外关注站点的服务状态。通过合理设置阈值,可以让 Grafana 在超过阈值时发送告警通知,提醒维护人员对服务进行扩容等操作。

  原有服务都是单机部署,需要改造并打包 Docker 镜像。改造难点其实在于持久化数据的存储与读写,比如 Web 应用的 Session 存储、图片存储、附件存储等。

版权声明:本站部分文章内容、图片来源于网友推荐、互联网收集整理而来,仅供大家学习参考,不代表本站立场,如有侵权,请联系站长,我们会第一时间处理!本站原创内容未经允许不得转载,或转载时需注明出处:典名科技资讯门户

相关文章

  • 怎样弄linux查看进程的线程数?
    怎样弄linux查看进程的线程数?

      Linux系统的进程是由线程组成的,当然Linux进程下的线程数是不固定的,可以是一个进程,也可以是多个进程。下面就由和大家讲一讲linux查看进程。进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。一般来说,Li...

    2021-11-17 11:35:33
  • 云服务器的优势
    云服务器的优势

      基于云主机平台构建的一款新型云主机产品,其性能是云主机的性能,同时具备虚拟主机的全部功能。在主机控制面板上还具有服务器重启,CPU、内存、使用空间大小监控等功能。用户独享整个驰云服务器的软硬件资源,通过控制面板进行维护和管理,同时关闭远...

    2021-11-17 11:27:34
  • 微系统架构的特点
    微系统架构的特点

      微系统架构是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务,而红帽说API应该是重点。微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务...

    2021-11-17 11:20:34
  • 云建站有什么特点?
    云建站有什么特点?

      云建站是最近几年互联网领域兴起的全新的一种互联网基础应用模式,以前存放网站所有的服务器都是单击存在,各种服务之间没有明确的区分,来到云技术时代,随着虚拟化技术的进步,大规模集成式服务开始出现,由之前的单点式服务变为了集群式云服务,人们可...

    2021-11-17 11:13:35
  • 如何使用linux搭建vpn服务器?
    如何使用linux搭建vpn服务器?

      Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线...

    2021-11-17 11:09:36
  • 可靠云主机的优点和缺点
    可靠云主机的优点和缺点

      云主机是云计算在基础设施应用上的重要组成部分,位于云计算产业链金字塔底层,产品源自云计算平台。该平台整合了互联网应用三大核心要素:计算、存储、网络,面向用户提供公用化的互联网基础设施服务。云主机是一种类似VPS主机的虚拟化技术, VPS...

    2021-11-17 11:03:36
  • linux查看端口占用情况的步骤
    linux查看端口占用情况的步骤

      准备使用python写一个端口探测的小程序,以检测一些特定的服务端口有没有被占用,突然发现自己居然不知道在linux中如何查询端口被占用的情况,在项目的部署的时候,会遇到端口被占用的情况,需要我们先停下占用端口的进程,然后才能开启新的服...

    2021-11-17 11:01:36
  • tftp服务器软件特点有哪些?tftp服务器软件如何使用?
    tftp服务器软件特点有哪些?tftp服务器软件如何使用?

      tftp是一个传输文件的简单协议,而tftp服务器则可以用于IOS的升级和备份的工作,同时还可以用于文件的传输,现在有一种tftp服务器软件,很多朋友不知道它的情况,下面就来说说tftp服务器软件特点有哪些?tftp服务器软件如何使用。...

    2021-11-17 11:01:35
  • 传真服务器软件角色的步骤
    传真服务器软件角色的步骤

      Windows Server 2008 中的传真服务管理器提供了一个用于配置和管理传真资源的集中管理点。传真服务管理器是在服务器管理器中安装传真服务器角色时安装的。可以使用传真服务管理器为传入和传出传真流量配置传真设备、指定可以使用传真...

    2021-11-17 11:01:35
  • 什么服务器好用?选择服务器要注意什么问题?
    什么服务器好用?选择服务器要注意什么问题?

      什么服务器好用?选择服务器要注意什么问题?很多人在选择服务器产品时一味的看重内存大小,不关注品牌和售后服务问题,其实这个想法有失偏颇。建议大家在选择服务器时还要考虑到宽带以及机房等问题。   一、服务器是什么?   服务器是计算机的一种...

    2021-11-17 11:01:33
发表评论