`
haoningabc
  • 浏览: 1478477 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

consul的基本使用

阅读更多
### 安装 
[centos7上consul的安装](http://www.cnblogs.com/wang2650/p/5473881.html)

wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip 
consul -v
json格式化
```shell
yum -y install epel-release 
yum install jq -y 

consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n1 -bind=192.168.139.194 -dc=dc1 
consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n2 -bind=192.168.139.218 -dc=dc1 
consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n2 -bind=192.168.139.193 -dc=dc1 
consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n2 -bind=192.168.139.161 -dc=dc1 
```
在第一个节点上

consul join 192.168.139.218


####################################### 
如果发现集群有问题,就 rm -rf /tmp/consul
mkdir /tmp/consul
#####################################
[consul入门](http://blog.csdn.net/viewcode/article/details/45915179)
[服务发现系统consul介绍](http://www.codeweblog.com/%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0%E7%B3%BB%E7%BB%9Fconsul%E4%BB%8B%E7%BB%8D/)
# 例子1
mkdir /etc/consul.d/
echo '{"service": {"name": "web", "tags": ["rails"], "port": 80}}'  >/etc/consul.d/web.json 
consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul  -bind=192.168.139.218 -config-dir /etc/consul.d 

dig @127.0.0.1 -p 8600 web.service.consul
dig @127.0.0.1 -p 8600 web.service.consul SRV
curl http://localhost:8500/v1/catalog/service/web  |jq

curl http://localhost:8500/v1/catalog/nodes |python -m json.tool
dig @127.0.0.1 -p 8600 mcompute616.node.consul

健康检查
echo '{"check": {"name": "ping", "script": "ping -c1 www.baidu.com >/dev/null", "interval": "30s"}}' >/etc/consul.d/ping.json 
echo '{"service": {"name": "web", "tags": ["rails"], "port": 80 ,"check": {"script": "curl localhost:80 >/dev/null 2>&1", "interval": "10s"}}}' >/etc/consul.d/web.json 
curl -s http://localhost:8500/v1/health/state/any | python -m json.tool 

查看所有
curl -v http://127.0.0.1:8500/v1/kv/?recurse | python -m json.tool

curl -X PUT -d 'test' http://127.0.0.1:8500/v1/kv/web/key1
curl -X PUT -d 'test' http://127.0.0.1:8500/v1/kv/web/key2?flags=42
curl -X PUT -d 'test' http://127.0.0.1:8500/v1/kv/web/web/sub/key3

查看一个
curl -s http://127.0.0.1:8500/v1/kv/web/key1|python -m json.tool
删除所有
curl -X DELETE http://127.0.0.1:8500/v1/kv/web/sub?recurse

修改(不好使呀)
curl -X PUT -d 'newval' http://127.0.0.1:8500/v1/kv/web/key1?cas=106
curl -X PUT -d 'newval' http://127.0.0.1:8500/v1/kv/web/key1?cas=106
curl -s http://127.0.0.1:8500/v1/kv/web/key1|python -m json.tool



### 例子2
consul agent -server -bootstrap-expect 1  -data-dir /tmp/consul -node=agent-one -bind=192.168.139.218
#consul agent -data-dir /tmp/consul -node=agent-one -bind=192.168.139.218
consul agent -server -data-dir /tmp/consul
consul agent -data-dir /tmp/consul -node=agent-two -bind=192.168.139.194
consul agent -data-dir /tmp/consul -node=agent-three -bind=192.168.139.193

第一个节点
consul join 192.168.139.194  192.168.139.193
consul members
consul info

### 例子3
consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul  -bind=192.168.139.218 -config-dir /etc/consul.d
consul agent -data-dir /tmp/consul -join=192.168.139.218 -bind=192.168.139.194


### 三台机器的测试
https://blog.coding.net/blog/intro-consul?type=hot
http://www.bubuko.com/infodetail-800623.html
consul agent -server -bootstrap -data-dir /tmp/consul -bind=192.168.139.218
consul agent -server -data-dir /tmp/consul -bind=192.168.139.194
consul agent -server -data-dir /tmp/consul -bind=192.168.139.193
第一个节点
consul join 192.168.139.194  192.168.139.193
ctl+c 断开第一个节点,之后
consul agent -server -data-dir /tmp/consul -bind=192.168.139.218
consul join 192.168.139.194  192.168.139.193

curl -X PUT -d '{"Datacenter": "dc1", "Node": "mysql-1", "Address": "mysql-1.node.consul","Service": {"Service": "mysql", "tags": ["master","v1"],  "Port": 3306}}' http://127.0.0.1:8500/v1/catalog/register
curl -X PUT -d '{"Datacenter": "dc1", "Node": "mysql-2", "Address": "mysql-2.node.consul","Service": {"Service": "mysql", "tags": ["slave","v1"], "Port": 3306}}' http://127.0.0.1:8500/v1/catalog/register

curl http://127.0.0.1:8500/v1/catalog/service/mysql
curl http://127.0.0.1:8500/v1/catalog/service/mysql|python -m json.tool
curl 127.0.0.1:8500/v1/catalog/nodes |python -m json.tool
dig @127.0.0.1 -p 8600 mysql.service.consul SRV

### 健康检查
kill掉一个节点,consul members处于fail状态
curl http://localhost:8500/v1/health/state/critical  

### K/V存储
curl -v http://localhost:8500/v1/kv/?recurse |python -m json.tool
curl -X PUT -d 'test' http://localhost:8500/v1/kv/mysql/key2?flags=43
curl -X DELETE http://localhost:8500/v1/kv/mysql/key2?recurse
curl -X PUT -d 'newval' http://localhost:8500/v1/kv/mysql/key1?flags=100

更新index:
curl "http://localhost:8500/v1/kv/mysql/key1?index=101&wait=5s"

################################## 

consul agent -atlas-join  -atlas=ATLAS_USERNAME/infrastructure -atlas-token="YOUR_ATLAS_TOKEN"

curl   https://mysql.service.consul/v1/kv/my-key

{"service": {"name" : "test","port" : 9999,"check":{ "tcp": "127.0.0.1:9999", "interval": "10s" }} }  

[consul-template入门篇](http://blog.csdn.net/daiyudong2020/article/details/53559008)

docker run -d --name=consul --net=host gliderlabs/consul-server -bootstrap -bind=192.168.0.149
docker run -d  --name=registrator     --net=host   --volume=/var/run/docker.sock:/tmp/docker.sock    gliderlabs/registrator:latest consulkv://localhost:8500/hello

consul-template -consul 127.0.0.1:8500 -template /root/nginx_web.ctmpl:/usr/local/nginx/conf/nginx.conf:"/usr/local/nginx/sbin/nginx -s reload"


curl -X PUT -d 'test' http://localhost:8500/v1/kv/hello/hehe?flags=43
curl -v http://localhost:8500/v1/kv/?recurse |python -m json.tool


### nginx的例子 ###
模板语言https://book-consul-guide.vnzmi.com/11_consul_template.html 

删除所有
curl -X DELETE http://127.0.0.1:8500/v1/kv/?recurse 
curl --request PUT --data "192.168.139.161" http://localhost:8500/v1/kv/myserver/mcontroller605 
curl --request PUT --data "192.168.139.193" http://localhost:8500/v1/kv/myserver/mcompute605 
curl -s http://localhost:8500/v1/kv/myserver?recurse | jq 

consul-template -consul-addr 127.0.0.1:8500 -template /root/nginx_web.ctmpl:/usr/local/nginx/conf/nginx.conf:"/usr/local/nginx/sbin/nginx -s reload" -once
consul-template -config ./tmpl.json -once 

nginx_web.ctmpl
```go
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include     mime.types;
    default_type  application/octet-stream;
    sendfile    on;
    keepalive_timeout  65;
    upstream app {
        {{range ls "myserver/" }}
        server {{.Value}} weight=5;{{end}}
    }
    server {
          listen       80;
          server_name  localhost;
          location / {
            proxy_pass http://app;
          }
    }
}
```
tmpl.json
```javascript
consul = "127.0.0.1:8500" 
template { 
source = "./nginx_web.ctmpl" 
destination = "/usr/local/nginx/conf/nginx.conf" 
command = "/usr/local/nginx/sbin/nginx -s reload" 
}
```
### consul-template 的helloword:
ls
config.ctmpl   tmpl.json

tmpl.json
```javascript
consul = "127.0.0.1:8500" 
template { 
source = "./config.ctmpl" 
destination = "./config.py" 
command = "python ./config.py" 
}
···
config.ctmpl
```python
#!/usr/bin/python 
#coding:utf-8 
 
#bottle 
iplist = [ {{range service "web"}} "{{.Address}}",{{end}} ] 
port = 8080 
 
for ip in iplist: 
    print ip
```
consul-template -config ./tmpl.json -once 
生成config.py
```shell
cat /etc/consul.d/web.json
{"service": {"name": "web", "tags": ["rails"], "port": 80 ,"check": {"script": "curl localhost:80", "interval": "10s"}}}

curl http://127.0.0.1:8500/v1/catalog/service/web|python -m json.tool
```

### kv的例子 ### 
https://python-consul.readthedocs.io/en/latest/#consul-status 

yum install python-virtualenv 
virtualenv mysite 
source mysite/bin/activate 
pip install python-consul 

a.py 
```python
import consul

c = consul.Consul()

# poll a key for updates
index = None
while True:
    index, data = c.kv.get('foo', index=index)
    print data['Value']

# in another process
c.kv.put('foo', 'bar')
```
### 基本使用 ### 
curl -v 是显示详细, -s是只显示结果
设置值
curl --request PUT --data "hello" http://localhost:8500/v1/kv/my-key
查所有值 
curl -v http://localhost:8500/v1/kv/?recurse |python -m json.tool 
查某个值
curl -v http://localhost:8500/v1/kv/my-key |python -m json.tool  
显示值的value
curl -s http://127.0.0.1:8500/v1/kv/my-key| jq -r .[0]'.Value'|base64 -d 
curl -s http://127.0.0.1:8500/v1/kv/foo| jq -r .[0]'.Value'|base64 -d 
删除所有
curl -X DELETE http://127.0.0.1:8500/v1/kv/?recurse


分享到:
评论

相关推荐

    Consul 入门教程

    本教程涵盖了 Consul 的安装、启动、管理服务等基本操作。Consul 提供了丰富的功能来支持分布式系统的运维管理。对于初学者来说,理解这些基础操作至关重要。此外,Consul 还具备更多的高级特性如多数据中心支持、...

    consul中文版帮助文档

    Consul是一款由HashiCorp公司开发的开源工具,主要用于实现分布式系统的服务发现、...通过阅读这份文档,用户不仅能学习到Consul的基本用法,还能了解到如何在实际项目中有效利用其特性来提升系统的稳定性和可扩展性。

    c#:Ocelot集成Consul初体验

    在使用Consul时,我们可以使用`DownstreamRouteFinderSettings`配置来告诉Ocelot使用Consul进行服务发现。例如: ```json "Routes": [ { "DownstreamPathTemplate": "/api/{一切}", "DownstreamScheme": "http"...

    Go-GOMicro搭建Consul服务发现集群实例

    本篇文章将详细讲解如何使用 Go Micro 搭建基于 Consul 的服务发现集群实例。 首先,我们需要了解 Go Micro 的基本概念。Go Micro 是一种设计模式,它提供了一种构建微服务的结构化方式,包括服务注册、服务发现、...

    consul_1.4.3_windows_amd64.zip

    以上就是关于 Consul 1.4.3 for Windows 的基本介绍和使用方法。在实际应用中,你可能还需要了解如何配置持久化存储、设置 ACL 规则、与其他 Consul 组件(如 Nomad、Vault 等)集成等更高级的话题。 Consul 是构建...

    Mac consul

    要在 Mac 上深入使用 Consul,你需要熟悉基本的命令行操作,理解服务网格概念,以及如何配置和管理 Consul 集群。同时,了解相关最佳实践和使用场景,如与 Docker、Kubernetes 等容器化技术的集成,将有助于提升你的...

    consul使用手册

    不同于翻译自官方文档 的Consul 简介和快速入门,官网的文档太难懂了。 这个是来源于http://www.liangxiansen.cn/2017/04/06/consul/的文章。 看完基本的操作就很容易上手了。

    consul-win64.rar

    在Windows环境下,启动Consul的基本命令如下: ```shell # 开发模式启动 consul agent -dev # 生产模式启动,需要指定配置文件 consul agent -server -bootstrap-expect 1 -data-dir ./data -ui ``` 这里,“-dev...

    GO Micro 搭建 Consul服务发现集群实例

    以上就是使用 `Go Micro` 和 `Consul` 构建服务发现集群的基本流程。在实际项目中,你可能需要考虑更复杂的网络环境,例如多数据中心的部署和高可用性。同时,`Go Micro` 提供了丰富的插件系统,可以根据需求扩展...

    consul_1.5.0_linux_amd64.zip

    Consul是一款由HashiCorp公司开发的开源工具,主要用于...通过这些基本操作,你可以开始在Ubuntu环境中探索和使用Consul的强大功能。无论是小型项目还是大型分布式系统,Consul都是一个值得信赖的服务发现和管理工具。

    consul_1.6.1_windows_amd64.zip

    安装和运行 Consul 1.6.1 on Windows 的基本步骤是解压压缩包,然后在命令行中执行 `consul.exe`,并根据需要指定参数,例如启动服务器模式 (`-server`) 或客户端模式 (`-client`),以及配置文件路径等。 总的来说...

    consul_1.5.2_windows_amd64.zip

    Consul 是一款由 HashiCorp 公司开发的开源工具,用于实现分布式系统的服务发现、配置管理和健康检查...在 Windows 平台上使用 64 位版本的 Consul,你需要确保你的系统满足其运行要求,并根据实际需求进行配置和部署。

    PyPI 官网下载 | python-consul-0.3.19.tar.gz

    4. **基本用法**:安装`python-consul`库可以通过`pip install python-consul`命令完成。然后在Python代码中导入并实例化客户端,例如`from consul import Consul; consul = Consul()`,之后可以调用相应方法与...

    consul的安装包文件

    Consul 是一款由 HashiCorp 公司开发的开源工具,用于实现分布式系统的服务发现、配置和服务网格功能。它提供了一套完整的解决方案...在使用过程中,用户应充分了解 Consul 的基本概念和操作方式,以便充分发挥其潜力。

    windows系统运行 consul(替换批处理里面的-bind参数为自己的ip然后运行批处理)

    Consul支持基本硬件资源方面的检查,如:CPU、内存、硬盘等 5.Key/Value存储 Consul支持Key/Value存储功能,可以将Consul作为配置中心使用,可以将一些公共配置信息配置到Consul,然后通过Consul提供的 HTTP API来...

    spring boot整合consul、fegin、HystrixCommand

    通过以上步骤,我们已经构建了一个基本的微服务架构,服务之间通过Feign进行透明化的调用,同时,HystrixCommand提供的熔断机制保障了系统的稳定性。这种架构可以很好地适应云环境,提高系统的可用性和容错性。 在...

    springboot与consul整合案例

    以上就是 Spring Boot 2.2.4.RELEASE 和 Spring Cloud Hoxton.SR1 版本整合 Consul 的基本步骤和关键知识点。实际开发中,可能还需要根据具体需求进行更复杂的配置和定制。通过这个整合案例,你可以轻松地构建一个...

    consul-guide

    ### Consul的基本概念 Consul是由多个组件构成的复杂系统,但其核心功能可以归纳为服务发现和键值存储。服务发现允许服务消费者(客户端)通过Consul发现服务提供者的位置,而键值存储则为应用程序提供了一种可扩展...

    .NET Core 3.0之创建基于Consul的Configuration扩展组件

    为了更好的理解和使用基于Consul的Configuration扩展组件,开发者需要熟悉Consul的基本使用方法,例如如何安装、启动Consul服务,并创建相应的key/value键值对。在Consul的UI界面中,可以设置commonservice和...

    consul.zip

    Consul 是一款由 HashiCorp 公司开发...对于初学者,理解 Consul 的基本概念和工作原理,以及如何在项目中集成和使用它,都是非常重要的。希望这个压缩包能成为你探索 Consul 的良好起点,助你在微服务领域更上一层楼。

Global site tag (gtag.js) - Google Analytics