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