边缘云NTP和DNS服务¶
我最初部署 私有云架构 时为整个私有网络部署了两个重要的基础服务:
这两个关键服务也是同时提供给 边缘云计算架构 共用的。
随着 私有云计算构建 和 边缘云计算构建 拆分(部署到隔离的两个网络), 边缘云计算架构 缺乏 DNS服务 和 ntp服务 支持,会产生异常。所以,独立在 alpine linux 环境下重新部署:
在集群中部署 ntp服务 和 DNS服务 是非常不起眼但是又非常重要的步骤:
Raspberry Pi 这样低成本SBC系统没有RTC时钟,每次系统重启如果没有 Alpine Linux运行chrony(NTP服务) 提供时钟矫正将无法正常运行( Alpine Linux在树莓派启动”clock skew”报错 )
集群( Distributed System Atlas )业务跨节点调度和通讯强依赖每个节点时钟一致,任何时钟扭曲都会造成应用异常甚至崩溃
etcd - 分布式kv存储 等服务使用域名解析来完成节点互相访问,所以在 边缘云计算架构 如果不提供 Alpine Linux运行dnsmasq DNS解析,则
etcd
甚至找不到peer节点导致无法启动(例如我在配置中采用了主机名而不是直接的IP)
部署NTP服务: chrony ntp服务¶
使用 Alpine Linux包管理apk 安装
chrony
(也可能在 树莓派环境安装Alpine Linux到USB磁盘启动 已经安装过)选择一台服务器,例如
x-k3s-m-1
作为服务器,配置/etc/chrony/chrony.conf
:
# chrony server config
pool pool.ntp.org iburst
initstepslew 10 pool.ntp.org
allow 192.168.7.0/24
driftfile /var/lib/chrony/chrony.drift
rtcsync
cmdport 0
重启
x-k3s-m-1
上chronyd
服务,则该NTP服务器会和internet上时钟服务器进行时钟同步,并为局域网内部服务器提供NTP服务:
sudo service chronyd restart
除了
x-k3s-m-1
外,其他 边缘云计算架构 主机都是NTP客户端,则都以x-k3s-m-1
为NTP服务器,配置/etc/chrony/chrony.conf
如下:
# chrony client config
pool 192.168.7.11 iburst
initstepslew 10 192.168.7.11
driftfile /var/lib/chrony/chrony.drift
rtcsync
cmdport 0
同样NTP客户端也需要重启chronyd来以
x-k3s-m-1
为基准矫正时间:
sudo service chronyd restart
完成上述部署之后,请仔细核对所有节点,确保时钟一致。则我们就可以开始下一步部署
部署DNS服务: DNS服务¶
边缘云计算架构 作为边缘云,要求系统精简轻量级,所以部署DNS服务也是选择轻量级的 DNSmasq
apk update
apk upgrade
apk add dnsmasq
参考 部署DNSmasq 配置
/etc/dnsmasq.conf
:
# 本地默认域名
local=/edge.huatai.me/
# 转发上游域名解析服务器,请求DNS解析
server=8.8.8.8
# 监听DNS请求的网卡接口
listen-address=192.168.6.200,127.0.0.1
# 扩展主机域名,也就是请求 zcloud 默认扩展成 zcloud.edge.huatai.me
expand-hosts
# 服务器提供解析的域名
domain=edge.huatai.me
# DNS解析缓存
cache-size=1000
启动dnsmasq并且将dnsmasq服务配置成启动时启动:
sudo service dnsmasq start
sudo rc-update add dnsmasq
完成上述部署后,在所有节点都通过 host
命令接茬DNS解析,确保能够解析集群中所有服务器的IP地址。