./etcdctl ls / --recursivenode
/name
/name1
/name1/wyc
/name1/wu
/name1/chao
/name1/chao/age
--------
./etcdctl -o extended get /name1/wycweb
Key: /name1/wyc
Created-Index: 8
Modified-Index: 8
TTL: 0
Index: 9json
./etcdctl watch /name1/wycbootstrap
當修改這個鍵的時候,watch就會輸出最新的值並退出
--forever 一直監測直到用戶按CTRL+C退出後端
curl -L http://localhost:2379/v2/keys/nameapi
=========服務器
1.基於dns的負載均衡,後端服務的註冊在kong以外完成,kong只接收來自dns服務器的更新。dns的ttl(time to live)決定了信息被刷新的頻率,負載均衡
kong with consul:curl
use consul as a dns server, then you'll have to live with TTL expiry times. Alternatively run a script on changes (services added/removed) to add a target entity through the Kong management api。ui
consul角色
1.agent是在consul集羣中每一個機器成員中運行的一個常駐進程。能夠當作server或者server的身份運行。全部agent均可以運行dns或者http接口,而且執行健康檢查和保持服務信息的同步。
2.client是一個agent,將rpc調用轉向對應的服務。client是無狀態的。惟一的在後臺執行的邏輯就是加入Gossip同步池。
3.server一樣是一個agent,職責包括實現集羣的一致性,維護集羣狀態,響應rpc請求,與其餘數據中心交換數據。
consul發現服務
consul提供了dns和http兩種查詢服務的方式。DNS 服務的默認端口設置爲8600。Consul 服務被放置在 .consul 的命名空間下,DNS 查詢的基礎規則爲 SERVICENAME.service.consul。其中 service 子域表示查詢服務,SERVICENAME正是查詢服務的名稱。除了經過 DNS API,HTTP 服務也可用於服務查詢。
consul使用
{
"service": {
"name": "my-svc",
"tags": [
"microservice"
],
"port": 8045,
"check": {
"script": "curl localhost:8045/status | grep OK || exit 2",
"interval": "5s"
}
}
}
-------
{
"service": {
"name": "web3",
"tags": ["master"],
"address": "127.0.0.1",
"port": 10000,
"checks": [
{
"http": "http://localhost:10000/health",
"interval": "10s"
}
]
}
}
4.機器節點,用於查看集羣狀態 consul agent -client=172.0.0.12 -ui-dir /vagrant/web/ -data-dir /tmp/consul -node=status -bind 172.0.0.12 -join 172.0.0.10