借一步网
作者:
在
👋 在云原生、容器化、微服务、服务网格等概念风靡的当下,Kubernetes 已经成为了云原生计算平台的事实标准。但 Kubernetes 的学习曲线较高,而且随着其功能不断扩展,维护成本也随之增加。那么,是否所有场景都需要部署一个庞大的 Kubernetes 集群呢?是否有更轻量级的方案能够满足我们的需求?
💡 答案是肯定的!Hashicorp 公司推出的 Nomad 工具就提供了轻量级的集群管理和微服务部署调度方案,它足够灵活,能够满足各种场景下的需求。
🚀 本文将带你深入探索 Nomad 的世界,并通过实际案例演示如何使用 Nomad 实现集群管理和微服务部署调度。
🏗️ Nomad 是一个基于 Go 语言实现的集群管理和工作负载调度器,它支持 Docker 容器、虚拟机、原生可执行程序等多种驱动形式的工作负载调度,并支持跨数据中心调度。
🤝 Nomad 与 Consul 和 Vault 紧密协作,分别负责服务发现和密钥管理,这使得 Nomad 更加轻量级,调度性能更高。
🚀 下面我们将通过基于 Consul 自动建立 Nomad 集群的方式,快速搭建一个 Nomad 集群。
1. Consul 集群启动
🚀 首先,我们需要启动一个 Consul 集群。在之前的文章中,我们已经详细介绍了 Consul 集群的搭建方法。这里,我们直接列出步骤,不再赘述。
💻 在每个节点上下载 Consul 1.4.4 版本:
# wget -c https://releases.hashicorp.com/consul/1.4.4/consul_1.4.4_linux_amd64.zip # unzip consul_1.4.4_linux_amd64.zip # cp consul /usr/local/bin # consul -v
🚀 启动 Consul 集群:
# nohup consul agent -server -ui -dns-port=53 -bootstrap-expect=3 -data-dir=~/.bin/consul-install/consul-data -node=consul-1 -client=0.0.0.0 -bind=172.16.66.102 -datacenter=dc1 > consul-1.log & 2>&1 # nohup consul agent -server -ui -dns-port=53 -bootstrap-expect=3 -data-dir=/root/consul-install/consul-data -node=consul-2 -client=0.0.0.0 -bind=172.16.66.103 -datacenter=dc1 -join 172.16.66.102 > consul-2.log & 2>&1 # nohup consul agent -server -ui -dns-port=53 -bootstrap-expect=3 -data-dir=/root/consul-install/consul-data -node=consul-3 -client=0.0.0.0 -bind=172.16.66.104 -datacenter=dc1 -join 172.16.66.102 > consul-3.log & 2>&1
👀 验证 Consul 集群是否启动成功:
# consul members # consul operator raft list-peers
2. DNS 设置(可选)
🌐 如果采用基于 Consul DNS 的服务发现方式,则需要在每个 Nomad client 节点上设置 DNS。
💻 在每个节点上创建和编辑 /etc/resolvconf/resolv.conf.d/base 文件,添加以下内容:
/etc/resolvconf/resolv.conf.d/base
nameserver {consul-1-ip} nameserver {consul-2-ip}
🚀 重启 resolvconf 服务:
# /etc/init.d/resolvconf restart
3. 基于 Consul 集群引导启动 Nomad 集群
🚀 在每个节点上下载 Nomad:
# wget -c https://releases.hashicorp.com/nomad/0.8.7/nomad_0.8.7_linux_amd64.zip # unzip nomad_0.8.7_linux_amd64.zip.zip # cp ./nomad /usr/local/bin # nomad -v
💻 创建 Nomad 配置文件 agent.hcl:
agent.hcl
// agent.hcl data_dir = "/root/.bin/nomad-install/nomad.d" server { enabled = true bootstrap_expect = 3 } client { enabled = true }
🚀 启动 Nomad 集群:
# nohup nomad agent -config=/root/.bin/nomad-install/agent.hcl > nomad-1.log & 2>&1 # nohup nomad agent -config=/root/.bin/nomad-install/agent.hcl > nomad-2.log & 2>&1 # nohup nomad agent -config=/root/.bin/nomad-install/agent.hcl > nomad-3.log & 2>&1
👀 验证 Nomad 集群是否启动成功:
# nomad server members # nomad operator raft list-peers # nomad node-status
📊 Nomad 还提供一个 UI 界面 (http://nomad-node-ip:4646/ui),可以直观地查看 Nomad 集群的状态,包括 server、clients、工作负载 (job) 的情况。
🏗️ Nomad 通过 Job 文件来描述工作负载,并使用 Job 相关子命令来完成所有关于工作负载的操作。
🚀 下面我们将使用一个简单的 HTTP 后端服务示例,演示如何使用 Nomad 部署工作负载。
1. Job 文件定义
💻 创建 httpbackend-1.nomad Job 文件:
httpbackend-1.nomad
// httpbackend-1.nomad job "httpbackend" { datacenters = ["dc1"] type = "service" group "httpbackend" { count = 2 task "httpbackend" { driver = "docker" config { image = "bigwhite/httpbackendservice:v1.0.0" port_map { http = 8081 } logging { type = "json-file" } } resources { network { mbits = 10 port "http" {} } } service { name = "httpbackend" port = "http" } } } }
💡 Job 文件定义了 Job、Group 和 Task 的层次关系。
2. Job 计划与执行
🚀 使用 nomad job plan 命令进行 dry-run,检查 Job 文件格式是否正确,以及 Nomad 集群是否有足够的资源来创建和调度新的工作负载:
nomad job plan
# nomad job plan httpbackend-1.nomad
🚀 使用 nomad job run 命令正式创建和调度 Job:
nomad job run
# nomad job run httpbackend-1.nomad
3. Job 状态查看
👀 使用 nomad job status 命令查看 Job 的创建情况以及某个 Job 的详细状态信息:
nomad job status
# nomad job status
🎉 Nomad 提供了一个轻量级、灵活、高效的集群管理和微服务部署调度方案,它可以帮助我们快速搭建和管理集群,并轻松部署和调度各种工作负载。
💡 与 Kubernetes 相比,Nomad 的学习曲线更低,部署和维护成本更低,同时它也拥有足够的灵活性,能够满足各种场景下的需求。
🚀 在云原生时代,Nomad 作为一种轻量级利器,将为我们提供更便捷、更高效的集群管理和微服务部署调度体验。
😊 希望本文能够帮助你更好地理解和使用 Nomad!
要发表评论,您必须先登录。
👋 在云原生、容器化、微服务、服务网格等概念风靡的当下,Kubernetes 已经成为了云原生计算平台的事实标准。但 Kubernetes 的学习曲线较高,而且随着其功能不断扩展,维护成本也随之增加。那么,是否所有场景都需要部署一个庞大的 Kubernetes 集群呢?是否有更轻量级的方案能够满足我们的需求?
💡 答案是肯定的!Hashicorp 公司推出的 Nomad 工具就提供了轻量级的集群管理和微服务部署调度方案,它足够灵活,能够满足各种场景下的需求。
🚀 本文将带你深入探索 Nomad 的世界,并通过实际案例演示如何使用 Nomad 实现集群管理和微服务部署调度。
一. Nomad 集群的搭建:轻装上阵,快速起航
🏗️ Nomad 是一个基于 Go 语言实现的集群管理和工作负载调度器,它支持 Docker 容器、虚拟机、原生可执行程序等多种驱动形式的工作负载调度,并支持跨数据中心调度。
🤝 Nomad 与 Consul 和 Vault 紧密协作,分别负责服务发现和密钥管理,这使得 Nomad 更加轻量级,调度性能更高。
🚀 下面我们将通过基于 Consul 自动建立 Nomad 集群的方式,快速搭建一个 Nomad 集群。
1. Consul 集群启动
🚀 首先,我们需要启动一个 Consul 集群。在之前的文章中,我们已经详细介绍了 Consul 集群的搭建方法。这里,我们直接列出步骤,不再赘述。
💻 在每个节点上下载 Consul 1.4.4 版本:
🚀 启动 Consul 集群:
👀 验证 Consul 集群是否启动成功:
2. DNS 设置(可选)
🌐 如果采用基于 Consul DNS 的服务发现方式,则需要在每个 Nomad client 节点上设置 DNS。
💻 在每个节点上创建和编辑
/etc/resolvconf/resolv.conf.d/base
文件,添加以下内容:🚀 重启 resolvconf 服务:
3. 基于 Consul 集群引导启动 Nomad 集群
🚀 在每个节点上下载 Nomad:
💻 创建 Nomad 配置文件
agent.hcl
:🚀 启动 Nomad 集群:
👀 验证 Nomad 集群是否启动成功:
📊 Nomad 还提供一个 UI 界面 (http://nomad-node-ip:4646/ui),可以直观地查看 Nomad 集群的状态,包括 server、clients、工作负载 (job) 的情况。
二. 部署工作负载:轻量级调度,高效运行
🏗️ Nomad 通过 Job 文件来描述工作负载,并使用 Job 相关子命令来完成所有关于工作负载的操作。
🚀 下面我们将使用一个简单的 HTTP 后端服务示例,演示如何使用 Nomad 部署工作负载。
1. Job 文件定义
💻 创建
httpbackend-1.nomad
Job 文件:💡 Job 文件定义了 Job、Group 和 Task 的层次关系。
2. Job 计划与执行
🚀 使用
nomad job plan
命令进行 dry-run,检查 Job 文件格式是否正确,以及 Nomad 集群是否有足够的资源来创建和调度新的工作负载:🚀 使用
nomad job run
命令正式创建和调度 Job:3. Job 状态查看
👀 使用
nomad job status
命令查看 Job 的创建情况以及某个 Job 的详细状态信息:三. 总结:轻量级、灵活、高效
🎉 Nomad 提供了一个轻量级、灵活、高效的集群管理和微服务部署调度方案,它可以帮助我们快速搭建和管理集群,并轻松部署和调度各种工作负载。
💡 与 Kubernetes 相比,Nomad 的学习曲线更低,部署和维护成本更低,同时它也拥有足够的灵活性,能够满足各种场景下的需求。
🚀 在云原生时代,Nomad 作为一种轻量级利器,将为我们提供更便捷、更高效的集群管理和微服务部署调度体验。
参考文献
😊 希望本文能够帮助你更好地理解和使用 Nomad!