在CentOS 7上使用Docker Swarm(CE)进行粘性会话
使用其他系统?简介Docker Swarm将您的单个服务器转变为计算机集群,从而促进扩展,高可用性和扩展性。
本指南将向您展示如何使用多个Alpine Linux 3.9.0服务器和Portainer创建和配置Docker群。请注意,Vultr提供了一个一键式Docker应用程序,该应用程序当前支持CentOS 7 x64和Ubuntu 16.04 x64。
首先,您至少需要两台运行Alpine Linux 3.9.0的VC2服务器。在您的Docker群中,其中一台服务器将充当manager node
与外部网络的接口,并将作业委派给工作者节点。然后,另一台服务器将充当worker node
-由管理者节点委派给它的作业。
请注意,如果您的应用程序需要冗余和/或更多的计算能力,则可以启动两个以上的服���器,并且本指南中提供的步骤仍然适用。
访问Vultr 服务器部署界面。
确保Vultr Cloud (VC2)
在页面顶部选择选项卡。
您可以从该Server Location
部分中选择任何位置,但是所有服务器都必须位于同一位置,否则将无法向其部署Docker群。
选择该部分的ISO Library
标签,Server Type
然后选择Alpine Linux 3.9.0 x86_64
图像。
从该Server Size
部分中选择一个适当的选项。本指南将使用25 GB SSD服务器大小,但这可能不足以满足您应用程序的资源要求。尽管Vultr可以在启动服务器后轻松升级服务器的大小,但是您仍应仔细考虑应用程序需要哪种服务器大小才能最佳地执行。
在该Additional Features
部分中,您必须选择Enable Private Networking
选项。尽管不需要其他选项来遵循本指南,但是您应该考虑每个选项在您的应用程序上下文中是否有意义。
如果您以前Multiple Private Networks
在帐户上启用了该选项,则需要为服务器选择一个现有的或创建一个新的专用网络。如果尚未启用它,则可以忽略此部分。有关手动配置专用网络的信息,请参阅本指南。
Firewall Group
现在跳过该部分。只有充当Docker群中的管理器节点的服务器才需要暴露的端口,并且应在服务器部署后对其进行配置。
在页面的最底部,您必须输入Server Qty
至少两个。如前所述,您可能需要两台以上的服务器,但是只要有两台就足以按照本指南进行操作。
最后,在该Server Hostname & Label
部分中,为每个服务器输入有意义且令人难忘的主机名和标签。对于这种引导的目的,第一服务器的主机名和标签将是docker-manager
和Docker Manager
,respectively-和docker-worker
和Docker Worker
分别用于第二,。
仔细检查所有配置后,您可以单击Deploy Now
页面底部的按钮以启动服务器。
因为您从Vultr的ISO库中选择了一个操作系统,所以需要在每台服务器上手动安装和配置Alpine Linux 3.9.0。
给Vultr一两分钟来分配服务器后,在服务器管理界面上单击服务器的三点more options
图标,然后选择选项。Docker Manager
View Console
您应使用登录提示重定向到控制台。如果没有,请等待一分钟,以使Vultr完成服务器的部署。
在该登录提示下,输入root
作为用户名。实时版本的Alpine Linux 3.9.0(这是您的服务器当前正在运行的版本)不需要超级用户在登录时输入密码。
成功登录到根帐户后,您将看到一条欢迎消息,后跟一个shell提示符,如下所示:
localhost:~#
要启动Alpine Linux安装程序,请输入以下命令:
# setup-alpine
首先,选择适当的键盘布局。本指南将使用us
布局和变体。
设置主机名时,请选择在部署期间为此服务器设置的主机名。如果您严格按照本指南进行操作,则主机名应为docker-manager
。
两个网络接口应该可用:eth0
和eth1
。如果仅看到eth0
,则表明您没有正确配置服务器的专用网络。eth0
使用初始化dhcp
,并eth1
使用在部署过程中为此服务器分配的专用IP地址,网络掩码和网关进行初始化。您可以从服务器的设置界面访问这些详细信息。出现提示时,请勿执行任何手动网络配置。
输入root帐户的新密码,然后选择适合于您选择将这些服务器部署到的位置的时区。
如果要使用HTTP / FTP代理,请输入其URL,否则请不要设置代理URL。
选择一个NTP客户端来管理系统时钟同步。本指南将使用busybox
。
当询问要使用的软件包存储库镜像时,可以通过输入其编号来明确选择一个。通过输入自动检测并选择最快的一个f
;或通过输入手动编辑存储库配置文件e
,除非您熟悉Alpine Linux,否则不建议这样做。本指南将使用第一个镜子。
如果计划使用SSH访问服务器或托管基于SSH的文件系统,请选择要使用的SSH服务器。本指南将使用openssh
。
当提示您使用磁盘时,选择磁盘vda
作为sys
类型。
现在应该在您的服务器上安装Alpine Linux 3.9.0。对您之前部署的所有其他服务器重复此过程,以确保将正确的值替换为主机名和eth1
网络接口。
此时,您的服务器仍在运行Alpine Linux 3.9.0的实时ISO版本。要从SSD安装启动,请访问服务器的设置界面,导航至Custom ISO
侧边菜单项,然后单击Remove ISO
按钮。这应该重新启动服务器。如果没有,请手动重启。
服务器完成重新引导后,导航回服务器的Web控制台Docker Manager
。
使用在安装过程中先前设置的密码登录到根帐户。
允许通过取消注释的第三行社区包库/etc/apk/repositories
使用vi
。您可以以类似方式启用边缘存储库和测试存储库,但是不需要遵循本指南。
通过输入以下shell命令,将服务器的本地软件包索引与您先前选择的远程存储库同步:
# apk update
然后升级过期的软件包:
# apk upgrade
与以前一样,对之前部署的每个服务器重复此配置过程。
在安装Docker软件包本身之前,您可能需要创建一个单独的docker
用户。您可以使用以下命令执行此操作:
# adduser docker
注意: 一旦安装了Docker软件包,该新用户和添加到新docker
组中的所有用户都将具有root特权。请参见Moby Github存储库中的以下问题:
由于
--privileged
docker中的存在,添加到“ docker”组的任何人都是根用户。码头工人组中的所有人在所有特权升级策略和系统审核上都有后门。这不同于能够运行sudo到root的人,他们在这里有策略并对其应用了审核。
如果您想向docker
用户授予sudo权限,请先安装该sudo
软件包:
# apk add sudo
然后创建一个sudo
组:
# addgroup sudo
最后,将docker
用户添加到sudo
组中:
# adduser docker sudo
现在,您可以按照本指南的第4步完成sudo的配置。
至此,您已经准备好安装Docker软件包。请注意,并不一定要有单独的具有sudo功能的docker
用户来安装和配置Docker,但是本指南遵循该约定。
使用以下命令安装Docker软件包:
# apk add docker
然后启用Docker初始化脚本:
# rc-update add docker
最后,启动Docker守护程序:
# rc-service docker start
您可以使用以下命令验证Docker是否正在运行:
# docker info
与上次一样,对开始时部署的每个服务器重复此Docker安装过程。
处理完所有设置后,您终于可以创建Docker群了。
导航回到Docker Manager
服务器的Web控制台。您将将此服务器配置为集群中的管理器节点。如果选择docker
更早创建用户,请使用该帐户而不是超级用户登录。
输入以下命令,但192.0.2.1
用为Docker Manager
服务器分配的私有(而非公共)IP地址代替:
$ docker swarm init --advertise-addr 192.0.2.1
Docker将显示一个命令,您可以在专用网络中的其他服务器上执行该命令,以将它们作为工作节点添加到该新集群中。保存此命令。
现在,导航到Docker Worker
服务器的Web控制台,docker
如果已创建,请使用用户登录。
要将此服务器作为工作节点添加到刚创建的群集中,请执行从群集创建命令的输出中保存的命令。它将类似于以下内容:
$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377
Docker将输出该节点是否能够加入集群。如果在将工作程序节点添加到群集时遇到问题,请仔细检查您的专用网络配置,并参阅此指南进行故障排除。
如果在开始时部署了两个以上的服务器,则可以使用上面的命令将其余的作为工作节点添加到集群中,从而增加应用程序可用的资源量。或者,您可以添加其他管理器节点,但这超出了本指南的范围。
此时,您的Docker群已准备就绪,可以使用。但是,您可以选择在集群的管理器节点上启动Portainer堆栈。Portainer提供了一个方便的Web界面,用于管理您的群及其中的节点。
现在是时候为您的集群创建防火墙组了。除非您的应用程序特别要求,否则仅公开管理器节点上的端口。在不仔细考虑的情况下公开工作节点上的端口可能会引入漏洞。
导航到防火墙管理界面并创建一个新的防火墙组。您的应用程序应规定要公开的端口,但至少必须9000
为Portainer 公开端口。将此防火墙组应用于Docker Manager
服务器。
尽管不是必需的,但强烈建议使用SSL保护Portainer。为了本指南的缘故,您将仅使用自签名的OpenSSL证书,但应考虑在生产环境中使用Let's Encrypt。
导航到Docker Manager
服务器的Web控制台,使用docker
用户登录,然后使用以下命令生成自签名的OpenSSL证书:
$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650
创建一个~/portainer-agent-stack.yml
具有以下内容的新文件:
version: '3.2'
services:
agent:
image: portainer/agent
environment:
AGENT_CLUSTER_ADDR: tasks.agent
CAP_HOST_MANAGEMENT: 1
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
- /:/host
networks:
- agent_network
deploy:
mode: global
portainer:
image: portainer/portainer
command: -H tcp://tasks.agent:9001 --tlsskipverify --ssl --sslcert /certs/portainer.pem --sslkey /certs/portainer.key
ports:
- target: 9000
published: 9000
protocol: tcp
mode: host
volumes:
- portainer_data:/data
- /home/docker/certs:/certs
networks:
- agent_network
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
networks:
agent_network:
driver: overlay
attachable: true
volumes:
portainer_data:
修改此Docker堆栈配置文件以符合您的要求后,您可以部署它:
$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer
要验证Portainer是否正常工作,请在给Docker一两分钟的时间来部署堆栈后执行以下命令:
$ docker ps
您将看到两个带有图像的容器,portainer/portainer:latest
并portainer/agent:latest
验证Portainer是否正确启动。
现在,您可以使用HTTPS Docker Manager
在端口上访问服务器的公共IP地址,从而配置和管理Docker群9000
。
使用其他系统?简介Docker Swarm将您的单个服务器转变为计算机集群,从而促进扩展,高可用性和扩展性。
Rancher OS是围绕Docker构建的非常轻量级的Linux发行版。操作系统本身的重量约为20MB。本教程将帮助您入门和运行
借助Vultr Docker应用程序,您可以轻松地在Vultr服务器实例上部署Docker。同时,您可以方便地进行Docker管理任务
简介Docker是一个应用程序,可让我们部署作为容器运行的程序。它是用流行的Go编程语言编写的
概述RancherOS是一个非常轻量级的操作系统(仅约60 MB),它以PID 0作为运行系统服务的方式运行系统Docker守护程序。
我们都知道并喜欢Docker,这是一个在多台机器上创建,管理和分发应用程序容器的平台。Docker Inc.提供服务
使用其他系统?简介Docker是一个允许在虚拟容器内部署软件的应用程序。它写在G
LXC容器(Linux容器)是Linux中的一种操作系统功能,可用于在单个主机上运行多个隔离的Linux系统。塞斯
本教程介绍了Docker入门的基础知识。我假设您已经安装了Docker。本教程中的步骤将适用于
本文将向您展示如何在Docker容器中部署Node应用程序。注意:本教程假定您已安装Docker并已阅读
在运行Web应用程序时,通常希望充分利用资源,而不必转换软件以使用多线程处理程序。
使用其他系统?简介Rancher是一个用于运行容器和构建私有容器服务的开源平台。牧场主是基地
Kubernetes是Google开发的开放源代码平台,用于跨服务器集群管理容器化应用程序。它以十年为基础
使用其他系统?简介Docker Swarm将您的单个服务器转变为计算机集群。便于扩展,高可用性和
Harbor是一个开放源代码的企业级注册服务器,用于存储和分发Docker映像。Harbor扩展了开源Docker Distribution b
概述本文旨在帮助您立即建立Kubernetes集群并使用kubeadm运行。本指南将在以下位置部署两台服务器
前提条件Docker引擎1.8+。至少4GB的磁盘空间。至少4GB的RAM。步骤1.安装Docker为了安装SQL-Server,Docker mus
使用其他系统?Docker是一个允许部署作为容器运行的程序的应用程序。它是用流行的Go程序编写的
PHP应用程序通常由Web服务器,关系数据库系统和语言解释器本身组成。在本教程中,我们将继续学习
勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根
ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。
Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+
閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。
最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息
大數據的13個商業數據提取工具
我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true
隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。
洞察 26 種大數據分析技術:第 1 部分
過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。