zoukankan      html  css  js  c++  java
  • Consul安装集群搭建

    1 consul的安装和配置

    1.1 consul agent 命令介绍

    下载consul_1.0.0_linux_amd64.zip解压,里面只有一个consul可执行文件,其中,consul最常用到的命令是agent

    输入consul agent -h 可以查看帮助。其中常见的参数解释如下:

     -advertise:通知展现地址用来改变我们给集群中的其他节点展现的地址,一般情况下-bind地址就是展现地址  

     -bootstrap:用来控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader。  

     -bootstrap-expect:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap公用  

     -bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0  

     -client:consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1 

     -config-file:明确的指定要加载哪个配置文件  

     -config-dir:配置文件目录,里面所有以.json结尾的文件都会被加载  

     -data-dir:提供一个目录用来存放agent的状态,所有的agent允许都需要该目录,该目录必须是稳定的,系统重启后都继续存在  

     -dc:该标记控制agent允许的datacenter的名称,默认是dc1  

     -encrypt:指定secret key,使consul在通讯时进行加密,key可以通过consul keygen生成,同一个集群中的节点必须使用相同的key  

     -join:加入一个已经启动的agent的ip地址,可以多次指定多个agent的地址。如果consul不能加入任何指定的地址中,则agent会启动失败,默认agent启动时不会加入任何节点。  

     -retry-join:和join类似,但是允许你在第一次失败后进行尝试。  

     -retry-interval:两次join之间的时间间隔,默认是30s  

     -retry-max:尝试重复join的次数,默认是0,也就是无限次尝试  

     -log-level:consul agent启动后显示的日志信息级别。默认是info,可选:trace、debug、info、warn、err。  

     -node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名  

     -protocol:consul使用的协议版本  

     -rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。  

     -server:定义agent运行在server模式,每个集群至少有一个server,建议每个集群的server不要超过5个 

     -syslog:开启系统日志功能,只在linux/osx上生效  

     -ui-dir: 提供存放web ui资源的路径,该目录必须是可读的  

     -pid-file: 提供一个路径来存放pid文件,可以使用该文件进行SIGINT/SIGHUP(关闭/更新) agent  

    要想利用consul提供的服务实现服务的注册与发现,我们需要建立consul cluster。

    在consul方案中,每个提供服务的节点上都要部署和运行consul的agent,所有运行consul agent节点的集合构成consul cluster。

    consul agent有两种运行模式:server和client。这里的server和client只是consul集群层面的区分,与搭建在cluster之上的应用服务无关。

    以server模式运行的consul agent节点用于维护consul集群的状态,官方建议每个consul cluster至少有3个或以上的运行在server mode的agent,client节点不限。

    1.2 consul_1.0.0_linux_amd64安装

    我们这里以安装三个节点为例,环境配置如下:

    172.16.0.27 以server模式运行

    172.16.0.26,192.168.1.72以client模式运行

    1.2.1 配置consul

    (三个节点依次按照下面的步骤配置consul)

    将下载好的安装包上传到linux上,存放在/home/user/tools/cluster目录。

    1) 把下载的consul_1.0.0_linux_amd64.zip文件解压

    unzip -o -d ./ consul_1.0.0_linux_amd64.zip #解压到当前路径

    2) 并把解压后的consul拷贝到/opt/consul目录,然后把/opt/consul目录加入到环境变量。(如果不是root用户,执行下面命名之前需要加上sudo)。

    mkdir /opt/consul

    cp consul /opt/consul

    vim /etc/profile  

    加入:export PATH=/opt/consul:$PATH

        source /etc/profile

    1.2.2 运行

    1:在172.16.0.27节点上面进行

    cd /opt/consul

    mkdir data

    consul agent -server -bootstrap -bind=0.0.0.0 -client=172.16.0.27 -data-dir=data -ui -node=172.16.0.27

    consul agent -server -bootstrap-expect 1 -data-dir data   -config-dir /etc/consul.d

    这样,就启动了一个server节点 

    2:在172.16.0.26节点上面进行

    cd /opt/consul

    sudo  mkdir data

    sudo consul agent -bind=0.0.0.0 -client=172.16.0.26 -data-dir=data -node=172.16.0.26 -join=172.16.0.27 -ui

    如果linux系统的防火墙没关,可能会报下面的错,需要将server跟client的防火墙都关闭:

    centos7系统:

    #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

    firewall-cmd --state

    使用如下命令关闭firewall:

    systemctl stop firewalld.service #停止firewall

    systemctl disable firewalld.service #禁止firewall开机启动

    3:在另一个linux服务节点上面进行

    1.2.3 验证

    全部节点启动完之后

    访问http://172.16.0.27:8500/  即可查看consul集群的管理页面

    在任意节点执行consul members 即可查看集群节点信息。

    这里在172.16.0.27节点执行

    consul members -http-addr=”http://172.16.0.27:8500

    或者

    consul members -http-addr=172.16.0.27:8500 

    也可用:

    curl localhost:8500/v1/catalog/nodes

    等同于浏览器访问http://172.16.0.27:8500/v1/catalog/nodes

    1.2.4 关闭节点

    1、consul leave -http-addr=172.16.0.26:8500

    2、停止agent服务,在第一个终端中,你可以使用ctrl-c来优雅的停止agent,如果你停止的是client,当你优雅的离开后,consul会通知集群中的其他成员你这个节点以及处于left状态。如果你是强制killed掉agent,集群中的其他成员会认为你是failed了。当成员leaves后,该成员的services和checks会从catalog被移除,当成员fails后,该成员的健康状态会被简单的标记为critical,但是不会从catalog删除。consul会自动的尝试链接failed的节点,这样允许节点在某些网络状况中恢复,如果节点是left状态,则不会再联系该节点。

    之前版本中默认server的http端口是8400,次consul1.0的http是8500

    http://172.16.0.26:8500/v1/agent/service/consul-provider-client1/

    http://172.16.0.27:8500/ui/consul-provider-client2

    1.3使用命令注册服务

    1. 创建文件夹/etc/consul.d

    .d代表有许多配置文件在里面

    2. 将服务配置文件写入文件夹内

    如 $ echo '{"service": {"name": "web", "tags": ["rails"], "port": 80}}'  >/etc/consul.d/web.json

    3. 重启consul,并将配置文件的路径给consul

    $ consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul   -config-dir /etc/consul.d

    4. 查询ip和端口

    DNS方式:dig @127.0.0.1 -p 8600 web.service.consul SRV

    Http方式:curl http://localhost:8500/v1/catalog/service/web

    5. 更新

    通过http api能对service配置文件增删改查,如果更新完成后,可以通过signup命令来生效

    consul agent -server -bootstrap -bind=0.0.0.0 -client=172.16.0.27 -data-dir=data -ui -node=172.16.0.27 -config-dir /etc/consul.d

    consul agent -server -bootstrap -bind=0.0.0.0 -client=172.16.0.27 -data-dir=data -ui -node=172.16.0.27 -config-dir /etc/consul.d

    Issue:

    如果在配置 Consul的时候,出现了下面错误:

    ==> Error decoding '/etc/consul.d/hwapp_web.json': invalid character 'ï' lookingfor beginning of value

    错误的原因是文件编码问题,需要将 Encoding修改为ANSI编码(可以用 TXT修改)。

    使用curl操作 K/V

    consul还提供了键/值存储的功能。

    如 查询 所有K/V

    curl -v http://localhost:8500/v1/kv/?recurse

    保存键为web/key2, flags 为42, 值为true的记录。

    curl -X PUT -d 'test' http://localhost:8500/v1/kv/web/key2?flags=42

    true 

    删除记录:

    curl -X DELETE http://localhost:8500/v1/kv/web/sub?recurse

    更新值:

    curl -X PUT -d 'newval' http://localhost:8500/v1/kv/web/key1?cas=97

    true

    更新index:

    curl "http://localhost:8500/v1/kv/web/key2?index=101&wait=5s"

    结果:[{"CreateIndex":98,"ModifyIndex":101,"Key":"web/key2","Flags":42,"Value":"dGVzdA=="}]

    转载:https://blog.csdn.net/u013719805/article/details/78843614

  • 相关阅读:
    最长上升子序列(实验回顾)
    数据库应用开发一、vs
    全文检索
    mangtomant 增删改查
    django
    SQLAlchemy 增删改查 一对多 多对多
    Flask-Sqlalchemy—常用字段类型说明
    flask
    文件下载
    python连接mongodb
  • 原文地址:https://www.cnblogs.com/IT-LearnHall/p/9426322.html
Copyright © 2011-2022 走看看