consul安装配置,生产环境部署高可用环境

原文:https://blog.csdn.net/achenyuan/article/details/80389410

前言
window下安装
linux下安装
修改默认端口
方法一
方法二
公网可以访问
查看集群节点信息
consul agent常用命令解读
创建server服务器
阿里云服务器部署高可用集群
consul概念
前言
有时发现点明一些理论知识,有助于我们理解概念。 
consul和eureka一样,是用于分页式系统中服务注册和发现。与其他分布式服务注册与发现的方案,Consul的方案更”一站式”,内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。与docker容器无疑配合。 
Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件。

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

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

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

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

linux下安装
官方下载地址下载linux版,上传到云服务器目录/home/soft 
解压unzip consul_1.1.0_linux_amd64.zip,得到一个文件consul。 
复制consul:cp consul /usr/local/bin/,可以直接使用访问consul命令。 
启动

consul agent -dev
1
结果如下: 

有几个consul agent输出的重要信息: 
节点名称:这是代理的唯一名称。默认情况下,这是机器的主机名,但您可以使用该-node标志对其进行自定义 。 
数据中心:这是配置代理运行的数据中心。每个节点都必须设置其它向数据中心报告。-datacenter 标志可用于设置数据中心。对于单DC配置,代理将默认为“dc1”。 
服务器:这表明代理是以服务器还是客户端模式运行。Server: false (bootstrap: false),表示不是以服务器模式运行,事实上-dev是开发服务器模式。 
客户端地址:这是用于代理的客户端接口的地址。这包括HTTP和DNS接口的端口。默认情况下,它只绑定到localhost。 
群集地址:这是用于集群中的Consul代理之间通信的地址和端口集。并非所有集群中的Consul代理都必须使用相同的端口,但该地址必须可供所有其他节点访问。 
-dev:该模式不能用于生产环境,因为该模式下不会持久化任何状态,该启动模式仅仅是为了快速便捷的启动单节点consul

修改默认端口
方法一
使用-http-port命令行参数,例如修改成8080端口

consul agent -dev -http-port 8080
1
方法二
使用-config-dir命令行参数,指定配置文件 
就是指定加载置文件的目录,该目录下所有的以.json结尾配置文件加载进去,它的加载顺序是根据26个字母的顺序加进行加载配置文件的。目录必需为consul.d,文件内容都是json格式的数据。默认后面文件定义配置会覆盖前面文件定义的配置。 
例如/etc/consul.d目录下合建base-config.json:

{  
    "ports": {    
        "http": 8080
    }  

1
2
3
4
5
其它默认端口 
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/
1
公网可以访问
使用-client 0.0.0.0 
例如:

consul agent -dev -http-port 8080 -client 0.0.0.0
1
查看集群节点信息
命令:

consul members
1
结果如下:

Node  Address         Status  Type    Build  Protocol  DC   Segment
n3    127.0.0.0:8301  alive   server  1.1.0  2         dc1  <all>
1
2
node:节点名
Address:节点地址
Status:alive表示节点健康
Type:server运行状态是server状态
DC:dc1表示该节点属于DataCenter1
consul agent常用命令解读
-data-dir 
作用:指定agent储存状态的数据目录,这是所有agent都必须的,对server尤其重要,因为他们必须持久化集群的状态

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

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

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

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

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

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

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

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

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

创建server服务器
上面的例子都是以-dev开发者服务器模式运行的,生产环境不是我想要的。下面以server模式运行consul.

consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-one -advertise=116.62.184.190 -bind=0.0.0.0 -client=0.0.0.0
1
-server:服务器模式 
-ui:能webui展示 
-bootstrap-expect:server为1时即选择server集群leader 
-data-dir:consul状态存储文件地址 
-node:指定结点名 
advertise:本地ip地址 
-client:指定可访问这个服务结点的ip 
结果如下: 

注意 Cluster Addr集群地址是我们上面advertise指定的ip地址

阿里云服务器部署高可用集群
2台阿里云服务器 
云1:116.62.184.190和云2:139.196.123.97 
在云1上创建consul服务器agent-one:

consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-one -advertise=116.62.184.190 -bind=0.0.0.0 -client=0.0.0.0
1
在云2上创建consul服务器agent-two:

consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-two -advertise=139.196.123.97 -bind=0.0.0.0 -client=0.0.0.0
1
在云1上执行命令,将agent-one添加到agent-two:

consul join 139.196.123.97
1
表示当前consul服务器添加到139.196.123.97上面consul服务器 
执行结果为Successfully joined cluster by contacting 1 nodes.表示添加成功,在云1或云2任意一台机器上执行consul members都会得到如下结果:

Node       Address              Status  Type    Build  Protocol  DC   Segment
agent-one  116.62.184.190:8301  alive   server  1.1.0  2         dc1  <all>
agent-two  139.196.123.97:8301  alive   server  1.1.0  2         dc1  <all>
1
2
3
访问http://139.196.123.97:8500,注意阿里云安全组里允许访问8500端口 

成功展示2台consul服务器。

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

参考 
在CentOS 7上部署Consul 0.6.4
--------------------- 
作者:陈袁 
来源:CSDN 
原文:https://blog.csdn.net/achenyuan/article/details/80389410 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Consul是一个开源的分布式系统工具,主要用于服务发现、健康检查和 kv 存储,常用于构建可用性和容错的微服务架构。在生产环境中,配置Consul需要考虑以下几个关键步骤: 1. **安装部署**: - 根据你的基础设施(如单机、容器或Kubernetes)选择合适的安装方法。 - 分配角色:设置一个或多个Consul服务器节点(通常作为领导者),以及客户端节点。 2. **配置文件**: - 在`/etc/consul/consul-template.d/`目录下管理动态配置模板,例如使用`consul-template`进行配置文件的自动刷新。 - 定义服务发现和服务注册的策略。 3. **数据中心和节点**: - 创建数据中心,如`datacenter`,并为每个节点设置正确的数据中心标签。 - 启用跨数据中心复制(如有需要)。 4. **健康检查**: - 配置服务健康检查,包括HTTP/HTTPS、TCP连接等,并设置超时和重试规则。 5. **KV存储**: - 使用kv store来存储应用配置、元数据和其他临时数据。 - 可以设置ACL(访问控制列表)以保护敏感信息。 6. **安全**: - 开启TLS加密通信,启用证书验证。 - 如果需要,还可以设置防火墙规则和访问控制。 7. **监控与日志**: - 安装监控工具(如Prometheus、Grafana)来收集Consul的指标。 - 配置日志级别和输出目的地。 8. **故障转移**: - 如果集群规模较大,配置多主复制以增强可用性。 相关问题: 1. 如何在Consul中创建和管理服务? 2. 如何设置Consul的健康检查模板? 3. Consul如何实现服务发现与负载均衡? 4. 如何在Consul中处理节点故障和恢复?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值