1、 前言
r-nacos是一个用rust实现的nacos服务。相较于java nacos来说,是一个提供相同功能,启动更快、占用系统资源更小(初始内存小于10M)、性能更高、运行更稳定的服务。
r-nacos设计上完全兼容最新版本nacos面向client sdk 的协议(包含1.x的http OpenApi,和2.x的grpc协议), 支持使用nacos服务的应用平迁到 r-nacos。
r-nacos在本地测试使用很简单,通过./rnacos
直接启动应用即可。
但是生产环境中还是需要更规范的方式部署运行。
目前的linux服务基本默认支持systemd统一管理服务。
本文主要记录使用systemd部分r-nacos的过程说明。
2、规划r-nacos运行位置
- 服服务器托管网务应用放到
/opt/rnacos/
中 - r-nacos配置使用
/etc/rnacos/env.conf
- 数据放到
/var/rnacos/io/
中 - systemd 服务配置放到
/lib/systemd/system/rnacos.service
3、部署
- 下载服务应用
mkdir -p /opt/rnacos/
cd /opt/rnacos/
#download from github
curl -LO https://github.com/r-nacos/r-nacos/releases/download/v0.5.0/rnacos-x86_64-unknown-linux-musl.tar.gz
#download from gitee
#curl -LO https://gitee.com/hqp/rnacos/releases/download/v0.5.0/rnacos-x86_64-unknown-linux-musl.tar.gz
tar -xvf rnacos-x86_64-unknown-linux-musl.tar.gz
- 增加r-nacos服务配置
mkdir -p /etc/rnacos/
cat >/etc/rnacos/env.conf
- 初始化r-nacos数据目录
mkdir -p /var/rnacos/io/
# 如果使用rnacos用户运行,则要开放目录写权限给用户
# adduser rnacos
# chown -R rnacos:rnacos /var/rnacos
- 初始化r-nacos 服务配置
cat >/lib/systemd/system/rnacos.service
- 重新加载并启动服务
# 重新加载配置
systemctl daemon-reload
# 启用服务并马上启动
systemctl enable --now rnacos
# 查看服务状态
systemctl status rnacos
把上以的脚本连起来执行,r-nacos服务即可部署完成。
4、管理服务器托管网服务
- 使用
systemctl
管理服务
常用的命令
# 查看服务状态
systemctl status rnacos
# 启动服务
systemctl start rnacos
# 关闭服务
systemctl stop rnacos
# 启动服务,开机自动启动
systemctl enable rnacos
# 禁用服务,开机不启动
systemctl disable rnacos
- 同时可以结合使用
journalctl
管理查看服务日志
# 查看日志
journalctl -u rnacos
# 查看最新日志
journalctl -u rnacos -f
其它journalctl日志管理方式,可以单独支了解,这里不展开。
5、验证服务
5.1 shell 本地 http验证
- 配置中心http api例子
# 设置配置
curl -X POST 'http://127.0.0.1:8848/nacos/v1/cs/configs' -d 'dataId=t001&group=foo&content=contentTest'
# 查询
curl 'http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=t001&group=foo'
- 注册中心http api例子
# 注册服务实例
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance' -d 'port=8000&healthy=true&ip=192.168.1.11&weight=1.0&serviceName=nacos.test.001&groupName=foo&metadata={"app":"foo","id":"001"}'
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance' -d 'port=8000&healthy=true&ip=192.168.1.12&weight=1.0&serviceName=nacos.test.001&groupName=foo&metadata={"app":"foo","id":"002"}'
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance' -d 'port=8000&healthy=true&ip=192.168.1.13&weight=1.0&serviceName=nacos.test.001&groupName=foo&metadata={"app":"foo","id":"003"}'
# 查询服务实例
curl "http://127.0.0.1:8848/nacos/v1/ns/instance/list?&namespaceId=public&serviceName=foo%40%40nacos.test.001&groupName=foo&clusters=&healthyOnly=true"
5.2 nacos客户端应用验证
如果客户端应用与nacos服务不在同一台机器,需要开放8848
,9848
端口给内网应用使用。(注意8848
,9848
端口不能暴露到外网上)
在客户端应用中配置好nacos服务后,即可运行验证。
5.3 使用r-nacos控制台
开放10848
端口后,可以通过对应ip+端口在浏览器访问控制台。
新控制台有完备的用户管理、登陆校验、权限控制,支持对外网暴露。
系统会默认创建一个名为admin的用户,密码为admin。
6、总结
r-nacos是一个用rust实现的nacos服务,我们用它平替java nacos以降低服务占用内存,提升服务的稳定性。
systemd提供便捷的服务托管功能,可以方便的将一个命令运行的应用,转化成一个可方便控制的后台服务。
使用systemd部署r-nacos,是一个比较和合适的、可用于生产环境的部署方案。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
一、背景 1.1前言 相信大家在工作中多多少少都离不开定时任务吧,每个公司对定时任务的具体实现都不同。在一些体量小的公司或者一些个人独立项目,服务可能还是单体的,并且在服务器上只有一台实例部署,大多数会采用spring原生注解@Scheduled配合 @Ena…