Consul安装集群搭建
1 consul的安装和配置
1.1 consul agent 命令介绍
下载consul_1.0.0_linux_amd64.zip解压,里面只有一个consul可执行文件,其中,consul最常用到的命令是agent
输入consul agent -h 可以查看帮助。其中常见的参数解释如下:
-advertise:通知展现地址用来改变我们给集群中的其他节点展现的地址,一般情况下-bind地址就是展现地址
-bootstrap:用来控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader。
-bootstrap-expect:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap公用
-bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0
-client:consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1
-config-file:明确的指定要加载哪个配置文件
-config-dir:配置文件目录,里面所有以.json结尾的文件都会被加载
-data-dir:提供一个目录用来存放agent的状态,所有的agent允许都需要该目录,该目录必须是稳定的,系统重启后都继续存在
-dc:该标记控制agent允许的datacenter的名称,默认是dc1
-encrypt:指定secret key,使consul在通讯时进行加密,key可以通过consul keygen生成,同一个集群中的节点必须使用相同的key
-join:加入一个已经启动的agent的ip地址,可以多次指定多个agent的地址。如果consul不能加入任何指定的地址中,则agent会启动失败,默认agent启动时不会加入任何节点。
-retry-join:和join类似,但是允许你在第一次失败后进行尝试。
-retry-interval:两次join之间的时间间隔,默认是30s
-retry-max:尝试重复join的次数,默认是0,也就是无限次尝试
-log-level:consul agent启动后显示的日志信息级别。默认是info,可选:trace、debug、info、warn、err。
-node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名
-protocol:consul使用的协议版本
-rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。
-server:定义agent运行在server模式,每个集群至少有一个server,建议每个集群的server不要超过5个
-syslog:开启系统日志功能,只在linux/osx上生效
-ui-dir: 提供存放web ui资源的路径,该目录必须是可读的
-pid-file: 提供一个路径来存放pid文件,可以使用该文件进行SIGINT/SIGHUP(关闭/更新) agent
要想利用consul提供的服务实现服务的注册与发现,我们需要建立consul cluster。
在consul方案中,每个提供服务的节点上都要部署和运行consul的agent,所有运行consul agent节点的集合构成consul cluster。
consul agent有两种运行模式:server和client。这里的server和client只是consul集群层面的区分,与搭建在cluster之上的应用服务无关。
以server模式运行的consul agent节点用于维护consul集群的状态,官方建议每个consul cluster至少有3个或以上的运行在server mode的agent,client节点不限。
1.2 consul_1.0.0_linux_amd64安装
我们这里以安装三个节点为例,环境配置如下:
172.16.0.27 以server模式运行
172.16.0.26,192.168.1.72以client模式运行
1.2.1 配置consul
(三个节点依次按照下面的步骤配置consul)
将下载好的安装包上传到linux上,存放在/home/user/tools/cluster目录。
1) 把下载的consul_1.0.0_linux_amd64.zip文件解压
unzip -o -d ./ consul_1.0.0_linux_amd64.zip #解压到当前路径
2) 并把解压后的consul拷贝到/opt/consul目录,然后把/opt/consul目录加入到环境变量。(如果不是root用户,执行下面命名之前需要加上sudo)。
mkdir /opt/consul
cp consul /opt/consul
vim /etc/profile
加入:export PATH=/opt/consul:$PATH
source /etc/profile
1.2.2 运行
1:在172.16.0.27节点上面进行
cd /opt/consul
mkdir data
consul agent -server -bootstrap -bind=0.0.0.0 -client=172.16.0.27 -data-dir=data -ui -node=172.16.0.27
consul agent -server -bootstrap-expect 1 -data-dir data -config-dir /etc/consul.d
这样,就启动了一个server节点
2:在172.16.0.26节点上面进行
cd /opt/consul
sudo mkdir data
sudo consul agent -bind=0.0.0.0 -client=172.16.0.26 -data-dir=data -node=172.16.0.26 -join=172.16.0.27 -ui
如果linux系统的防火墙没关,可能会报下面的错,需要将server跟client的防火墙都关闭:
centos7系统:
#查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
firewall-cmd --state
使用如下命令关闭firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
3:在另一个linux服务节点上面进行
1.2.3 验证
全部节点启动完之后
访问http://172.16.0.27:8500/ 即可查看consul集群的管理页面
在任意节点执行consul members 即可查看集群节点信息。
这里在172.16.0.27节点执行
consul members -http-addr=”http://172.16.0.27:8500”
或者
consul members -http-addr=172.16.0.27:8500
也可用:
curl localhost:8500/v1/catalog/nodes
等同于浏览器访问http://172.16.0.27:8500/v1/catalog/nodes:
1.2.4 关闭节点
1、consul leave -http-addr=172.16.0.26:8500
2、停止agent服务,在第一个终端中,你可以使用ctrl-c来优雅的停止agent,如果你停止的是client,当你优雅的离开后,consul会通知集群中的其他成员你这个节点以及处于left状态。如果你是强制killed掉agent,集群中的其他成员会认为你是failed了。当成员leaves后,该成员的services和checks会从catalog被移除,当成员fails后,该成员的健康状态会被简单的标记为critical,但是不会从catalog删除。consul会自动的尝试链接failed的节点,这样允许节点在某些网络状况中恢复,如果节点是left状态,则不会再联系该节点。
之前版本中默认server的http端口是8400,次consul1.0的http是8500
http://172.16.0.26:8500/v1/agent/service/consul-provider-client1/
http://172.16.0.27:8500/ui/consul-provider-client2
1.3使用命令注册服务
1. 创建文件夹/etc/consul.d
.d代表有许多配置文件在里面
2. 将服务配置文件写入文件夹内
如 $ echo '{"service": {"name": "web", "tags": ["rails"], "port": 80}}' >/etc/consul.d/web.json
3. 重启consul,并将配置文件的路径给consul
$ consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -config-dir /etc/consul.d
4. 查询ip和端口
DNS方式:dig @127.0.0.1 -p 8600 web.service.consul SRV
Http方式:curl http://localhost:8500/v1/catalog/service/web
5. 更新
通过http api能对service配置文件增删改查,如果更新完成后,可以通过signup命令来生效
consul agent -server -bootstrap -bind=0.0.0.0 -client=172.16.0.27 -data-dir=data -ui -node=172.16.0.27 -config-dir /etc/consul.d
consul agent -server -bootstrap -bind=0.0.0.0 -client=172.16.0.27 -data-dir=data -ui -node=172.16.0.27 -config-dir /etc/consul.d
Issue:
如果在配置 Consul的时候,出现了下面错误:
==> Error decoding '/etc/consul.d/hwapp_web.json': invalid character 'ï' lookingfor beginning of value
错误的原因是文件编码问题,需要将 Encoding修改为ANSI编码(可以用 TXT修改)。
使用curl操作 K/V
consul还提供了键/值存储的功能。
如 查询 所有K/V
curl -v http://localhost:8500/v1/kv/?recurse
保存键为web/key2, flags 为42, 值为true的记录。
curl -X PUT -d 'test' http://localhost:8500/v1/kv/web/key2?flags=42
true
删除记录:
curl -X DELETE http://localhost:8500/v1/kv/web/sub?recurse
更新值:
curl -X PUT -d 'newval' http://localhost:8500/v1/kv/web/key1?cas=97
true
更新index:
curl "http://localhost:8500/v1/kv/web/key2?index=101&wait=5s"
结果:[{"CreateIndex":98,"ModifyIndex":101,"Key":"web/key2","Flags":42,"Value":"dGVzdA=="}]
转载:https://blog.csdn.net/u013719805/article/details/78843614
Consul安装集群搭建的更多相关文章
- consul分布式集群搭建
环境准备 三台机器: vm-a 10.200.110.90 centos7vm-b 10.200.110.91 centos7vm-c 10.200.110.93 ...
- consul分布式集群搭建&简单功能测试&故障恢复【h】
环境准备五台机器: 操作系统 IP Ubuntu 16.04.3 LTS x86_64 192.168.1.185 Ubuntu 16.10 x86_64 192.168.3.152 Ubuntu 1 ...
- Prometheus 通过 consul 分布式集群实现自动服务发现
转载自:https://cloud.tencent.com/developer/article/1611091 1.Consul 介绍 Consul 是基于 GO 语言开发的开源工具,主要面向分布式, ...
- 微服务Consul系列之集群搭建
在上一篇中讲解了Consul的安装.部署.基本的使用,使得大家有一个基本的了解,本节开始重点Consul集群搭建,官方推荐3-5台Server,因为在异常处理中,如果出现Leader挂了,只要有超过一 ...
- Ocelot+Consul 集群搭建实践
博客园已经有很多大神写过consul集群搭建了.大家都在玩,那我也不能托后退呢 不过自己研究下还是好的.毕竟每个人遇到的问题的不同 研究过才能说自己玩过consul,文章有部分名词解释是收集网络 Co ...
- 【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)
Oracle 11G RAC数据库安装(八) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...
- Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!)
Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!) 一.JDK的安装 安装位置都在同一位置(/usr/tools/jdk1.8.0_73) jdk的安装在克隆三台机器的时候可以提前安装 ...
- Hadoop集群搭建安装过程(二)(图文详解---尽情点击!!!)
Hadoop集群搭建安装过程(二)(配置SSH免密登录)(图文详解---尽情点击!!!) 一.配置ssh无密码访问 ®生成公钥密钥对 1.在每个节点上分别执行: ssh-keygen -t rsa(一 ...
- Hadoop集群搭建安装过程(一)(图文详解---尽情点击!!!)
Hadoop集群搭建(一)(上篇中讲到了Linux虚拟机的安装) 一.安装所需插件(以hadoop2.6.4为例,如果需要可以到官方网站进行下载:http://hadoop.apache.org) h ...
随机推荐
- 基于mosquitto的MQTT客户端实现C语言
在对MQTT的学习过程中 一下的内容对我提供了帮助 https://www.runoob.com/w3cnote/mqtt-intro.html 对MQTT的入门级介绍 很基础讲解了什么是MQTT h ...
- Mysql 为什么要选择 B+Tree
算法对比 二叉树 当我查找 8 的时候需要走五步 红黑树 当我查询8的时候需要四次 相对于二叉树有了一些优化 没有无限延伸.红黑树的深度会很深(深度不可控制) hash 数据量大的话 查询很快(不能范 ...
- HOOK 技术
在介绍 截获系统消息钩子 之前,这几个函数是密切相关的: SetWindowsHookEx() 介绍: 功能:将应用程序定义的挂钩过程安装到挂钩链中. 函数原型:HHOOK SetWindowsHoo ...
- Chrome常见黑客插件及用法
目录 0x00 Web Developer(网页开发者) 0x01 Firebug Lite for Google Chrome (Firebug精简版) 0x02 d3coder (decod ...
- opencv实践::对象提取与测量
问题描述 照片是来自太空望远镜的星云图像,科学家想知道它的面 积与周长. 解决思路 方法一: 通过二值分割+图像形态学+轮廓提取 #include <opencv2/opencv.hpp> ...
- Arduino学习笔记② Arduino语言基础
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- ESP8266开发之旅 网络篇⑧ SmartConfig——一键配网
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- CodeForces - 1214D B2. Books Exchange (hard version)
题目链接:http://codeforces.com/problemset/problem/1249/B2 思路:用并查集模拟链表,把关系串联起来,如果成环,则满足题意.之后再用并查集合并一个链,一个 ...
- vue 组件样式如何不影响全局
可以在 "style" 标签中添加 "scoped" 属性. <style scoped> .red { color: #f00; } </s ...
- python模块的导入详解
一:一个小问题:什么是模块? 我的理解是:有通用功能的文件的集合. 二:为什么要使用模块? 我们通常为了使自己以前写的东西保存下来,会把东西写入文件中保存下来,必要时我们把这些文件当脚本去执行,也可以 ...