consul使用(一)

使用两台阿里云服务器尝试搭建consul集群(主机间内网互通,端口开放),这里集群都是server模式:

1.安装

wget https://releases.hashicorp.com/consul/1.7.2/consul_1.7.2_linux_amd64.zip
##上面压缩包解压后是一个consul可执行文件
unzip -d /usr/local/bin consul_1.7.2_linux_amd64.zip
## 配置环境变量
vim /etc/profile  //加入 export PATH=conusl的安装文件夹:$PATH
## 环境变量生效
source /etc/profile
##查看安装是否成功
consul

提示如下:

Available commands are:
    agent          Runs a Consul agent
    configtest     Validate config file
    event          Fire a new event
    exec           Executes a command on Consul nodes
    force-leave    Forces a member of the cluster to enter the "left" state
    info           Provides debugging information for operators
    join           Tell Consul agent to join cluster
    keygen         Generates a new encryption key
    keyring        Manages gossip layer encryption keys
    leave          Gracefully leaves the Consul cluster and shuts down
    lock           Execute a command holding a lock
    maint          Controls node or service maintenance mode
    members        Lists the members of a Consul cluster
    monitor        Stream logs from a Consul agent
    reload         Triggers the agent to reload configuration files
    rtt            Estimates network round trip time between nodes
    version        Prints the Consul version
    watch          Watch for changes in Consul

其中consul agent 是启动一个agent的命令

2.启动

2.1命令参数介绍

2.1.1启动模式、配置相关
  • -server:定义agent运行在server模式,每个集群至少有一个server,建议每个集群的server不要超过5个
  • -bootstrap:用来控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader
  • -bootstrap-expect:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap同时使用
  • -non-voting-server:本server节点不参与leader与投票选举
  • -dc:该标记控制agent允许的datacenter的名称,默认是dc1
  • -node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名
  • -disable-host-node-id:禁用主机信息生成确定的node-id,为true会随机生成,保存在数据文件夹
  • -encrypt:指定secret key,使consul在通讯时进行加密,key可以通过consul keygen生成,同一个集群中的节点必须使用相同的key
  • -ui:开启自带的ui web-server,可以通过HTTP API端口外部访问
  • -config-file:配置文件(.json)地址的配置文件地址
  • -config-dir:配置文件目录,里面所有以.json或.hcl结尾的文件都会被加载
  • -config-format:作为json和hcl配置文件格式的扩展
  • -data-dir:提供一个目录用来存放agent的状态,所有的agent允许都需要该目录,该目录必须是稳定的,系统重启后都继续存在
  • -pid-file:提供一个路径来存放pid文件,可以使用该文件进行SIGINT/SIGHUP(关闭/更新)agent
2.1.2 IP相关
  • -bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0
  • -client:consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1,需要外部访问指定0.0.0.0
  • -join:加入一个已经启动的agent的ip地址,可以多次指定多个agent的地址。如果consul不能加入任何指定的地址中,则agent会启动失败,默认agent启动时不会加入任何节点
  • -advertise:通知展现地址用来改变我们给集群中的其他节点展现的(局域网)地址,一般情况下-bind地址就是展现地址,其他节点join的地址就是这个ip
  • -advertise-wan:与-advertise类似,不过是广域网地址;
  • -retry-join:和join类似,但是允许你在第一次失败后进行尝试。
  • -retry-interval:两次join之间的时间间隔,默认是30s
  • -retry-max:尝试重复join的次数,默认是0,也就是无限次尝试
  • -rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中
2.1.3 端口相关
  • -dns-port:监听的DNS端口;默认8600
  • -grpc-port:gRPC API监听端口,默认-1关闭gRPC
  • -http-port:http API监听端口,默认8500
  • -https-port:https API监听端口,默认-1关闭;
  • -server-port:server RPC监听端口;默认8300
2.1.4 日志相关
  • -log-level:consul agent启动后显示的日志信息级别。默认是info,可选:trace、debug、info、warn、err
  • -log-file:指定日志文件,如果设置/var/log/,会在文件夹内生成consul-{timestamp}.log文件;这一参数可以结合几个日志相关的参数使用
  • -log-rotate-bytes:指定日志文件轮换的字节数,文件大小超过后会生成新的日志文件;默认不限制
  • -log-rotate-duration:指定日志文件轮换的时间间隔;默认24h,可以指定600s等
  • -log-rotate-max-files:指定保留旧文件的数量;默认0表示无限制;-1表示不保留旧的日志文件
  • -log-json:日志以json形式输出;默认关闭
  • -syslog:当前日志加入系统日志

2.2搭建集群

接下来我们尝试搭建一个具有两个server的集群:
启动第一个node

consul agent -server -bind=172.26.77.7 -client 0.0.0.0 -bootstrap-expect=2 -data-dir=/mnt/gsy/my-consul -ui -node=gsy

在另一台服务器启动第二个node

consul agent -server -bind=172.21.246.248 -client 0.0.0.0 -bootstrap-expect=2 -data-dir=/mnt/gsy/my-consul -ui -node=zr

在第二个服务器重新代开一个终端,加入集群

consul join 172.26.77.7

可以看见如下日志:

bootstrap_expect = 2: A cluster with 2 servers will provide no failure tolerance. See https://www.consul.io/docs/internals/consensus.html#deployment-table
bootstrap_expect > 0: expecting 2 servers
==> Starting Consul agent...
           Version: 'v1.7.2'
           Node ID: '5d3bdedb-ad75-d153-22f6-ab558b07676e'
         Node name: 'gsy'
        Datacenter: 'dc1' (Segment: '<all>')
            Server: true (Bootstrap: false)
       Client Addr: [0.0.0.0] (HTTP: 8500, HTTPS: -1, gRPC: -1, DNS: 8600)
      Cluster Addr: 172.26.77.7 (LAN: 8301, WAN: 8302)
           Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false, Auto-Encrypt-TLS: false

==> Log data will now stream in as it occurs:

    2020-04-08T10:32:52.431+0800 [INFO]  agent.server.raft: initial configuration: index=0 servers=[]
    2020-04-08T10:32:52.432+0800 [INFO]  agent.server.serf.wan: serf: EventMemberJoin: gsy.dc1 172.26.77.7
    2020-04-08T10:32:52.433+0800 [INFO]  agent.server.serf.lan: serf: EventMemberJoin: gsy 172.26.77.7
    2020-04-08T10:32:52.436+0800 [INFO]  agent.server.raft: entering follower state: follower="Node at 172.26.77.7:8300 [Follower]" leader=
    2020-04-08T10:32:52.436+0800 [INFO]  agent.server: Adding LAN server: server="gsy (Addr: tcp/172.26.77.7:8300) (DC: dc1)"
    2020-04-08T10:32:52.436+0800 [INFO]  agent.server: Handled event for server in area: event=member-join server=gsy.dc1 area=wan
    2020-04-08T10:32:52.437+0800 [INFO]  agent: Started DNS server: address=0.0.0.0:8600 network=tcp
    2020-04-08T10:32:52.437+0800 [INFO]  agent: Started DNS server: address=0.0.0.0:8600 network=udp
    2020-04-08T10:32:52.437+0800 [INFO]  agent: Started HTTP server: address=[::]:8500 network=tcp
    2020-04-08T10:32:52.437+0800 [INFO]  agent: started state syncer
==> Consul agent running!
    2020-04-08T10:32:59.544+0800 [ERROR] agent.anti_entropy: failed to sync remote state: error="No cluster leader"
    2020-04-08T10:33:02.373+0800 [WARN]  agent.server.raft: no known peers, aborting election
    2020-04-08T10:33:20.216+0800 [ERROR] agent: Coordinate update error: error="No cluster leader"
    2020-04-08T10:33:21.132+0800 [INFO]  agent.server.serf.lan: serf: EventMemberJoin: zr 172.21.246.248
    2020-04-08T10:33:21.132+0800 [INFO]  agent.server: Adding LAN server: server="zr (Addr: tcp/172.21.246.248:8300) (DC: dc1)"
    2020-04-08T10:33:21.134+0800 [INFO]  agent.server: Found expected number of peers, attempting bootstrap: peers=172.26.77.7:8300,172.21.246.248:8300
    2020-04-08T10:33:21.138+0800 [INFO]  agent.server.serf.wan: serf: EventMemberJoin: zr.dc1 172.21.246.248
    2020-04-08T10:33:21.138+0800 [INFO]  agent.server: Handled event for server in area: event=member-join server=zr.dc1 area=wan
    2020-04-08T10:33:21.871+0800 [INFO]  agent.server: New leader elected: payload=zr
    2020-04-08T10:33:22.760+0800 [INFO]  agent: Synced node info

可以看到zr节点加入成功,server数量达到要求,zr节点被选举为leader,之后server间同步了信息;

2.2 配置文件参数介绍

  • -addresses:一个嵌套对象,可以设置以下key:dns、http、rpc
  • -advertise_addr:等同于-advertise
  • -bootstrap:等同于-bootstrap
  • -bootstrap_expect:等同于-bootstrap-expect
  • -bind_addr:等同于-bind
  • -client_addr:等同于-client
  • -datacenter:等同于-dc
  • -data_dir:等同于-data-dir
  • -disable_remote_exec:禁止支持远程执行,设置为true,agent会忽视所有进入的远程执行请求
  • -domain:默认情况下consul在进行DNS查询时,查询的是consul域,可以通过该参数进行修改
  • -enable_debug:开启debug模式
  • -enable_syslog:等同于-syslog
  • -encrypt:等同于-encrypt
  • -key_file:提供私钥的路径
  • -leave_on_terminate:默认是false,如果为true,当agent收到一个TERM信号的时候,它会发送leave信息到集群中的其他节点上。
  • -log_level:等同于-log-level
  • -node_name:等同于-node
  • -ports:这是一个嵌套对象,可以设置以下key:dns(dns地址:8600)、http(http api地址:8500)、rpc(rpc:8400)、serf_lan(lan port:8301)、serf_wan(wan port:8302)、server(server rpc:8300)
  • -rejoin_after_leave:等同于-rejoin
  • -retry_join:等同于-retry-join
  • -retry_interval:等同于-retry-interval
  • -server:等同于-server
  • -log_file:等同于 -log-file
  • -log_rotate_duration:等同于-log-rotate-duration
  • -log_rotate_bytes:等同于-log-rotate-bytes
  • -log_rotate_max_files:等同于-log-rotate-max-files
  • -log_json:等同于-log-json
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Consul是一个开源工具,用于实现分布式系统的服务发现和配置管理。它由HashiCorp公司开发,使用Go语言编写,具有绿色、轻量级的特点。\[3\] 在使用Consul时,可以使用Consul-template来实现配置模板和Nginx配置的更新。首先,需要安装并运行Consul。可以从官网下载最新版本的Consul服务,并解压到指定目录。然后,将解压后的Consul可执行文件移动到/usr/local/bin目录下。可以使用consul --version命令来验证安装是否成功。\[1\] 接下来,可以启动Consul服务。使用consul agent命令来启动服务,并指定相关参数,如-server、-ui、-bootstrap-expect、-data-dir、-node、-client、-bind、-datacenter和-config-dir等。这些参数可以根据实际需求进行配置。\[2\] 一旦Consul服务启动成功,就可以开始使用Consul进行服务发现和配置管理了。Consul提供了一套API和命令行工具,可以用于注册和发现服务、配置管理等操作。可以通过编写Consul配置文件来定义服务和相关配置信息,并使用Consul-template来生成实际的Nginx配置文件。Consul-template使用HTTP长轮询来实现变更触发和配置更改,可以通过Consul的watch命令来实现。\[1\] 总结来说,Consul是一个分布式、高可用、可横向扩展的工具,用于实现分布式系统的服务发现和配置管理。通过安装和运行Consul,并结合Consul-template来实现Nginx配置的更新和重启功能。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [Consul的介绍、安装与使用](https://blog.csdn.net/hudeyong926/article/details/121287659)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [consul配置和使用](https://blog.csdn.net/weixin_44105468/article/details/121450170)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值