项目实战2 | 基于Swarm+Prometheus实现双VIP可监控Web高可用集群

本次项目实战利用swarm+Prometheus实现一个双VIP高可用可监控的Web服务器集群,使用Nginx做负载均衡器,同时采用swarm管理的Docker集群并对外提供Web服务,使用keepalived的双vip实现HA,使用Prometheus+Grafana实现对Web服务器的监控。
摘要由CSDN通过智能技术生成

  创作不易,来了的客官点点关注,收藏,订阅一键三连❤😜  


前言

我是一个即将毕业的大学生,超超。如果你也在学习Linux,python,不妨跟着萌新超超一起学习,拿下Linux,python一起加油,共同努力,拿到理想offer!


系列文章

项目实战1 | 基于iptables的SNAT+DNAT与Docker容器发布的项目


概述

项目实战有利于对已学知识的整合归纳,提高对相关知识的掌握程度,本次项目实战利用swarm+Prometheus实现一个双VIP高可用可监控的Web服务器集群,使用Nginx做负载均衡器,同时采用swarm管理的Docker集群并对外提供Web服务,使用keepalived的双vip实现HA,使用Prometheus+Grafana实现对Web服务器的监控。


目录

前言

概述

项目概述

项目详细代码

一、规划整个项目的拓扑结构和项目的思维导图

二、使用swarm实现Web集群部署,实现基于4个节点的swarm集群

三、创建NFS服务服务器为所有的节点提供相同Web数据,使用数据卷,为容器提供一致的Web数据

四、使用Nginx+keepalived实现双VIP负载均衡高可用

五、使用Prometheus实现对swarm集群的监控,结合Grafana成图工具进行数据展示


项目概述

项目名称:基于Swarm+Prometheus实现双VIP可监控Web高可用集群

项目环境:CentOS8(8台,1核2G),Docker(20.10.8),keepalived(2.1.5),Prometheus(2.29.1),Grafana(8.1.2),Nginx(1.14.1)等

项目描述:利用swarm+Prometheus实现一个双VIP高可用可监控的Web服务器集群,使用Nginx做负载均衡器,同时采用swarm管理的Docker集群并对外提供Web服务,使用keepalived的双vip实现HA,使用Prometheus+Grafana实现对Web服务器的监控。

项目步骤

1.规划整个项目的拓扑结构和项目的思维导图

2.使用swarm实现Web集群部署,实现基于4个节点的swarm集群

3.创建NFS服务服务器为所有的节点提供相同Web数据,实现数据一致性

4.使用数据卷,为容器提供一致的Web数据

5.使用Nginx+keepalived实现双VIP负载均衡高可用

6.使用Prometheus实现对swarm集群的监控,结合Grafana成图工具进行数据展示

项目心得

1.通过网络拓补图和思维导图的建立,提高了项目整体的落实和效率

2.对于容器编排工具swarm的使用和集群的部署更为熟悉

3.对于keepalived+nginx实现高可用负载均衡更为了解

4.对于Prometheus+Grafana实现系统监控有了更深的理解

5.对于脑裂现象的出现和解决有了更加清晰的认识

6.通过根据官方文档安装与使用swarm到集群整体的部署,进一步提高了自身的自主学习和troubleshooting能力

项目详细代码

一、规划整个项目的拓扑结构和项目的思维导图

网络拓扑图

思维导图

项目服务器如下:

IP:192.168.232.132 主机名:docker-manager-1 担任角色:swarm manager

IP:192.168.232.133 主机名:docker-2 担任角色:swarm worker node1

IP:192.168.232.134 主机名:docker-3 担任角色:swarm worker node2

IP:192.168.232.131 主机(ubuntu)名:chaochao 担任角色:swarm worker node3

IP:192.168.232.135 主机名:nfs-server 担任角色:nfs服务服务器

IP:192.168.232.136 主机名:load-balancer担任角色:负载均衡器(master)

IP:192.168.232.137 主机名:load-balancer担任角色:负载均衡器(backup)

IP:192.168.232.138 主机名:prometheus-server 担任角色:prometheus-server

二、使用swarm实现Web集群部署,实现基于4个节点的swarm集群

1.部署web服务集群机器环境(四台机器,CentOS8Ubuntu系统)

IP:192.168.232.132 主机名:docker-manager-1 担任角色:swarm manager

IP:192.168.232.133 主机名:docker-2 担任角色:swarm worker node1

IP:192.168.232.134 主机名:docker-3 担任角色:swarm worker node2

IP:192.168.232.131 主机(ubuntu)名:chaochao 担任角色:swarm worker node3

2.配置hosts文件

swarm manager:

[root@docker-manager-1 ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.232.132 manager

192.168.232.133 worker1

192.168.232.134 worker2

192.168.232.131 worker3

[root@docker-manager-1 ~]# getenforce

Disabled

另外三台worker node操作一致

3.设置防火墙和sellinux

关闭四台机器上的防火墙。

如果是开启防火墙,则需要在所有节点的防火墙上依次放行2377/tcp(管理端口)、7946/udp(节点间通信端口)、4789/udp(overlay 网络端口,容器之间)端口。

[root@docker-manager-1 ~]# systemctl disable firewalld

[root@docker-manager-1 ~]#
[root@docker-2 ~]# systemctl disable firewalld

[root@docker-2 ~]#

另外两台操作一致,不再赘述。

4.重启docker服务,防止导致网络异常

[root@docker-manager-1 ~]# service docker restart

Redirecting to /bin/systemctl restart docker.service

[root@docker-manager-1 ~]#
[root@docker-2 ~]# service docker restart

Redirecting to /bin/systemctl restart docker.service

[root@docker-2 ~]#
[root@docker-3 ~]# service docker restart

Redirecting to /bin/systemctl restart docker.service

[root@docker-3 ~]#
root@chaochao:~# service docker restart

root@chaochao:~#

5.创建swarm集群

对于manager

# 命令:docker swarm init --advertise-addr manager的IP地址

[root@docker-manager-1 ~]# docker swarm init --advertise-addr 192.168.232.132

Swarm initialized: current node (ooauma1x037wufqkh21uj0j7v) is now a manager.

 

To add a worker to this swarm, run the following command:

 

    docker swarm join --token SWMTKN-1-0200k3nv43fmc6hcuurx8z1iehsqq6uro12qjfeoxrkmk9fmom-1ub4wsmlpl4zhqalzdrgukx3l 192.168.232.132:2377

 

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

 

[root@docker-manager-1 ~]#

对于三台swarm nodes

输入manager创建的命令: docker swarm join --token ……,此命令在manager创建swarm时会自动生成。

[root@docker-2 ~]# docker swarm join --token SWMTKN-1-0200k3nv43fmc6hcuurx8z1iehsqq6uro12qjfeoxrkmk9fmom-1ub4wsmlpl4zhqalzdrgukx3l 192.168.232.132:2377

This node joined a swarm as a worker.

[root@docker-2 ~]#
[root@docker-3 ~]# docker swarm join --token SWMTKN-1-0200k3nv43fmc6hcuurx8z1iehsqq6uro12qjfeoxrkmk9fmom-1ub4wsmlpl4zhqalzdrgukx3l 192.168.232.132:2377

This node joined a swarm as a worker.

[root@docker-3 ~]#
root@chaochao:~# docker swarm join --token SWMTKN-1-0200k3nv43fmc6hcuurx8z1iehsqq6uro12qjfeoxrkmk9fmom-1ub4wsmlpl4zhqalzdrgukx3l 192.168.232.132:2377

This node joined a swarm as a worker.

root@chaochao:~#

三、创建NFS服务服务器为所有的节点提供相同Web数据,使用数据卷,为容器提供一致的Web数据

1.准备一台服务器担任NFS Server

客户机配置:CentOS8(1核/2G)

IP地址:192.168.232.135

修改好主机名:nfs-server

root@docker-4 ~]# hostnamectl set-hostname nfs-server

[root@docker-4 ~]# su

[root@nfs-server ~]#

共享的Web集群服务器信息如下:

IP:192.168.232.132 主机名:docker-manager-1 担任角色:swarm manager

IP:192.168.232.133 主机名:docker-2 担任角色:swarm node1

IP:192.168.232.134 主机名:docker-3 担任角色:swarm node2

IP:192.168.232.131 主机(ubuntu)名:chaochao 担任角色:swarm node3

2.安装和启动nfs服务

[root@nfs-server ~]# yum install nfs-utils -y

[root@nfs-server ~]# service nfs-server start

Redirecting to /bin/systemctl start nfs-server.service

[root@nfs-server ~]#

查看nfs服务的进程: ps aux|grep nfs

[root@nfs-server ~]# ps aux|grep nfs

root        2346  0.0  0.1  50108  2672 
  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chaochao️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值