概述
consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方要依赖其他工具(比如ZooKeeper等)。服务部署简单,只有一个可运行的二进制的包。每个节点都需要运行agent,他有两种运行模式server和client。每个数据中心官方建议需要3或5个server节点以保证数据安全,同时保证server-leader的选举能够正确的进行。
client
CLIENT表示consul的client模式,就是客户端模式。是consul节点的一种模式,这种模式下,所有注册到当前节点的服务会被转发到SERVER,本身是不持久化这些信息。
server
SERVER表示consul的server模式,表明这个consul是个server,这种模式下,功能和CLIENT都一样,唯一不同的是,它会把所有的信息持久化的本地,这样遇到故障,信息是可以被保留的。
server-leader
中间那个SERVER下面有LEADER的字眼,表明这个SERVER是它们的老大,它和其它SERVER不一样的一点是,它需要负责同步注册的信息给其它的SERVER,同时也要负责各个节点的健康监测。
raft
server节点之间的数据一致性保证,一致性协议使用的是raft,而zookeeper用的paxos,etcd采用的也是taft。
服务发现协议
consul采用http和dns协议,etcd只支持http
服务注册
consul支持两种方式实现服务注册,一种是通过consul的服务注册http API,由服务自己调用API实现注册,另一种方式是通过json个是的配置文件实现注册,将需要注册的服务以json格式的配置文件给出。consul官方建议使用第二种方式。服务发现
consul支持两种方式实现服务发现,一种是通过http API来查询有哪些服务,另外一种是通过consul agent 自带的DNS(8600端口),域名是以NAME.service.consul的形式给出,NAME即在定义的服务配置文件中,服务的名称。DNS方式可以通过check的方式检查服务。
服务间的通信协议
Consul使用gossip协议管理成员关系、广播消息到整个集群,他有两个gossippool(LAN pool和WAN pool),LAN pool是同一个数据中心内部通信的,WAN pool是多个数据中心通信的,LAN pool有多个,WAN pool只有一个

安装consul-server集群

下载镜像

docker pull docker.io/consul:latest

  

创建consul配置:

vim /opt/platform/consul/config/server.json
{
"datacenter": "xxx-consul",
"data_dir": "/consul/data",
"server": true,
"ui": true,
"bind_addr": "172.29.150.25",
"client_addr": "0.0.0.0",
"bootstrap_expect": 3,
"retry_join": ["172.29.150.25","172.29.150.26","172.29.150.27"],
"retry_interval": "10s",
"rejoin_after_leave": true,
"skip_leave_on_interrupt": true
}

 

配置说明:

1. datacenter:数据中心名称(库名)
2. data_dir:数据存储目录
3. server:运行在server模式
4. ui:使用UI界面
5. bind_addr:内部集群通信绑定的地址。默认是宿主机ip,如果有多块网卡,需要指定,
否则启动报错
6. client_addr:客户端接口绑定的地址,默认是‘0.0.0.0’;
7. bootstrap_expect:集群预期的server个数,这里我们有3台server,设置为3;不能和bootstrap参数一同使用。这里需要说明下:bootstrap_expect指定的个数代表了server加入到集群之后,集群中的机器必须=>3的情况才开始选举server-leader,而如果配置bootstrap的节点,则启动的时候默认自己为leader。
8. retry_join:重新加入集群
9. retry_interval:重试时间
10. rejoin_after_leave:在离开集群之后才重试加入
11. skip_leave_on_interrupt :在启动后,是否ctrl+C优雅退出,我们是容器模式,所以不用管,直接true就好了。

额外配置说明(可有可无)
1. start_join:这个参数是在启动的时候选择加入到哪个集群,但是官方推荐retry_join取代他,因为效果更好。
2. enable_syslog:启用则consul的日志会写进系统的syslog里,但是如果是在windows上配置改参数就会报错。
3. enable_script_checks:是否启用监控检测脚本,这里没有对consul集群做监控,略。

默认端口说明
1. 8300:consul agent服务relplaction、rpc(client-server)
2. 8301:lan gossip
3. 8302:wan gossip
4. 8500:http api及UI端口
5. 8600:DNS服务端口

启动consul-server

docker run -d \
--net=host \
--name consul \
-v /opt/platform/consul/config:/consul/config \
-v /opt/platform/consul/data:/consul/data \
consul agent

web访问
浏览器访问http://172.16.150.25:8500/ui
只要是server端开启了UI,任何一个server都能访问web界面

安装consul-client

创建calico配置文件:

mkdir -p /opt/platform/consul/config/ /opt/platform/consul/data
vim /opt/platform/consul/config/client.json
{
"datacenter": "xxx-test-consul",
"data_dir": "/consul/data",
"server": false,
"ui": false,
"bind_addr": "172.16.5.45",
"client_addr": "0.0.0.0",
"bootstrap_expect": 0,
"retry_join": ["172.16.150.25","172.16.150.26","172.16.150.27"],
"retry_interval": "10s",
"rejoin_after_leave": true,
"skip_leave_on_interrupt": true
}

这里client不需要开启UI及server,所以均为false,以及bootstrap_expect设为0不参与leader节点竞争。

  

启动consul-client

docker run -d \
--net=host \
--name consul \
-v /opt/platform/consul/config:/consul/config \
-v /opt/platform/consul/data:/consul/data \
consul agent

  

查看节点身份

docker exec consul consul info

  

问题解决:
通过浏览器访问http://172.29.150.202:8500/ui 发现某个node下已经删除的容器IP还存在,需要找到对应的node删除/opt/platform/consul/data下所有数据, 重启consul-client

安装consul的更多相关文章

  1. Consul1-window安装consul

    转自  https://blog.csdn.net/j903829182/article/details/80960802 consul下载地址: https://www.consul.io/down ...

  2. Centos安装Consul微服务

    一.简介 Consul([ˈkɒnsl],康搜)是注册中心,服务提供者.服务消费者等都要注册到Consul中,这样就可以实现服务提供者.服务消费者的隔离.除了Consul之外,还有Eureka.Zoo ...

  3. Docker安装Consul集群

    Docker 安装Consul集群 使用windows 环境,Docker desktop community 构建consul集群. 1.docker 容器网络 docker安装后,默认会创建三种网 ...

  4. 在Windows上安装 Consul

    使用Chocolatey(Windows包管理工具)安装 官方安装说明 https://chocolatey.org/install 安装Consul 官方安装说明 https://chocolate ...

  5. window安装consul

    安装consul 下载包: https://www.consul.io/ 解压 consul_1..2_windows_amd64.zip 复制 consul.exe 到 d:\soft\consul ...

  6. 安装Consul服务中心

    安装Consul服务中心 首先下载对应版本的安装程序.点击下载 我下载的是macOS64位版本,下载文件是一个ZIP文件,下载后解压缩到一个你喜欢的位置,以开发模式启动consul服务: #进入con ...

  7. windows下安装consul

    Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件, 由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行 ...

  8. Linux安装consul

    1.下载并解压consul # cd /opt/ # mkdir consul # chmod 777 consul #cd consul #wget https://releases.hashico ...

  9. 单机安装 consul ui 对外提供服务

    Consul 安装启动ui,外网无法访问,应为Consul 默认绑定127.0.0.1 ,所以外网无法访问. 通过设置 -client 参数来设置     consul agent -server - ...

  10. CentOS7安装Consul集群

    1.准备4台服务器 linux1 192.168.56.101 linux2 192.168.56.102 linux3 192.168.56.103 linux4 192.168.56.104 2. ...

随机推荐

  1. sql语句中where 1=1和 0=1 的作用

    sql where 1=1和 0=1 的作用   where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句. 一.不用where  1=1  在多条件查询中的 ...

  2. laravel 链式组合查询数据

    laravel 链式组合查询数据 一.总结 一句话总结: - 就是链式操作的基本操作,因为返回的都是一直可以进行链式操作的对象,所以我们接收返回的对象即可 - $result = DB::table( ...

  3. vga转HDMI与hdmi转VGA区别

  4. ORA-00054: 资源正忙 --锁表的解决方法

    问题描述 ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效 发生异常 原因:其他Session已经对目标表做了操作,且未提交操作,导致锁表,新的Session无法 ...

  5. selenium死活定位不到元素以及radio单选框点击不生效

    今天操作一个单选框浪费太多时间,现在其实很简单得东西,记录一下: 1,问题一,定位不到 如图,使用selenium IDE和xpath helper都试过,无法成功定位到这个单选框,实际上是因为,这个 ...

  6. JVM学习笔记之JDK、JRE、JVM的关系(二)

    JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库.Java Runtime Enviro ...

  7. 消息队列 RabbitMQ 入门介绍

    来源:http://ityen.com/archives/578 一.什么是RabbitMQ? RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系 ...

  8. router-link跳转页面传递参数及页面刷新方法

    使用router-link传参: 第一种: 路径:http://localhost:8080/goodListP?id=2 跳转的页面获取参数: this.$route.query.id 第二种: 路 ...

  9. vue导航菜单调用PHP后台数据

    数据库设计: 后台PHP输出所有菜单数据(index.php): <?phpheader("Access-Control-Allow-Origin:*");header(&q ...

  10. pyinstaller发布exe,弹出Failed to execute script main

    1.在PyCharm中按Alt+F12打开Terminal对话框 1.1我的项目文件放在wxpython目录下,D:\learn\Weather index insurance\wxpython> ...