使用systemd部署r-nacos的操作方法
1、 前言
r-nacos是一個用rust實現(xiàn)的nacos服務(wù)。相較于java nacos來說,是一個提供相同功能,啟動更快、占用系統(tǒng)資源更小(初始內(nèi)存小于10M)、性能更高、運(yùn)行更穩(wěn)定的服務(wù)。
r-nacos設(shè)計上完全兼容最新版本nacos面向client sdk 的協(xié)議(包含1.x的http OpenApi,和2.x的grpc協(xié)議), 支持使用nacos服務(wù)的應(yīng)用平遷到 r-nacos。
r-nacos在本地測試使用很簡單,通過./rnacos
直接啟動應(yīng)用即可。
但是生產(chǎn)環(huán)境中還是需要更規(guī)范的方式部署運(yùn)行。
目前的linux服務(wù)基本默認(rèn)支持systemd統(tǒng)一管理服務(wù)。
本文主要記錄使用systemd部分r-nacos的過程說明。
2、規(guī)劃r-nacos運(yùn)行位置
- 服務(wù)應(yīng)用放到
/opt/rnacos/
中 - r-nacos配置使用
/etc/rnacos/env.conf
- 數(shù)據(jù)放到
/var/rnacos/io/
中 - systemd 服務(wù)配置放到
/lib/systemd/system/rnacos.service
3、部署
- 下載服務(wù)應(yīng)用
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服務(wù)配置
mkdir -p /etc/rnacos/ cat >/etc/rnacos/env.conf <<EOF # rnacos 指定配置文件有兩種方式: # 1. 默認(rèn)文件(放置于運(yùn)行目錄下,文件名為“.env”,自動讀?。? # 2. 指定文件(放置于任意目錄下, 通過 命令行參數(shù)“-e 文件路徑”形式指定, 如“./rnacos -e /etc/rnacos/conf/default.cnf”) # 更多說明請參照 https://r-nacos.github.io/r-nacos/deplay_env.html # r-nacos監(jiān)聽http端口,默認(rèn)值:8848 RNACOS_HTTP_PORT=8848 #r-nacos監(jiān)聽grpc端口,默認(rèn)值:HTTP端口+1000(即9848) #RNACOS_GRPC_PORT=9848 #r-nacos獨(dú)立控制臺端口,默認(rèn)值:HTTP端口+2000(即10848);設(shè)置為0可不開啟獨(dú)立控制臺 #RNACOS_HTTP_CONSOLE_PORT=10848 #r-nacos控制臺登錄1小時失敗次數(shù)限制默認(rèn)是5,一個用戶連續(xù)登陸失敗5次,會被鎖定1個小時 ,默認(rèn)值:1 RNACOS_CONSOLE_LOGIN_ONE_HOUR_LIMIT=5 #http工作線程數(shù),默認(rèn)值:cpu核數(shù) #RNACOS_HTTP_WORKERS=8 #配置中心的本地數(shù)據(jù)庫sled文件夾, 會在系統(tǒng)運(yùn)行時自動創(chuàng)建 ,默認(rèn)值:nacos_db RNACOS_CONFIG_DB_DIR=nacos_db #節(jié)點id,默認(rèn)值:1 RNACOS_RAFT_NODE_ID=1 #節(jié)點地址Ip:GrpcPort,單節(jié)點運(yùn)行時每次啟動都會生效;多節(jié)點集群部署時,只取加入集群時配置的值,默認(rèn)值:127.0.0.1:GrpcPort RNACOS_RAFT_NODE_ADDR=127.0.0.1:9848 #是否當(dāng)做主節(jié)點初始化,(只在每一次啟動時生效)節(jié)點1時默認(rèn)為true,節(jié)點非1時為false #RNACOS_RAFT_AUTO_INIT=true #是否當(dāng)做節(jié)點加入對應(yīng)的主節(jié)點,LeaderIp:GrpcPort;只在第一次啟動時生效;默認(rèn)值:空 #RNACOS_RAFT_JOIN_ADDR=127.0.0.1:9848 #日志等級:debug,info,warn,error;所有http,grpc請求都會打info日志,如果不關(guān)注,可以設(shè)置為error 減少日志量,默認(rèn)值:info RUST_LOG=info EOF
- 初始化r-nacos數(shù)據(jù)目錄
mkdir -p /var/rnacos/io/ # 如果使用rnacos用戶運(yùn)行,則要開放目錄寫權(quán)限給用戶 # adduser rnacos # chown -R rnacos:rnacos /var/rnacos
- 初始化r-nacos 服務(wù)配置
cat >/lib/systemd/system/rnacos.service <<EOF [Unit] Description=r-nacos server After=network.target [Service] #使用指定用戶運(yùn)行 #User=rnacos #Group=rnacos ExecStart=/opt/rnacos/rnacos -e /etc/rnacos/env.conf # 進(jìn)程異常關(guān)閉時會自動重啟 Restart=always WorkingDirectory=/var/rnacos/io [Install] WantedBy=multi-user.target EOF
- 重新加載并啟動服務(wù)
# 重新加載配置 systemctl daemon-reload # 啟用服務(wù)并馬上啟動 systemctl enable --now rnacos # 查看服務(wù)狀態(tài) systemctl status rnacos
把上以的腳本連起來執(zhí)行,r-nacos服務(wù)即可部署完成。
4、管理服務(wù)
- 使用
systemctl
管理服務(wù)
常用的命令
# 查看服務(wù)狀態(tài) systemctl status rnacos # 啟動服務(wù) systemctl start rnacos # 關(guān)閉服務(wù) systemctl stop rnacos # 啟動服務(wù),開機(jī)自動啟動 systemctl enable rnacos # 禁用服務(wù),開機(jī)不啟動 systemctl disable rnacos
- 同時可以結(jié)合使用
journalctl
管理查看服務(wù)日志
# 查看日志 journalctl -u rnacos # 查看最新日志 journalctl -u rnacos -f
其它journalctl日志管理方式,可以單獨(dú)支了解,這里不展開。
5、驗證服務(wù)
5.1 shell 本地 http驗證
- 配置中心http api例子
# 設(shè)置配置 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例子
# 注冊服務(wù)實例 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"}' # 查詢服務(wù)實例 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客戶端應(yīng)用驗證
如果客戶端應(yīng)用與nacos服務(wù)不在同一臺機(jī)器,需要開放8848
,9848
端口給內(nèi)網(wǎng)應(yīng)用使用。(注意8848
,9848
端口不能暴露到外網(wǎng)上)
在客戶端應(yīng)用中配置好nacos服務(wù)后,即可運(yùn)行驗證。
5.3 使用r-nacos控制臺
開放10848
端口后,可以通過對應(yīng)ip+端口在瀏覽器訪問控制臺。
新控制臺有完備的用戶管理、登陸校驗、權(quán)限控制,支持對外網(wǎng)暴露。
系統(tǒng)會默認(rèn)創(chuàng)建一個名為admin的用戶,密碼為admin。
6、總結(jié)
r-nacos是一個用rust實現(xiàn)的nacos服務(wù),我們用它平替java nacos以降低服務(wù)占用內(nèi)存,提升服務(wù)的穩(wěn)定性。
systemd提供便捷的服務(wù)托管功能,可以方便的將一個命令運(yùn)行的應(yīng)用,轉(zhuǎn)化成一個可方便控制的后臺服務(wù)。
使用systemd部署r-nacos,是一個比較和合適的、可用于生產(chǎn)環(huán)境的部署方案。
到此這篇關(guān)于使用systemd部署r-nacos的文章就介紹到這了,更多相關(guān)systemd部署r-nacos內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在win10上使用mingw64編譯器配置Rust開發(fā)環(huán)境和idea 配置Rust 插件
在win10上配置 Rust 開發(fā)環(huán)境(使用 mingw64編譯器)和 idea 配置 Rust 插件的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-03-03Rust?實現(xiàn)?async/await的詳細(xì)代碼
異步編程在 Rust 中的地位非常高,很多 crate 尤其是多IO操作的都使用了 async/await,這篇文章主要介紹了Rust?如何實現(xiàn)?async/await,需要的朋友可以參考下2022-09-09rust多個mod文件引用和文件夾mod使用注意事項小結(jié)
在 Rust 項目中,可以使用 mod 關(guān)鍵字將一個文件夾或一個 rs 文件作為一個模塊引入到當(dāng)前文件中,本文給大家介紹rust多個mod文件引用和文件夾mod使用注意事項小結(jié),感興趣的朋友跟隨小編一起看看吧2024-03-03Rust 中的 Packages 與 Crates模塊化構(gòu)建的基礎(chǔ)及開發(fā)流程
Rust中的Crate是編譯器處理的最小代碼單元,可以是二進(jìn)制或庫,每個Crate由一個CrateRoot文件(通常是src/main.rs或src/lib.rs)定義,本文給大家介紹Rust 中的 Packages 與 Crates模塊化構(gòu)建的基礎(chǔ)及開發(fā)流程,感興趣的朋友一起看看吧2025-02-02