百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

如何在Debian 11上安装Docker Swarm集群

nanshan 2024-10-09 12:51 16 浏览 0 评论

Docker Swarm是一个用于管理 Docker 主机的工具。我们可以构建一个高可用性、高性能的Docker集群,其中应用部署在许多服务器上。

Docker swarm由管理主机和工作节点构建。您可以在Docker Swarm集群中拥有一个或多个管理器节点。管理器节点使用原生Docker API,并与工作节点共享Docker Swarm集群的数据库。管理主机维护集群状态、调度作业和处理HTTP API端点。

与具有监控、Ingress和卷等全面功能的Kubernetes不同,Docker swarm的状态要简单得多。Docker Swarm还缺乏自动扩展功能,防护容器根据监控和资源使用情况进行扩展。必须手动缩放容器。

本文将引导您完成在Debian 11系统上安装Docker Swarm集群的过程。

1. 准备节点

配置 /etc/hosts 文件中每个节点的主机名以进行本地解析。

sudo vim /etc/hosts

添加每个服务器上节点的详细信息,包括管理器节点和工作器节点。

10.31.45.182	manager
10.31.45.226    worker-01
10.31.45.219    worker-02

确保主机可以通过 ping 相互联系

2. 在Debian 11上安装Docker CE

我们必须在所有主机、管理器和工作节点上安装Docker CE。

在主机上安装依赖包:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

添加Docker GPG key:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

添加Docker Repo

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

安装Docker引擎

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli

启动并启用Docker

sudo systemctl start docker
sudo systemctl enable docker

添加用户至Docker群组

sudo usermod -aG docker ${USER}

3. 初始化Docker Swarm集群

在此步骤中,我们需要在管理器节点上初始化 Docker swarm模式,然后稍后可以添加工作节点。

以下命令用于初始化Docker Swarm管理器。您应该将地址替换为管理中心节点的 IP。

newgrp docker
sudo docker swarm init --advertise-addr <manager-IP>

输出样例:

$ docker swarm init --advertise-addr 10.31.45.182
Swarm initialized: current node (xj5sqdpsbs5x2pgt670dft31m) is now a manager.
To add a worker to this swarm, run the following command:
    docker swarm join --token SWMTKN-1-5yat7zlum78qmnlhv1vs0b0k4c42jafh5kt8xtb36eara4c5ip-490dr4yhpbe5qnic476wh90zg 10.31.45.182:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

初始化管理器节点后,我们现在可以使用上面示例中给出的联接令牌添加工作节点。

$ docker swarm join --token SWMTKN-1-5yat7zlum78qmnlhv1vs0b0k4c42jafh5kt8xtb36eara4c5ip-490dr4yhpbe5qnic476wh90zg 10.31.45.182:2377
This node joined a swarm as a worker.

我们可以使用以下命令检查工作节点是否已成功加入集群:

sudo docker node ls

输出样例:

$ docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
h673oapwzqcsoszm36dcsyx4u     worker-01     Ready     Active                          20.10.3
tg30e58pf2ebktyu5geg5hjzd     worker-02     Ready     Active                          20.10.3
vhqes84cz4ljrrj8ux9bx9jzv     worker-03     Ready     Active                          20.10.3
xj5sqdpsbs5x2pgt670dft31m *   manager       Ready     Active         Leader           20.10.3

部署应用于Docker Swarm

在这里,我们将在群集上部署一 Web应用程序。

$ docker service create --name webserver -p 8080:80 nginx

上述命令将 Nginx 应用程序部署在集群上,并在端口 8080 上公开。
要确认服务是否正在运行,请执行以下操作:

$ docker service ls
ID             NAME        MODE         REPLICAS   IMAGE          PORTS
z383boupqk5p   webserver   replicated   1/1        nginx:latest   *:80->80/tcp

在Docker Swarm上扩展应用程序

您可以在 Docker 群集群上扩展应用程序,以实现高可用性和高性能。
使用以下命令:

$ docker service scale webserver=4

其中 webserver=4 是应用程序的名称和复制后要启动的容器总数。

您可以使用以下命令验证副本:

docker service ls

运行命令后将会显示如以下信息:

我们的 Docker Swarm 集群已成功部署在 Debian 11 主机上了。yyds!

相关推荐

Linux下C++访问web—使用libcurl库调用http接口发送解析json数据

一、背景这两天由于一些原因研究了研究如何在客户端C++代码中调用web服务端接口,需要访问url,并传入json数据,拿到返回值,并解析。 现在的情形是远程服务端的接口参数和返回类型都是json的字符...

干货 | 这 3 个超经典的Linux实战项目,让你分分钟入门Linux系统

编译安装nginx搭建小游戏网站编译安装流程下载nginx代码wget-P/server/tools/http:nginx.org/download/nginx1.22.0.tar.gz解压并进...

权限管理-树莓派linux⑦

前言当你在看这篇README,我感到非常荣幸。作为支持开源、分享的理念的我,给大家带来一些学习上的乐趣。由于本人并非专业的教育领域人士,很多时候天马行空,随心所欲的表达方式,可能让部分人感到不适。请根...

每天Linux学习:linux文件属性

ls-lih先通过这个命令来观察(-l列表显示目录内容详细,-i第一列显示inode,-h将文件大小显示为我们常见的kb,mb等单位)从截图中我们能看出文件属性由这9列信息组成:第1列:inod...

Linux ln、unlink命令用法

ln命令可以用来创建软链接或硬链接。1.创建软链接:ln-s源文件目标文件例如:ln-s/usr/lib/libc.so/usr/local/lib/libc.so.6这样就创建了一...

Linux 系统启动完整流程

一、启动系统流程简介如上图,简述系统启动的大概流程:1:硬件引导UEFi或BIOS初始化,运行POST开机自检2:grub2引导阶段系统固件会从MBR中读取启动加载器,然后将控制权交给启动加载器GRU...

最火的 CI/CD 平台 Jenkins 详细搭建教程(for Linux)

在正式学习Jenkins之前我们需要对两个名词有一定了解,其一是DevOps,另外一个就是CI/CD。何为DevOps?来自wiki百科介绍DevOps是一系列软件开发实践,强调开发人员(Dev)和测...

hadoop集群搭建详细方法

第一步:搭建配置新的虚拟机格式化之前先把tmp目录下所有与Hadoop有关的信息全部删除rm-rf/tmp/hadoop-centos*开启之后jps只有Java的进程:sudovi/et...

Linux 常用命令集合

系统信息arch显示机器的处理器架构(1)uname-m显示机器的处理器架构(2)uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件-(SMBIOS/DM...

inode文件索引,你了解嘛?你的Linux基础真的扎实嘛?

一、inode是什么?深入了解inode,就要从文件存储说起来!文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节。读取硬盘的时候,不会一个个扇区地读取,这样效率...

linux实例之创建service服务

前面我们讲过可以通过service命令来启动,重启,停止指定的服务程序。service服务可以在系统启动时,自动运行该服务,我们可以利用这一特点,创建service文件,并且让系统重启时,自动执行命令...

linux之软连接和硬连接的区别

硬连接硬链接是通过索引节点进行的链接。在Linux中,多个文件指向同一个索引节点是允许的,像这样的链接就是硬链接。硬链接只能在同一文件系统中的文件之间进行链接,不能对目录进行创建。如果删除硬链接对应的...

Linux inode 详解

简介索引节点(IndexNode)是Linux/类unix系统文件系统上的一种数据结构,用于存储有关文件或目录的元数据。它包含文件的所有信息,除了文件名和数据。inode在文件系统如何存储和检...

Bash 脚本实例:获取符号链接的目标位置

我们都熟悉Linux中的符号链接,通常称为符号链接或软链接,符号链接是指向任何文件系统中的另一个文件或目录的特定文件。本文将介绍Linux中符号链接的基础知识,并创建一个简单的bash脚本...

windows快捷方式,符号链接,软链接和硬链接

当一个软件大量的向C盘写入数据,而我们又无法修改软件保存数据的位置时,可以使用windows系统的“符号链接”(SymbolicLink)功能,将保存数据的位置修改到其它分区中。符号链接类似于我们熟...

取消回复欢迎 发表评论: