阅读指南
说到自动化编排和部署平台,每个人都会想到kubernetes(以下简称k8s)。然而,对于中小型场景来说,k8s过于沉重和复杂。
郭敬才部署的“轻量级容器+云”项目取得了显著成效。通过本系列的主题分享,我期待着与您讨论k8s替代方案。
Nomad简介
Nomad是一个基于go语言开发的编舞和工作流架构应用服务。其优点如下:
- 重量轻。单一可执行文件,集成服务器、客户端和web管理界面;
- 它不仅支持容器部署,还支持本机模式部署;
- 基于JSON格式的作业文件,编写的代码量远远少于k8s;
- 内置灰色发布、自动回滚、水平伸缩、节点疏散等自动部署所需的基本功能。
因此,与需要自行安装多个组件的k8s相比,Nomad的部署更简单。
官方网站指南
https:www.nomadproject。comio/
关于Consul
Consul也是基于围棋语言开发的,具有以下功能:
- 内部DNS解析;
- 服务自注册、生存监控、动态负载平衡;
- 支持网络通信加密;
- 跨平台、服务友好的微电网。
官方网站指南
https://www.consumer。comio/
信智“天天人才”项目平台部署流程
1.应用程序编译和打包后,将其制作成docker映像并推送到docker私有库中。
2.根据申请要求,编写相应的Nomad作业并发送给Nomad服务器。
3.Nomad根据资源池选择合适的服务器节点,从私有的库拉获取图像,启动docker容器,随机选择主机上的一个端口映射到容器中的应用服务监听端口。
4.Nomad然后根据作业配置中的声明向Consul注册服务名称、主机IP和集装箱端口。
5.使用traefik或Fabio服务监听Consul注册的信息,提供反向代理服务,动态热更新每个应用服务的访问地址列表。通过这种方式,应用程序之间的访问可以遵循统一的API网关接口,而不需要知道它们的特定访问地址。
Consul关于构建轻量级集装箱自动排列和部署平台的文章
以Ubuntu20.04为例,Consul可以通过依次执行以下三个命令来安装:
Curl-fsslLiuYifei://apt.releaseshashicorp。com/gpg|sudoapt按键添加-
sudoaptaddrepository";Deb[arch=AMD64]https://apt.releaseshashicorp。com$(lsb_发行版-cs)main和#34;
sudo-apt-get-update&sudo-apt-get-install-consur
完成安装。
其配置文件位于/etc/consumerd/consul中。hcl.以192.168.56.101服务器的配置为例,查找并修改以下关键配置:
客户地址=";0.0.0.0",
绑定地址=";192.168.56.101",
#服务器配置
ui=true,
server=true,
bootstrap(NicholasTse_uuuu)expect=3,
重试uu-Ma-Huateng=[";192.168.56.101";";192.168.56.102";";192.168.56.103";]
具有服务器角色的其他两台服务器的配置只需修改绑定即可。addr的值是相应的IP。
修改服务器的配置后,执行
服务领事重启
只是然后,您可以通过以下命令查看集群的建立状态。
Journalctl-Xe|格雷普消费者|格雷普join
看到这样的内容表明集群已经建立。
代理:(兰)join编辑:节点数=3
接下来,安装并配置其余四个代理。以192.168.56.104为例,其配置为:
客户地址=";0.0.0.0",
绑定地址=";192.168.56.104",
#代理配置
ui=false,
server=false,
重试uu-Ma-Huateng=[";192.168.56.101";";192.168.56.102";";192.168.56.103";]
其他三台具有代理角色的服务器只需修改绑定即可。addr的值是相应的IP。记住执行服务消耗重启以使新配置生效。
Consul默认使用8600端口提供DNS解析服务。为了维护自己的服务并支持标准端口53,它需要通过dnsmasq进行一些额外的处理和代理。
首先,您需要停止系统本身的DNS服务(根据每个发行版,我们以Ubuntu20.04为例进行全文介绍)。
systemctldisable--现在systemd已解决
然后安装dnsmasq
aptget安装-ydnsmasq
创建/etc/dnsmasqD/10consumer并写入和保存以下内容。
服务器=/consu/127.0.0.1#8600
服务器=223.5.5.5
服务器=223.6.6.6
只需重新启动服务
服务dnsmasq重启
现在让我们验证一下。查看Consul为其服务注册的域名使用情况。领事
挖掘领事。服务领事
;<;<;>;>;挖掘9.16.1-Ubuntu<;和lt;>;>;领事服务领事
;;全局选项:+cmd
;;得到答案:
;;->;>;标题<;<;<;-操作码:查询,状态:无错误,id:26656
;;旗帜:qr-aa-rd-ra;查询:1,答案:3,权限:0,ADDITIONAL:1
;;选择假节:
;EDNS:版本:0,标志:;udp:4096
;;问题部分:
;领事服务领事在一个
;;回答部分:
领事服务领事192.168.56.103中的0
领事服务领事192.168.56.101中的0
领事服务领事192.168.56.102中的0
;;查询时间:3毫秒
;;服务器:127.0.0.1#53(127.0.0.1)
;;12月23日:12:25:18CST2021
;;味精大小:98
你可以看到,在这个域名下,注册了三个IP地址(都在服务器端)。此外,每个查询的返回顺序不同,可以说间接实现了负载平衡的效果。
Consul还带来了自己的网络用户界面,可以在浏览器中访问http://192.168.56.101:8500
它提供了一个非常简单实用的界面,您可以在其中查看哪些服务已注册,以及服务的运行状况如何。
如果服务出现故障,Consul将根据阈值要求有条件地从域名中删除相应的IP,并在管理界面上标记故障点。这样就很好地解决了故障节点影响业务流程的问题,极大地方便了运维人员的管理。
以perconaxtradb集群为例。JetLiclient安装在三个数据库节点上,用于建立服务注册和监控配置文件,如/etc/consumerd/pxc。JSON,一个节点的配置文件内容如下:
保存后,让Consul重新加载配置。
服务领事
然后查看mysql服务。内部域名消费者
挖mysql。服务领事
查看三个节点的IP地址是否已注册
mysql。服务领事192.168.0.7中的0
mysql。服务领事192.168.0.8中的0
mysql。服务领事192.168.0.9中的0
通过这种配置,所有数据库访问连接都使用mysql服务。域名消费者。它不仅起到读写负载平衡的作用,而且当节点出现故障时,Consul会自动删除其IP。各应用终端对数据库的访问保持畅通,运维人员只需关注维修服务即可。
应该注意的是,Consul的开源版本没有用户系统。因此,如果您想在生产中使用它,您需要保护它的访问,以防止恶意更改。
小结
这就是Consul的快速部署。在下一期中,我们将讨论如何快速构建Nomad基于Consul的自动部署平台。你可以继续关注我们的“心之云”公众号,关注下一个问题云计算专栏更新为。
同时,欢迎大家在下面留言,积极提问和讨论,共同学习进步。
最新评论