Subscribe
池塘🐟
Search
Sign up
php
laravel
mysql
docker
redis
rabbitmq
go
js
其他
docker安装consul详细教程
``` 拉取镜像 sudo docker pull consul ``` `` 搭建单节点集群 `` ``` 启动节点1(server模式) docker run -d --name node1 --net=host -e'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' consul agent -server -bind=172.17.0.17 -bootstrap-expect=1 -client=0.0.0.0 -ui ``` `` 搭建三节点集群 `` ``` 启动第一个节点的时候没有使用了 -bootstrap 参数, 而是使用了 -bootstrap-expect 3, 使用这个参数节点会等到所有三个端都连接到一起了才会启动并且成为一个可用的cluster。 docker run -d -p 8500:8500 -e CONSUL_BIND_INTERFACE='eth0' --name=node1 consul agent -server -bootstrap-expect=3 -ui -node=1 -client='0.0.0.0' 查看节点IP: JOIN_IP="$(docker inspect -f '{{ .NetworkSettings.IPAddress }}' consul_server_1)" 也可以直接查看container的IP,如下命令: docker inspect -f '{{ .NetworkSettings.IPAddress }}' consul_server_1 启动第二个节点: 启动 node2并且告诉他通过 $JOIN_IP 加入到 node1(本次安装时容器ip:172.18.0.3): docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=node2 consul agent -server -node=2 -join='172.18.0.3' 启动第三个节点: 按照同样的方法我们启动 node3: docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=node3 consul agent -server -node=3 -join='172.18.0.3' # 启动完第三个节点才会选举leader,这个时候访问ui界面便可正常 现在我们就有了一个拥有3个节点的运行在一台机器上的集群。注意,根据Consul Agent的名字给container起了名字。 我们没有暴露出任何一个端口用以访问这个集群, 但是我们可以使用第四个agent节点以client的模式(不是用 -server参数)。这意味着他不参与选举但是可以和集群交互。而且这个client模式的agent也不需要磁盘做持久化。 docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=node4 consul agent -client -node=4 -join='172.18.0.3' -client='0.0.0.0' docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=node5 consul agent -client -node=5 -join='172.18.0.3' -client='0.0.0.0' docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=node6 consul agent -client -node=6 -join='172.18.0.3' -client='0.0.0.0' # 到此,集群部署完成 ``` `` 参数说明 `` CONSUL_BIND_INTERFACE是consul镜像提供给我们的几个常用的环境变量,该常量与-bind作用相同。 name:为启动的节点命名 node:为起订的节点赋值一个id agent:表示启动 Agent 进程。 server:表示启动Consul Server 模式。 join:表示加入到某一个集群中去。 –net=host docker参数, 使得docker容器越过了netnamespace的隔离,免去手动指定端口映射的步骤 -server consul支持以server或client的模式运行, server是服务发现模块的核心, client主要用于转发请求 -advertise 将本机私有IP传递到consul -bootstrap-expect 指定consul将等待几个节点连通,成为一个完整的集群 -retry-join 指定要加入的consul节点地址,失败会重试, 可多次指定不同的地址 -client consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1 -bind 该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0 -allow_stale 设置为true, 表明可以从consul集群的任一server节点获取dns信息, false则表明每次请求都会经过consul server leader --name DOCKER容器的名称 -client 0.0.0.0 表示任何地址可以访问。 -ui 提供图形化的界面。 http://127.0.0.1:8500 访问控制面板 #### 参考地址 [https://blog.csdn.net/qq_49723651/article/details/123134918](https://blog.csdn.net/qq_49723651/article/details/123134918) #### docker-compose启动 https://www.cnblogs.com/shanfeng1000/p/15136682.html
提交评论
提交