首页 技术 正文
技术 2022年11月12日
0 收藏 886 点赞 3,239 浏览 2598 个字

1. Consul简介

  Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发,基于 Mozilla Public License 2.0 的协议进行开源。Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对。

  命令行非常好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品。

  一致性协议采用 Raft 算法,用来保证服务的高可用。使用 GOSSIP 协议管理成员和广播消息, 并且支持 ACL 访问控制。

  官网:https://www.consul.io/

2. Windows安装

  • 下载安装包

      Download Consul

  • 解压
  • 配置环境变量

      将解压后consul.exe所在的目录添加到环境变量Path中(不包含consul.exe,例如:d:\consul)。

  • 运行CMD
#查看环境变量是否添加成功
consul#启动
consul agent -dev#浏览器访问
http://localhost:8500#查看成员
consul members#查看成员及元数据
consul members -detailed#查看节点
curl localhost:8500/v1/catalog/nodes

  至此,Windows单机安装Consul已经完成。

3. Docker部署Consul集群

#拉取镜像(若指定具体版本,执行docker pull consul:1.6.2)
docker pull consul#查看镜像
docker images#运行
#agent : 表示启动 Agent 进程
#-server:表示启动 Consul Server 模式
#-client:表示启动 Consul Cilent 模式
#-bootstrap:表示这个节点是 Server-Leader ,每个数据中心只能运行一台服务器。技术角度上讲 Leader 是通过 Raft 算法选举的,但是集群第一次启动时需要一个引导 Leader,在引导群集后,建议不要使用此标志
#-ui:表示启动 Web UI 管理器,默认开放端口 8500,所以使用 Docker -p命令对外开放 8500 端口
#-node:节点的名称,集群中必须是唯一的
#-client:表示 Consul 将绑定客户端接口的地址,0.0.0.0 表示所有地址都可以访问
#-join:表示加入到某一个集群中去, 如:-json=192.168.1.100
docker run --name=consul-server-1 --privileged=true -p 8500:8500 -v /usr/local/consul/data:/consul/data -e CONSUL_BIND_INTERFACE=eth0 -d consul:1.6.2 agent -server -client=0.0.0.0 -bootstrap -ui -node=1 #若出现iptables: No chain/target/match by that name,是因为docker network没有权限对container进行网络配置,有两中解决办法
#方法一:关闭网关
systemctl stop firewalld
systemctl stop iptables
#方法二:重启docker
service docker restart
#查看容器信息
docker ps -a
#删除刚才创建的容器
docker rm -f [CONTAINER ID]
#重新执行
docker run --name=consul-server-1 --privileged=true -p 8500:8500 -v /usr/local/consul/data:/consul/data -e CONSUL_BIND_INTERFACE=eth0 -d consul:1.6.2 agent -server -client=0.0.0.0 -bootstrap -ui -node=1 #查看Consul容器运行状态,若为Up状态,则证明部署成功
docker ps -a#浏览器访问
http://[ip]:8500#查看成员(记录Address,集群部署时需要)
docker exec consul-server-1 consul members#查看节点信息
curl http://[ip]:8500/v1/catalog/nodes
  • 集群部署

      Server 模式在集群中建议是三个以上,这样更好的避免因为 Server 宕机导致整个集群挂掉的风险。

      在上边单机部署上添加两个Server节点到Consul集群中。

#查看成员(记录Address)
docker exec consul-server-1 consul members#添加两个Server节点,名称为-node=2,-node=3
docker run --name=consul-server-2 -e CONSUL_BIND_INTERFACE=eth0 -d consul:1.6.2 agent -server -node=2 -join='172.17.0.3'
docker run --name=consul-server-3 -e CONSUL_BIND_INTERFACE=eth0 -d consul:1.6.2 agent -server -node=3 -join='172.17.0.3'#查看Consul三个容器运行状态,若为Up状态,则证明部署成功
docker ps -a#浏览器访问
http://[ip]:8500#查看成员(记录Address,集群部署时需要)
docker exec consul-server-1 consul members#查看节点信息
curl http://[ip]:8500/v1/catalog/nodes

  至此,使用Docker部署Consul集群已经完成。

4. 剔除无效服务和节点

  • 剔除无效服务
curl -X PUT http://[ip]:8500/v1/agent/service/deregister/[service_id]
  • 剔除无效节点
curl -X PUT http://[ip]:8500/v1/agent/force-leave/[node_id]
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,083
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,558
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,407
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,180
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,817
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,900