Consul 集群部署并启用远程配置

consul 运行原理

集群模式中加入 Consul Client模式,Client因为加入了LAN gossip协议组成网络中(高速局域网),可以识别故障的Server节点并找到可用的Server节点继续工作,其实Server模式负责的是用WAN gossip协议组成的网络进行跨广域网的数据同步(多个数据中心),这点Client模式是做不到的,Client模式也提供服务的注册和查询,但Client模式不存储节点数据,Client将请求转发给Server进行处理,节点注册数据在Server端是持久化保存的,Client的数量可以无限多,Server的数量是受控制的。总之:Client模式+LAN gossip协议组成了一个数据中心中的各个节点,Server负责投票选出Leader进行数据中心内的数据同步,这个Leader还负责利用WAN gossip协议跨广域网的与其他数据中心进行数据同步。

下载安装

https://www.consul.io/

https://releases.hashicorp.com/consul/1.14.4/consul_1.14.4_linux_amd64.zip

环境 3台linux IP:

servers:192.168.1.136,192.168.1.137,192.168.1.138

一台linux IP   192.168.1.133 以client 方式启动consul

 ./consul agent   -bind=192.168.1.133 -client=0.0.0.0  -data-dir=/opt/module/consul/data/ -node=client01

在linux上安装部署

准备unzip,yum install unzip

准备目录,保存consul安装 文件 mkdir -p /opt/module/consul/data

解压文件到consul文件夹:unzip consul_1.14.4_linux_amd64.zip -d /opt/module/consul/

分别运行consul

./consul agent -server -bind=192.168.1.136 -client=0.0.0.0 -ui -bootstrap-expect=3 -data-dir=/opt/module/consul/data/ -node=server-01

./consul agent -server -bind=192.168.1.137 -client=0.0.0.0 -ui -bootstrap-expect=3 -data-dir=/opt/module/consul/data/ -node=server-02

./consul agent -server -bind=192.168.1.138 -client=0.0.0.0 -ui -bootstrap-expect=3 -data-dir=/opt/module/consul/data/ -node=server-03

命令方式指定leader

比如:192.168.1.136 为leader

那么在 137,138,133 上执行命令加入136

./consul join 192.168.1.136

成功加入后,通过命令查看集群状态

 

 

 

 集群环境搭建完成

停掉一个server 之后 consul 自动把停止的服务删除,同时自动产生新的leader

 

 

 微应用开发配置

 

8031是使用远程config 的项目 bootstrap.yml

 

 

登录集群中任一台管理端:

http://machine136:8500/

创建远程配置

config/application/data

 

 

 

config/consulpayment-dev/data

 

8021本地配置 applicaion.yml

 

 

8022与8021相同配置 只是端口不同

消费服务order 80

启动微服务后登录consul控制台

 

 

 

 

 

 

 

 

 运行效果

 

 

 

  

 

另外启动支持配置文件的方式加载配置

如:

./consul agent -server -bind=192.168.1.136 -client=0.0.0.0 -ui -bootstrap-expect=3 -data-dir=/opt/module/consul/data/ -node=server-01 -config-dir=/opt/module/consul/setup

./consul agent -server -bind=192.168.1.137 -client=0.0.0.0 -ui -bootstrap-expect=3 -data-dir=/opt/module/consul/data/ -node=server-02 -config-dir=/opt/module/consul/setup

./consul agent -server -bind=192.168.1.138 -client=0.0.0.0 -ui -bootstrap-expect=3 -data-dir=/opt/module/consul/data/ -node=server-03 -config-dir=/opt/module/consul/setup

其中/opt/module/consul/setup 是个文件夹

 -config-dir :就是指定加载置文件的目录,我们只需要填写配置文件的目录就可以帮助我们把该目录下所有的以.json结尾配置文件加载进去,它的加载顺序是根据26个字母的顺序加进行加载配置文件的。文件内容都是json格式的数据。默认后面文件定义配置会覆盖前面文件定义的配置。

consul为我们提供其他的配置文件属性:

acl_token:agent会使用这个token和consul server进行请求

acl_ttl:控制TTL的cache,默认是30s

addresses:一个嵌套对象,可以设置以下key:dns、http、rpc

advertise_addr:等同于-advertise

bootstrap:等同于-bootstrap

bootstrap_expect:等同于-bootstrap-expect

bind_addr:等同于-bind

ca_file:提供CA文件路径,用来检查客户端或者服务端的链接

cert_file:必须和key_file一起

check_update_interval:

client_addr:等同于-client

datacenter:等同于-dc

data_dir:等同于-data-dir

disable_anonymous_signature:在进行更新检查时禁止匿名签名

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)

protocol:等同于-protocol

rejoin_after_leave:等同于-rejoin

retry_join:等同于-retry-join

retry_interval:等同于-retry-interval

server:等同于-server

syslog_facility:当enable_syslog被提供后,该参数控制哪个级别的信息被发送,默认Local0

ui_dir:等同于-ui-dir

 

posted on 2023-02-14 23:20  hztech  阅读(305)  评论(0编辑  收藏  举报

导航