首页> DevOps> 服务发现consul集群搭建

[文章]服务发现consul集群搭建

收藏
0 489 0

1.  环境准备

为了学习Consul提供的服务实现服务的注册与发现,我们需要建立Consul Cluster的测试集群方案,要搭建集群,其实很容易,每台服务器只要启动consul agent的命令,然后按照角色划分好serverclient即可。这边我们的测试部署计划是一个datacenter里包含2server

为了演示集群的搭建,我们准备四台测试的服务器:

环境

服务器IP

节点名称

Centos7.2

172.17.0.3

S1

Centos7.2

172.17.0.4

S2

分别在每个服务器上下载consul的软件包:


解压后,可以看到只有一个consul的二进制文件,我们移动到 /usr/local/bin目录下:


接着通过执行命令检查consul是否安装成功:



每个集群测试服务器安装consul后,可以开始集群的搭建。   

2.  启动consul服务

  执行命令:

  consul agent -server -bootstrap-expect 1 -data-dir /data/consul/ -node=s1 

  -bind=172.17.0.3  -rejoin -config-dir=/etc/consul.d/ -client 0.0.0.0

  上面的命令中,我们会使用到几个重要的参数:

    ·         server : 定义agent运行在server模式,如果是client模式则不需要添加这个参数

    ·         bootstrap-expect datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导(启动)整个集群,为了测试演示,我们这里使用1

    ·         bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0

    ·         node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名

    ·         rejoin:使consul忽略先前的离开,在agent再次启动后仍旧尝试加入集群中。也就是说如果不加入这个参数,当前节点一旦退出,下次重启后是不会自动加入到集群中去的,除非是手动触发 consul join xxxx ,所以为了降低重启后对本身服务的影响,这里统一使用 -rejoin参数。

    ·         config-dir:配置文件目录,里面文件统一规定是以.json结尾才会被自动加载并读取服务注册信息的

     ·         clientconsul服务侦听地址,处于client modeConsul agent节点比较简单,无状态,仅仅负责将请求转发给Server agent节点

当服务启动后,后台输出类似以下日志信息:
     

   

   跟s1类似,s2consul执行命令如下:

 

   consul agent -server  -data-dir /data/consul/ -node=s2 -bind=172.17.0.4  

             -rejoin -config-dir=/etc/consul.d/ -client 0.0.0.0

   当我们执行完上面的命令的时候,我们在s2的机器上查看下集群信息:

   


   这个时候,显示s2所在的集群中只有它自己本身,并没有发现之前我们启动的s1,回到s1那边看成员信息:


   


   从上面的现象可以了解到,s2启动后,并未自动加入之前的cluster,这个时

   候,需要手动对s2consul agent 进行加入,执行命令:

   consul join 172.17.0.3

   再执行consul members

  

   


     这样,无论s1或者是s2,当我们再次查看成员信息的时候,双方都分别发现到对方了。

  整个集群环境基本搭建完成了。

  下面可以通过web访问页面看到集群的节点信息:这里提供的另外一套集群环境的界面:

   

   

   






DevOps
最近热帖
{{item.Title}} {{item.ViewCount}}
近期热议
{{item.Title}} {{item.PostCount}}