安装consul
概述
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的更多相关文章
- Consul1-window安装consul
转自 https://blog.csdn.net/j903829182/article/details/80960802 consul下载地址: https://www.consul.io/down ...
- Centos安装Consul微服务
一.简介 Consul([ˈkɒnsl],康搜)是注册中心,服务提供者.服务消费者等都要注册到Consul中,这样就可以实现服务提供者.服务消费者的隔离.除了Consul之外,还有Eureka.Zoo ...
- Docker安装Consul集群
Docker 安装Consul集群 使用windows 环境,Docker desktop community 构建consul集群. 1.docker 容器网络 docker安装后,默认会创建三种网 ...
- 在Windows上安装 Consul
使用Chocolatey(Windows包管理工具)安装 官方安装说明 https://chocolatey.org/install 安装Consul 官方安装说明 https://chocolate ...
- window安装consul
安装consul 下载包: https://www.consul.io/ 解压 consul_1..2_windows_amd64.zip 复制 consul.exe 到 d:\soft\consul ...
- 安装Consul服务中心
安装Consul服务中心 首先下载对应版本的安装程序.点击下载 我下载的是macOS64位版本,下载文件是一个ZIP文件,下载后解压缩到一个你喜欢的位置,以开发模式启动consul服务: #进入con ...
- windows下安装consul
Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件, 由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行 ...
- Linux安装consul
1.下载并解压consul # cd /opt/ # mkdir consul # chmod 777 consul #cd consul #wget https://releases.hashico ...
- 单机安装 consul ui 对外提供服务
Consul 安装启动ui,外网无法访问,应为Consul 默认绑定127.0.0.1 ,所以外网无法访问. 通过设置 -client 参数来设置 consul agent -server - ...
- 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. ...
随机推荐
- HTML/HTML5 知识点思维导图
1 - 浏览器 | 浏览器页面构成 2 - 浏览器 | 浏览器内核相关知识点 3 - W3C | 对WEB标准以及W3C的理解与认识? 4 - 标签 | Doctype相关知识点 5 - 标签 | m ...
- Linux-常用shell简介及shell基本操作
1.查询shell环境变量,切换shell种类 表明目前使用的shell种类是bash. 要想改变shell种类,在终端输入想要运行的shell名称即可.在切换shell种类的过程中,可能会操 ...
- 使用<bind>元素创建变量
在使用模糊查询sql时,如果使用${}进行字符拼接,无法防止sql诸如问题,如果使用concat函数则只对mysql有效果,用Oracle则需要用连接符||,这样在数据库变的时候需要修改,不利于移植. ...
- Windows Server 2012R2 部署 Domain Controller
1. Create a machine as Domain Controller; 2. Change DNS server address as 127.0.0.1; 3. Change Compu ...
- SpringCloud(五)之Spring Cloud 中 Feign结合Hystrix断路器开发实战
1.先讲hystrx(断路器) 在springcloub 中的使用 1.1 加入依赖 注意:网上新旧版本问题,所以要以官网为主,不然部分注解会丢失最新版本 2.0 <dependency> ...
- TP5连接数据库和phpstrom连接数据库(宝塔面板数据库连接)
1.编译器:phpstrom 框架:TP5 服务器面板:宝塔面板 2.我遇到的核心问题:数据库.用户名.密码均正确但是无法连接, 使用宝塔面板的都知道phpmyadmin的端口号是888,注意注意这个 ...
- mybatis之动态SQL操作之查询
1) 查询条件不确定,需要根据情况产生SQL语法,这种情况叫动态SQL /** * 持久层 * @author AdminTC */ public class StudentDao { /** * ...
- HttpURLConnection断点下载
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...
- Java相关框架概念以及思想
1.什么是IoC Ioc—Inversion of Control,即“控制反转”,是一种思想, 一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合.更优良的程序. 高内聚低耦合的设计能够让构 ...
- C#创建windows服务(一:初识windows服务)
一 . 服务简介 Microsoft Windows 服务(过去称为 NT 服务)允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序. 这些服务可在计算机启动时自动启动,可以暂 ...