CONSUL的基本使用

                     CONSUL的基本使用以及web管理页面的开启

consul是HashiCorp公司(曾经开发过vgrant) 推出的一款开源工具, 基于go语言开发, 轻量级, 用于实现分布式系统的服务发现与配置。 与其他类似产品相比, 提供更“一站式”的解决方案。 consul内置有KV存储, 服务注册/发现, 健康检查, HTTP+DNS API, Web UI等多种功能。官网: https://www.consul.io/

其他同类服务发现与配置的主流开源产品有:zookeeper和ETCD。

下载和安装:

consul的安装十分简单,在官网主页下载即可,软件结构十分简单就一个可执行文件:consul。

wget https://releases.hashicorp.com/consul/1.8.4/consul_1.8.4_linux_amd64.zip下载后得到一个zip压缩文件,解压后复制到

/usr/local/bin/ 目录下即可使用。

执行命令:consul version   ,可以看到如下输出即可。

root@localhost serf]# consul version
Consul v1.8.3
Revision a9322b9c7
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)

简单的使用:

Consul的agent角色 

    Consul的agent分成Server和Client两种角色,不论Server和Client都是Consul的节点,所有的服务都可以注册到这些节点上,通过这些节点实现服务注册信息的共享。

    Server和Client的区别在于,Server会把信息持久化到本地保存,便于故障后的恢复。而Client则是把服务信息转发到Server,本身并不做持久化。

通常使用Server角色就可以满足需求了。

 

agent启动参数说明

consul以agent的方式启动,相关参数说明:

-bootstrap:用来控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己 选举为raft leader。 
-server:定义agent运行在server模式,每个集群至少有一个server,建议每个集群的server不要超过5个 
-client:consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1 
-advertise:通知展现地址用来改变我们给集群中的其他节点展现的地址,一般情况下-bind地址就是展现地址,一般该选项使用广域网IP
-bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0 ,一般该选项使用在局域网

-bootstrap-expect:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap公用 
-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忽略先前的离开,在再次启动后仍旧尝试加入集群中。 
-syslog:开启系统日志功能,只在linux/osx上生效 
-ui-dir:提供存放web ui资源的路径,该目录必须是可读的 
-pid-file:提供一个路径来存放pid文件,可以使用该文件进行SIGINT/SIGHUP(关闭/更新)agent

这个集群实验使用如下三台机器:192.168.0.16,192.168.0.17,192.168.0.18,都是server角色,根据以上的参数介绍,首先,使用命令行方式启动服务 。

192.168.0.16上执行:

consul agent -server -ui -bootstrap-expect=3 -data-dir=/data/consul -node=server-1 -client=0.0.0.0 -bind=192.168.0.16 -datacenter=dc1

192.168.0.17上执行:

consul agent -server -ui -bootstrap-expect=3 -data-dir=/data/consul -node=server-2 -client=0.0.0.0 -bind=192.168.0.17 -datacenter=dc1 -join 192.168.0.16

192.168.0.18上执行:

consul agent -server -ui -bootstrap-expect=3 -data-dir=/data/consul -node=server-3 -client=0.0.0.0 -bind=192.168.0.18 -datacenter=dc1 -join 192.168.0.16

这时,可以发现,打开浏览器输入:http://192.168.0.17:8500/ui/dc1/nodes,会打开web  UI界面。

这么做服务是前台运行的,十分的不科学,并且是命令行运行,每次的启动都很麻烦,怎么解决呢?当然是配置文件的方式启动了。


 

配置文件启动consul服务:

  1. 将consul注册为系统服务

编辑文件,文件为 consul.service

[root@centos8 ~]# vim /usr/lib/systemd/system/consul.service 

[Unit]
Description=Consul
After=network.target
[Service]
ExecStart=/usr/local/bin/consul agent -config-file /etc/consul.d/consul_start.json #consul这个可执行文件的绝对路径
KillSignal=SIGINT
[Install]
WantedBy=multi-user.target

2.根据以上文件的ExecStart,我们需要编写配置文件:/etc/consul.d/consul_start.json

[root@centos8 ~]# vim /etc/consul.d/consul_start.json

{
  "datacenter": "dc1",
  "data_dir": "/var/lib/consul/data",
  "log_level": "INFO",

"log_file" : "/var/log/consul/consul.log",
  "node_name": "consul_1",
  "server": true,
  "ui": true,
  "acl_enforce_version_8":false,
  "bootstrap": true,
  "client_addr": "0.0.0.0",
  "bind_addr": "192.168.0.18",
  "advertise_addr_wan": "192.168.0.18"
}


该配置文件的主要内容为:

datacenter的名称为dc1,数据存放路径为/var/lib/consul/data,日志的等级为info级别,节点名称为 consul_1 ,角色为server,web  ui 界面开启状态,acl关闭,单server模式,任意IP可访问该节点,绑定本机IP为 192.168.0.18,广域网的地址为192.168.0.18.

3.启动服务并将服务加入开机自启动

systemctl enable consul 

systemctl start consul

systemctl status consul #查看状态,running表示服务以正常启动

[root@centos8 ~]# netstat -antup | grep consul
tcp        0      0 192.168.0.18:8300       0.0.0.0:*               LISTEN      4333/consul         
tcp        0      0 192.168.0.18:8301       0.0.0.0:*               LISTEN      4333/consul         
tcp        0      0 192.168.0.18:8302       0.0.0.0:*               LISTEN      4333/consul         
tcp        0      0 192.168.0.18:41328      192.168.0.18:8300       ESTABLISHED 4333/consul         
tcp        0      0 192.168.0.18:8300       192.168.0.18:41328      ESTABLISHED 4333/consul         
tcp6       0      0 :::8600                 :::*                    LISTEN      4333/consul         
tcp6       0      0 :::8500                 :::*                    LISTEN      4333/consul         
tcp6       0      0 192.168.0.18:8500       192.168.0.2:64822       ESTABLISHED 4333/consul         
udp        0      0 192.168.0.18:8301       0.0.0.0:*                           4333/consul         
udp        0      0 192.168.0.18:8302       0.0.0.0:*                           4333/consul         
udp6       0      0 :::8600                 :::*                                4333/consul

可以看到服务需要的端口都已经开启

打开浏览器,输入 192.168.0.18:8500

 

 

那么,如果需要组成集群怎么做呢?很简单,配置文件的以下选项修改即可:

"node_name": "consul_1" #改成唯一的名字,不能相同哦

"bind_addr": "192.168.0.18",#改成自己的IP
  "advertise_addr_wan": "192.168.0.18"#改成自己的IP

"bootstrap": false,#修改为false,作为client启动

 

启动服务后,运行命令:consul join 192.168.0.18, 这样就加入了以192.168.0.18为领导的集群了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晚风_END

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值