Rancher下部署Consul集群


Rancher下部署Consul集群

环境

  1. Rancher版本V2.3.5
  2. Consul版本v1.7.1
  3. 部署节点:

    • consul-server-test-node1
    • consul-server-test-node2
    • consul-client-test-node1

部署consul-server-test-node1节点

设置服务名称,设置镜像

设置端口映射

常用端口说明:

  • 8500 http 端口,用于 http 接口和 web ui
  • 8300 server rpc 端口,同一数据中心 consul server 之间通过该端口通信
  • 8301 serf lan 端口,同一数据中心 consul client 通过该端口通信
  • 8302 serf wan 端口,不同数据中心 consul server 通过该端口通信
  • 8600 dns 端口,用于服务发现

数据持久化(可选)

数据默认存储路径为/consul/data,配置文件的默认存储路径为/consul/config

配置启动参数

agent指令是consul的核心,它运行agent来维护成员的重要信息、运行检查、服务宣布、查询处理等等

-server : 定义agent运行在server模式
-ui:运行 web 控制台
-bootstrap-expect :在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap共用
-bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,0.0.0.0 表示所有网口,如果不指定默认未127.0.0.1,则无法和容器通信
-node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名
-ui-dir: 提供存放web ui资源的路径,该目录必须是可读的
-rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。
-config-dir:配置文件目录,里面所有以.json结尾的文件都会被加载
-client:consul服务侦听地址,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1所以不对外提供服务,如果你要对外提供服务改成0.0.0.0

至此,node1节点已经部署完毕,因为Agent参数我们指定-bootstrap-expect 2集群至少两台服务器,才能选举集群leader。虽然节点已经运行起来李,但是会报错。我们进日志看下详细的信息。

可以看到node1节点已经正常运行,集群地址为10.42.2.182,记住这个IP,后面的server-node1节点和client节点都需要这个IP才能加入集群。同时我们看到集群一直在报[ERROR] agent: Coordinate update error: error="rpc error making call: No cluster leader"的错误,这是因为我们指定了集群至少两个节点才能选举leader。现在集群只有1个节点。所以才会报错。

这时通过IP+8500端口访问WebUI发现同样报错

部署consul-server-test-node2节点

consul-server-test-node2节点的部署参考consul-server-test-node1节点的部署过程,不通的是数据持久化挂在的目录以及启动命令。启动命令为agent -server -ui -bind=0.0.0.0 -retry-join 10.42.2.182。这里增加了-retry-join命令,是为了把当前节点加入到集群中。10.42.2.182为我们部署consul-server-test-node1后记录下来的集群地址。

部署完consul-server-test-node2节点,就可以通过WebUI看到有2个节点已经成功加入到集群中了

部署client节点

client节点的部署过程和server节点的部署基本一致,只需修改下启动命令,启动命令为agent -bind=0.0.0.0 -retry-join 10.42.4.182。IP10.42.2.182为集群地址。

至此Consul集群已经搭建完毕,通过WebUI可以集群已经有三个节点正常运行。

通过命令consul members查看集群状态,有2个server节点,1个client节点

常用命令:

consul members

members指令输出consul agent目前所知道的所有的成员以及它们的状态,节点的状态只有alive、left、failed三种状态。

  • -detailed:输出每个节点更详细的信息。
    例如:consul members -detailed
  • -rpc-addr:一个rpc地址,agent可以链接上来发送命令,如果没有指定,默认是127.0.0.1:8400。
  • -status:过滤出符合正则规则的节点

consul version

打印consul的版本

声明:初心|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Rancher下部署Consul集群


愿你勿忘初心,并从一而终