安裝 curl
sudo apt install curl
安裝 consul
- 官網(wǎng)下載安裝包https://www.consul.io/downloads.html
- 安裝
#解壓
unzip consul**.zip
#得到一個(gè)文件consul。
cp consul /usr/local/bin/
#驗(yàn)證
consul
- 啟動(dòng)服務(wù)http://localhost:8500/ui/
consul agent -dev -client=0.0.0.0
# -client // 對(duì)外提供服務(wù)改成0.0.0.0
服務(wù)注冊(cè)(dns)
- 先退出consul服務(wù)
- 定義服務(wù)
#創(chuàng)建配置文件夾
mkdir /etc/consul.d
#定義服務(wù)
sudo echo '{"service": {"name": "web", "tags": ["rails"], "port": 80}}' | sudo tee /etc/consul.d/web.json
#重啟consul服務(wù),指定config-dir
consul agent -dev -ui -config-dir /etc/consul.d
- 驗(yàn)證http://localhost:8500/ui/
服務(wù)注冊(cè)(http api)
- 安裝依賴
npm init -y
npm install --save-dev request koa koa-router
- index.js
const request = require('request');
const { networkInterfaces } = require('os');
const getIPAdress = () => {
let interfaces = networkInterfaces();
for (let devName in interfaces) {
let iface = interfaces[devName];
for (let i = 0; i < iface.length; i++) {
let alias = iface[i];
if (
alias.family === "IPv4" &&
alias.address !== "127.0.0.1" &&
!alias.internal
) {
return alias.address;
}
}
}
};
const IP = getIPAdress();
let options = {
url: `http://127.0.0.1:8500/v1/agent/service/register`,
headers: {
"content-type": "application/json"
},
body: JSON.stringify({
ID: 'cuic' + "_" + new Date().getTime(),
Name: 'cuic',
Address: IP,
Port: 3000,
Tags: ["activity", "nodejs"],
Check: {
HTTP: `http://${IP}:3000/healthCheck`,
Interval: "10s"
}
})
};
request.put(options, (error, response, body) => {
if (error) {
console.log("reg sendRequest error: ", error);
return;
}
});
- service.js
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();
router.get('/healthCheck', (ctx, next) => {
ctx.response.status = 200;
});
app.use(router.routes());
app.listen(3000);
console.log(`listen port : 3000`);
- 運(yùn)行命令
node index.js
node service.js
安裝 consul-template
- 官網(wǎng)下載安裝包https://releases.hashicorp.com/consul-template/0.19.5/
- 安裝
#解壓
unzip consul**.zip
#得到一個(gè)文件consul-template。
cp consul-template /usr/local/bin/
tpl文件
find_address.tpl
{{ key "/hashicorp/street_address" }}
編譯(-once代表只編譯一次)
consul-template -template "find_address.tpl:hashicorp_address.txt" -once
修改命令
consul kv put hashicorp/street_address "101 2nd St"
consul-template配置nginx.config
consul-template -consul-addr 127.0.0.1:8500 -template "./tmpltest.ctmpl:./result"