Consul集群搭建

2019-07-30  本文已影响0人  雨落千木的时节
  1. 介绍
    Consul和Eureka一样也可以用来做注册中心, 但是Consul不同于Eureka,Consul包含多个组件,使用go语言开发,包含以下功能:
    (1)服务发现
    (2)健康检查
    (3)Key/Value存储
    (4)多数据中心
    Consul官网:https://www.consul.io

整体架构如下:


微信截图_20190729192611.png

一个Consul集群可以有多个数据中心,每个数据中心运行一个Consul Server集群,server数目一般在3-5个,因为Consul是强一致性的,server的数目太多在同步数据的时候会产生性能问题。client的数目没有限制,可以成千上万个。

  1. 集群搭建
    (1)首先去官网下载consul安装包并解压即可安装consul
wget https://releases.hashicorp.com/consul/1.5.3/consul_1.5.3_linux_amd64.zip
unzip consul_1.5.3_linux_amd64.zip

(2)将解压后的consul文件移动到/usr/local/bin目录下,执行consul命令查看安装情况

mv consul /usr/loca/bin
consul
微信截图_20190730102135.png

(3)修改环境变量使consul安装永久生效

vim /etc/profile
#在最后一行添加:
export PATH=$PATH:/usr/local/bin
#保存后执行
source /etc/profile

(4)启动集群
准备3台节点服务器:
192.168.203.130 consul1
192.168.203.131 consul2
192.168.203.132 consul3

启动consul1

nohup consul agent -server -bootstrap-expect 3 -bind=192.168.203.130 -client=0.0.0.0 -data-dir=/home/consul/data -node=consul1 -ui >> /home/consul/logs/consul.log 2>&1

参数介绍:
server:定义agent以server的身份启动
bootstrap-expect: 一个数据中心中,集群要求的server的数量,当少于这个数量的时候,集群不生效
bind:监听的ip地址,用来在集群内部通信(集群内部的所有节点都是可达的,默认为:0.0.0.0)
client:客户端地址
node:节点id,同一集群中不能重复,默认是节点主机名
data-dir:数据存放目录
ui:启动web客户端

启动另外两个节点(192.168.203.131,192.168.203.132):

nohup consul agent -server -bootstrap-expect 3 -bind=192.168.203.131 -client=0.0.0.0 -data-dir=/home/consul/data -node=consul2 -ui >> /home/consul/logs/consul.log 2>&1

nohup consul agent -server -bootstrap-expect 3 -bind=192.168.203.132 -client=0.0.0.0 -data-dir=/home/consul/data -node=consul3 -ui >> /home/consul/logs/consul.log 2>&1

分别将consul2,consul3加入到集群中

#在192.168.203.131,192.168.203.132上执行如下命令:
consul join 192.168.203.130

至此整个集群搭建完成,执行consul operator raft list-peers
命令查看集群状态,如下图


微信截图_20190730140433.png

遇到的坑:
在执行consul join 192.168.203.130时会遇到如下错误:
Failed to join 192.168.203.130:dial tcp 192.168.203.130:8301:connect:no route to host
解决办法:
分别将8301,8300,8500端口加入防火墙就好了

firewall-cmd --zone=public --add-port=8301/tcp --permanent
#必须添加,否则重启之后会失效
firewall-cmd --reload    

(5)web页面查看

微信截图_20190730102002.png
上一篇下一篇

猜你喜欢

热点阅读