SpringCloud全家桶实践笔记(1)Consul集群搭建 - Go语言中文社区

SpringCloud全家桶实践笔记(1)Consul集群搭建


前言

Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件。与docker容器无缝衔接。 

Consul 的使用场景 
1. docker 实例的注册与配置共享 
2. coreos 实例的注册与配置共享 
3. vitess 集群 
4. SaaS 应用的配置共享 
5. 与 confd 服务集成,动态生成 nginx 和 haproxy 配置文件

consul概念

Agent: Consul集群中长时间运行的守护进程,以consul agent 命令开始启动. 在客户端和服务端模式下都可以运行,可以运行DNS或者HTTP接口, 它的主要作用是运行时检查和保持服务同步。 
Client: 客户端, 无状态, 以一个极小的消耗将接口请求转发给局域网内的服务端集群. 
Server: 服务端, 保存配置信息, 高可用集群, 在局域网内与本地客户端通讯, 通过广域网与其他数据中心通讯. 每个数据中心的 server 数量推荐为 3 个或是 5 个. 
Datacenter: 数据中心,多数据中心联合工作保证数据存储安全快捷 
Consensus: 一致性协议使用的是Raft Protocol 
RPC: 远程程序通信 
Gossip: 基于 Serf 实现的 gossip 协议,负责成员、失败探测、事件广播等。通过 UDP 实现各个节点之间的消息。分为 LAN 上的和 WAN 上的两种情形。

1.资源准备

Spring Cloud中文网:https://springcloud.cc/

本次搭建采用了三台虚拟机,Linux系统(192.168.70.162/3/4),在每台机器下建一个目录/data/consul/data,这个目录主要存放器群启动后生成的一些数据。需要开启的端口,8300, 8301, 8500, 8600

(开启端口或关闭防火墙systemctl stop firewalld )。

2.下载安装包安装

从官网下载安装包(https://www.consul.io/downloads.html),上传至服务器,解压即可使用。

检测安装 

./consul 看到如下界面说明安装成功

3.启动配置集群

分别在以下三个机器上执行一下启动命令。

机器1:192.168.70.162./consul agent -server -bootstrap-expect 2 -data-dir=/data/consul/data -node=consul-server-1 -bind=192.168.70.162 -client=0.0.0.0 -ui &

机器2:192.168.70.163

./consul agent -server -bootstrap-expect 2 -data-dir=/data/consul/data -node=consul-server-2 -bind=192.168.70.163 -client=0.0.0.0 -ui &

机器3:192.168.70.164

./consul agent -server -bootstrap-expect 2 -data-dir=/data/consul/data -node=consul-server-3 -bind=192.168.70.164 -client=0.0.0.0 -ui &

参数说明:

  •  server: 以server身份启动。默认是client
  •  bootstrap-expect:集群要求的最少server数量,当低于这个数量,集群即失效。
  •  data-dir:data存放的目录,更多信息请参阅consul数据同步机制
  •  node:节点id,在同一集群不能重复。
  •  bind:监听的ip地址。默认绑定0.0.0.0(即都可以访问),可以不指定
  •  client: 客户端的ip地址,0.0.0.0是指谁都可以访问
  •  ui: 可以访问UI界面

三台机器上的服务启动完成后,将两台机器添加到其中一台机器上,组建成集群。

分别在机器2和机器3上执行:./consul join 192.168.70.162,构成集群,同样也可以再增加别的节点。

机器162

    2019/05/01 16:04:14 [INFO] serf: EventMemberJoin: consul-server-2.dc1 192.168.70.163
    2019/05/01 16:04:14 [INFO] serf: EventMemberJoin: consul-server-3.dc1 192.168.70.164

成员xx加入。

机器163/164

./consul join 192.168.70.162 
    2019/05/01 16:04:18 [INFO] agent: (LAN) joining: [192.168.70.162]
    2019/05/01 16:04:18 [INFO] agent: (LAN) joined: 1 Err: <nil>
Successfully joined cluster by contacting 1 nodes.

通过联系1个节点成功加入群集。

查看集群节点信息

consul members

  1. node:节点名
  2. Address:节点地址
  3. Status:alive表示节点健康
  4. Type:server运行状态是server状态
  5. DC:dc1表示该节点属于DataCenter1

 

启动成功后访问任意一台机器  http://192.168.70.162:8500,会看到如下界面,有3个健康的节点:

 

4.修改配置

使用-config-dir命令行参数,指定配置文件 
就是指定加载置文件的目录,该目录下所有的以.json结尾配置文件加载进去,它的加载顺序是根据26个字母的顺序加进行加载配置文件的。目录必需为consul.d,文件内容都是json格式的数据。默认后面文件定义配置会覆盖前面文件定义的配置。 
例如/etc/consul.d目录下合建base-config.json:
dns : 默认8600. 
http :默认8500. 
https: 默认-1 (disabled). 
serf_lan:默认8301. 
serf_wan: 默认 8302. 
server: 默认8300. 

修改后示例

“ports”: { 
“http”: 8080, 
“dns”: 8601, 
“serf_lan”: 8311, 
“serf_wan”: 8312, 
“server”: 8310 

}

启动时指定配置文件

 

consul agent -dev -config-dir /etc/consul.d/

5.常用命令

常用consul命令
命令 解释 示例
agent 运行一个consul agent consul agent -dev
join 将agent加入到consul集群 consul join IP
members 列出consul cluster集群中的members consul members
leave 将节点移除所在集群 consul leave
version 查看版本信息 ./consul version
--help 查看命令详解 ./consul agent --help
-http-port 修改ui访问端口
consul agent -dev -http-port 8080

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

2-config-dir 
作用:指定service的配置文件和检查定义所在的位置。目录必需为consul.d,文件内容都是json格式的数据。配置详解见官方

3-config-file 
作用:指定一个要装载的配置文件

4-dev 
作用:开发服务器模式,虽然是server模式,但不用于生产环境,因为不会有任何持久化操作,即不会有任何数据写入到磁盘

5-bootstrap-expect 
作用: 参数表明该服务运行时最低开始进行选举的节点数,当设置为1时,则意味允许节点为一个时也进行选举;当设置为3时,则等到3台节点同时运行consul并加入到server才能参与选举,选举完集群才能够正常工作。 一般建议服务器结点3-5个。

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

7-bind 
作用:指明节点的IP地址,一般是0.0.0.0或者云服务器内网地址,不能写阿里云外网地址。这是Consul侦听的地址,它必须可以被集群中的所有其他节点访问。虽然绑定地址不是绝对必要的,但最好提供一个。

8-server 
作用:指定节点为server,每个数据中心(DC)的server数推荐3-5个。

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

10.-datacenter 

作用:指定机器加入到哪一个数据中心中。老版本叫-dc,-dc已经失效

6.window下安装

官网下载window版,解压得到一个可执行文件。 
设置环境变量,让我们直接在cmd里可直接使用consul使命。在path后面添加consul所在目录例如D:softconsul_1.1.0_windows_amd64 
启动consul命

consul agent -dev -ui -node=cy
-dev开发服务器模式启动,-node结点名为cy,-ui可以用界面访问,默认能访问。 
测试地址

http://localhost:8500
出现界面即成功。 
window下的使用到此即可,因为只会存在开发环境,而且能使用。不需要server和群集等概念。

参考文档

http://www.cnblogs.com/soinve/p/9673738.html

https://blog.csdn.net/u010046908/article/details/61916389

https://blog.csdn.net/liuzhuchen/article/details/81913562

 

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/tyw15/article/details/89738060
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-13 12:22:03
  • 阅读 ( 1598 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢