Spring Cloud Finchley.SR1 的学习与应用 2 - Consul

为什么80%的码农都做不了架构师?>>>  hot3.png

Spring Cloud Consul

简介

consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。服务部署简单,只有一个可运行的二进制的包。每个节点都需要运行agent,他有两种运行模式server和client。每个数据中心官方建议需要3或5个server节点以保证数据安全,同时保证server-leader的选举能够正确的进行。

Consul的安装

1.安装

1mkdir -p /opt/consul 2cd /opt/consul/ 3wget https://releases.hashicorp.com/consul/1.2.0/consul_1.2.0_linux_amd64.zip 4unzip consul_1.2.0_linux_amd64.zip 5 6

2.启动consul

1mkdir -p /opt/consul/config 2mkdir -p /opt/consul/data 3 4#启用Gossip加密方式,只需要在启动Agent时设置加密密钥。通过encrypt参数设置密钥:设置的值是包含密钥的配置文件。 5 6$ ./consul keygen 7xZpdVT6DUTzQrYyf2B2uCQ== 8 9 10 11vim /opt/consul/config/config.json 12 13 14{ 15 "advertise_addr": "192.168.2.161", 16 "bind_addr": "192.168.2.161", 17 "client_addr": "0.0.0.0", 18 "domain": "consul", 19 "bootstrap_expect": 3, 20 "server": true, 21 "datacenter": "dc1", 22 "data_dir": "/opt/consul/data", 23 "encrypt": "xZpdVT6DUTzQrYyf2B2uCQ==", 24 "ui": true, 25 "enable_syslog": true, 26 "performance": { 27 "raft_multiplier": 1 28 }, 29 "dns_config": { 30 "allow_stale": true, 31 "max_stale": "15s" 32 }, 33 "retry_join": [ 34 "192.168.2.162", 35 "192.168.2.163" 36 ], 37 "retry_interval": "10s", 38 "skip_leave_on_interrupt": true, 39 "leave_on_terminate": false, 40 "rejoin_after_leave": true 41} 42 43 44#启动节点1(server模式) 45nohup ./consul agent -config-dir /opt/consul/config -node node1 & 46 47

agent 运行一个consul agent consul agent -dev join 将agent加入到consul集群 consul join IP members 列出consul cluster集群中的members consul members leave 将节点移除所在集群 consul leave

consul agent 命令的常用选项

-data-dir 作用:指定agent储存状态的数据目录,这是所有agent都必须的,对于server尤其重要,因为他们必须持久化集群的状态

-config-dir 作用:指定service的配置文件和检查定义所在的位置,通常会指定为”某一个路径/consul.d”(通常情况下,.d表示一系列配置文件存放的目录)

-config-file 作用:指定一个要装载的配置文件,该选项可以配置多次,进而配置多个配置文件(后边的会合并前边的,相同的值覆盖)

-dev 作用:创建一个开发环境下的server节点,该参数配置下,不会有任何持久化操作,即不会有任何数据写入到磁盘,这种模式不能用于生产环境(因为第二条)

-bootstrap-expect 作用:该命令通知consul server我们现在准备加入的server节点个数,该参数是为了延迟日志复制的启动直到我们指定数量的server节点成功的加入后启动。

-node 作用:指定节点在集群中的名称,该名称在集群中必须是唯一的(默认采用机器的host),推荐:直接采用机器的IP

-bind 作用:指明节点的IP地址,有时候不指定绑定IP,会报Failed to get advertise address: Multiple private IPs found. Please configure one. 的异常

-server 作用:指定节点为server,每个数据中心(DC)的server数推荐至少为1,至多为5,所有的server都采用raft一致性算法来确保事务的一致性和线性化,事务修改了集群的状态,且集群的状态保存在每一台server上保证可用性,server也是与其他DC交互的门面(gateway)

-client 作用:指定节点为client,指定客户端接口的绑定地址,包括:HTTP、DNS、RPC,默认是127.0.0.1,只允许回环接口访问,若不指定为-server,其实就是-client

-join 作用:将节点加入到集群

-datacenter 作用:指定机器加入到哪一个数据中心中 -ui 作用:使得客户端可以直接通过url访问服务端的consul ui

1#启动节点2-3(server模式) 2 3#更改advertise_addr、bind_addr、retry_join 参数,启动节点2-3 4nohup ./consul agent -config-dir /opt/consul/config -node node2 & 5 6nohup ./consul agent -config-dir /opt/consul/config -node node3 & 7 8

打开浏览器,输入http://192.168.2.161:8500/ui/

1#查看下集群的状态 2[root@node1 consul]# ./consul members 3Node Address Status Type Build Protocol DC Segment 4node1 192.168.2.161:8301 alive server 1.2.0 2 dc1 <all> 5node2 192.168.2.162:8301 alive server 1.2.0 2 dc1 <all> 6node3 192.168.2.163:8301 alive server 1.2.0 2 dc1 <all> 7 8 9

2.安装git2consul

原生的Consul不支持Git来做,需要借助Consul 社区提供的另外一个工程git2consul

配置如下:

1{ 2 "version":"1.0", 3 "local_store": "本地仓库备份地址", 4 "logger":{ 5 "name":"git2consul", 6 "streams":[ 7 { 8 "level":"trace", 9 "type":"rotating-file", 10 "path":"生成日志路径/git2consul.log" 11 } 12 ] 13 }, 14 "repos":[ 15 { 16 "name":"pig-config", 17 "url":"远程仓库地址", 18 "include_branch_name" : true, //分支信息是否包含到请求中,建议使用 19 "branches":[ 20 "dev" 21 ], 22 "hooks":[ 23 { 24 "type" : "polling", //更新策略定时刷新的 25 "interval" : "1" //1分钟 26 } 27 ] 28 } 29 ] 30} 31 32

我的配置:

1{ 2 "version": "1.0", 3 "local_store": "/opt/git2consul/git2consul_cache", 4 "logger" : { 5 "name" : "git2consul", 6 "streams" : [{ 7 "level": "trace", 8 "stream": "process.stdout" 9 }, 10 { 11 "level": "debug", 12 "type": "rotating-file", 13 "path": "/opt/git2consul/logs/git2consul.log" 14 }] 15 }, 16 "repos" : [{ 17 "name" : "woqu_configuration", 18 "url" : "https://github.com/zhangorrin/woqu.git", 19 "branches" : ["master"], 20 "hooks": [{ 21 "type" : "polling", 22 "interval" : "1" 23 }] 24 }] 25} 26 27 28

启动时候指定上边的脚本:

1./git2consul --config-file git2consul.json 2 3

启动后可以在key/value中看到githup上的配置文件

至此,consul服务端安装已经完成,后续在实际项目中讲解如何使用consul client

转载于:https://my.oschina.net/orrin/blog/2885669

代码交流 2021