Nomad 系列-安装
系列文章
Nomad 简介
开新坑!近期算是把自己的家庭实验室环境初步搞好了,终于可以开始进入正题研究了。
首先开始的是 HashiCorp Nomad 系列,欢迎阅读。
关于 Nomad 的简介,之前在 大规模 IoT 边缘容器集群管理的几种架构-2-HashiCorp 解决方案 Nomad 有提到过,这里再快速过一遍:
Nomad: 一个简单而灵活的(主要是容器,但有不至于容器的)调度器和编排器,可在内部和云端大规模部署和管理容器和非容器化的应用程序
Nomad 使开发者能够使用声明式的基础设施即代码来部署应用程序。Nomad 使用 bin packing 来有效地安排工作并优化资源利用。
Nomad 凭借其简单性、灵活性、可扩展性和高性能与相关工具区分开来。Nomad 的协同作用和整合点 HashiCorp Terraform、Consul 和 Vault 使其特别适合轻松集成到 组织的现有工作流程,最大限度地减少关键计划的上市时间。
Nomad 一些特性
- Nomad 与 Consul 及 K8s 略有不同,它将基础设施划分为由一个 Nomad 服务器集群服务的区域,但可以管理多个数据中心或可用性区域。
- Nomad 客户端到其服务器的延迟可能超过 100 毫秒。这允许具有一组 Nomad 服务器,所述 Nomad 服务器在具有单个“全球”区域和多个数据中心的情况下服务可以在地理上分布在一个大陆甚至世界上的所有客户端。
Nomad 安装
Nomad 是一个预编译的二进制文件,也可以作为几个操作系统的包。这次我们通过包管理器来安装。
以 Ubuntu/Deiban 为例:
前提条件
- root 权限
- IPtables 功能完整
- Docker 已安装
Warning
请注意,如果您在 Linux 上运行 Nomad,则需要以 root 身份(或使用 sudo )运行客户端 Agent,以便 cpuset accounting 和网络名称空间正常工作。
通过 APT 安装
首先安装所需的软件包:
sudo apt-get update && \
sudo apt-get install wget gpg coreutils
其次添加 HashiCorp GPG 密钥:
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
添加官方 HashiCorp Linux 存储库:
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
更新并安装:
sudo apt-get update && sudo apt-get install nomad
通过 APT 安装,Nomad 会自动配置为 systemd 服务。可以设置为自启动:
sudo systemctl enable nomad
安装后步骤 - 安装 CNI 插件
这些步骤被认为是可选的,但对于运行 Nomad 和利用其他 Nomad 功能很有帮助。
当使用 bridge 网络模式时,Nomad 使用 CNI 插件配置网络名称空间。所有使用网络命名空间的 Linux Nomad 客户端节点都必须安装 CNI 插件。
以下命令安装 CNI 参考插件:
curl -L -o cni-plugins.tgz "https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-$( [ $(uname -m) = aarch64 ] && echo arm64 || echo amd64)"-v1.3.0.tgz && \
sudo mkdir -p /opt/cni/bin && \
sudo tar -C /opt/cni/bin -xzf cni-plugins.tgz
确保 Linux 操作系统发行版已配置为允许通过网桥网络的容器流量通过 iptables 进行路由。这些可调参数可按如下方式设置:
echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-arptables && \
echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-ip6tables && \
echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables
要在启动客户端节点时保留这些设置,请将包含以下内容的文件添加到 /etc/sysctl.d/bridge.conf
:
net.bridge.bridge-nf-call-arptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
验证安装
要验证 Nomad 是否正确安装,请尝试 nomad 命令:
$ nomad version
Nomad v1.6.1
BuildDate 2023-07-21T13:49:42Z
Revision 515895c7690cdc72278018dc5dc58aca41204ccc
配置
Notes
我们不以 dev 模式启动 nomad.
Nomad 分为 Nomad Server 和 Nomad Client. 此次安装为:
- 1 个 Nomad Server(仅 Server, 同一节点不启动 Client)
- 多个 Nomad Client
某些配置设置对于服务器和客户端 Nomad Agent 来说是通用的,而某些配置设置必须仅存在于其中一个或另一个上。
Nomad 通用配置
在 /etc/nomad.d/nomad.hcl
创建配置文件:
sudo mkdir --parents /etc/nomad.d
sudo chmod 700 /etc/nomad.d
sudo touch /etc/nomad.d/nomad.hcl
将此配置添加到 nomad.hcl 配置文件:
Warning:
根据您的情况,将 datacenter 参数值替换为部署 Nomad 集群的数据中心的标识符。
datacenter = "dc1"
data_dir = "/opt/nomad"
datacenter
-运行 Agent 的数据中心data_dir
- Agent 存储状态的数据目录
Server 配置
在 /etc/nomad.d/server.hcl
创建配置文件:
sudo touch /etc/nomad.d/server.hcl
将此配置添加到 server.hcl
配置文件:
Warning:
将 bootstrap_expect 值替换为您正在部署的 Nomad 服务器数量;建议三到五个。
我这里是家庭实验室环境,1 个就够用了。
server {
enabled = true
bootstrap_expect = 1
}
此 server
节包含以下参数:
enabled
-指定此 Agent 是否应以服务器模式运行。所有其他服务器选项取决于设置的此值。bootstrap_expect
-集群中预期的服务器数量。不提供此值,或者此值必须与群集中的服务器数量一致。
Client 配置
在 /etc/nomad.d/client.hcl
创建配置文件:
sudo touch /etc/nomad.d/client.hcl
将此配置添加到 client.hcl 配置文件:
client {
enabled = true
servers = ["192.168.2.1"]
}
此 client
节包含以下参数:
enabled
-指定此 Agent 是否应在客户端模式下运行。所有其他客户端选项都取决于此值的设置。servers
- Nomad Servers 地址列表
Warning:
该配置未进行安全加固。没有配置 ACL 以及 TLS.
启动
sudo systemctl start nomad
sudo systemctl status nomad
❯ sudo systemctl status nomad
● nomad.service - Nomad
Loaded: loaded (/usr/lib/systemd/system/nomad.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2023-08-26 11:15:11 CST; 11h ago
Docs: https://nomadproject.io/docs/
Main PID: 1648 (nomad)
Tasks: 13
CGroup: /system.slice/nomad.service
└─1648 /usr/bin/nomad agent -config /etc/nomad.d
至此 Nomad 的 Server 和 Client 启动完毕,可以通过 http://<server_ip>:4646
进行访问。如下:
️参考文档
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
Nomad 系列-安装的更多相关文章
- 学习Linux系列--安装Ubuntu
最近学习Linux,使用虚拟机太不方便,于是购买了阿里云最便宜的云主机作为学习设备. 本系列文章记录了个人学习过程的点点滴滴. 学习Linux系列--安装Ubuntu 学习Linux系列--安装软件环 ...
- CentOS7系列--安装Chrome浏览器
CentOS7系列--安装Chrome浏览器 1. 创建yum源文件 [root@server20 ~]# cd /etc/yum.repos.d/ [root@server20 yum.repos. ...
- 学习Linux系列--安装软件环境
本系列文章记录了个人学习过程的点点滴滴. 回到目录 10.安装Lamp套件. 最简单的方式,如下 sudo tasksel install lamp-server Apache 菜鸟教程 Ubuntu ...
- zend framerwork2.X系列安装创建应用
1. 到https://github.com/zendframework/ZendSkeletonApplication下载zip包,解压到你服务器的根目录. 2. 打开windows的cmd,cd到 ...
- linux 相关系列安装
以Red Hat Enterprise Linux 5为例进行讲解. 相关系列: linux下jdk的安装 linux下ant的安装 linux下redis的安装 linux下svn的安装 linux ...
- cetus系列~安装和基本配置
cetus系列一 安装 1 安装软件环境 yum install cmake gcc glib2-devel flex mysql-devel gperftools-libs bison f ...
- Bigdata--hadoop系列安装
Date:20180827 Monday 目前市场hadoop主流版本是2.7.x系列,下面我们就以hadoop-2.7.3为例进行安装 安装前准备: 1.操作系统:cetos(6和7) 2.java ...
- 智能家居系统 Home Assistant 系列 --安装系统之Windows
Home Assistant 是一个成熟完整的基于 Python 的智能家居系统. 首先得安装Python环境.在浏览器中访问Python官网 www.python.org 进入Downloads中的 ...
- mysql系列安装
Mysql的5种安装方法:1.yum/rpm安装(适合要求不高,并发不大,公司内部,企业内部一些应用场景)2.编译安装(在线高并发业务)3.二进制安装(编译安装后,使用自带工具打包,然后拷贝到相同平台 ...
- 映泰主板H100系列安装win7的各种坑
自100系列主板发布以来,windows7好像就被遗弃一样,原因就在于安装win7的时候,会出现USB设备无法使用导致无法安装的问题.主要在于Win7系统没有整合USB的XHCI驱动,而100系列芯片 ...
随机推荐
- 【题解】[蓝桥杯] [基础练习VIP]矩形面积交
题目描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴.对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积. 输入 输入仅包含两行,每行描述一个矩形. 在每行中,给 ...
- 2023最新IntellJ IDEA诺依SpringCloud开发部署文档(保姆级别)
目录 若依RuoYi v3.6.2部署文档 一.环境构建 二.模块描述 三.部署后端 1.下载到本地. 2.MySQL导入数据. 3.Nacos修改 (1)保证本地Nacos下载安装成功,修改本地Na ...
- python利用subprocess执行shell命令
subprocess以及常用的封装函数 运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python中 ...
- R语言中的跨平台支持:如何在Windows、MacOS和Linux上使用R语言进行数据分析和可视化
目录 当今数据科学领域,R语言已经成为了数据分析和可视化的流行工具.R语言具有强大的功能和灵活性,使得它可以在各种不同的平台上运行,包括Windows.MacOS和Linux.因此,本文将介绍R语言中 ...
- 从隐私保护到AI隐私保护:隐私隐私保护的跨隐私保护治理框架实践案例
目录 标题:<从隐私保护到AI隐私保护:跨隐私保护治理框架实践案例> 背景介绍 随着人工智能技术的广泛应用,隐私保护问题也日益突出.数据隐私泄露.算法歧视等问题引发了公众的担忧和不满.为了 ...
- 一文了解Go语言的匿名函数
1. 引言 无论是在Go语言还是其他编程语言中,匿名函数都扮演着重要的角色.在本文中,我们将详细介绍Go语言中匿名函数的概念和使用方法,同时也提供一些考虑因素,从而帮助在匿名函数和命名函数间做出选择. ...
- LeetCode 双周赛 107(2023/06/24)滑动窗口与离散化
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 [BaguTree Pro] 知识星球提问. 往期回顾:LeetCode 单周赛第 348 场 · 数位 DP ...
- SQL SERVER 查看表说明,字段属性
查询表字段属性,说明等: 1 SELECT 2 表名=case when a.colorder=1 then d.name else '' end, 3 表说明=case when a.colorde ...
- 即构微信小程序直播组件是什么?有哪些功能?哪些小程序类目可以使用?
即构直播助手是微信官方认证的微信小程序插件,为开发者提供便捷.强大的微信小程序音视频直播服务. 即构直播助手除了包含微信小程序下的音视频推拉流能力,还支持iOS.Android.Windows.Web ...
- Delta Lake_ High-Performance ACID Table Storage over Cloud Object Stores
论文发表于 2020年, 研究数据湖产品的很好的学习资料. 概要 开篇很明确的表明了为什么要做Delta lake这样一个产品. Databricks尝试将数据仓库直接架在云上对象存储之上, 这种尝试 ...