创建自定义网络
| sudo docker network create my-consul |
获取consul镜像
| sudo docker search consul |
| sudo docker pull consul |
创建consul服务器
| sudo docker run -d --name node1 -h node1 --net my-consul consul agent -server -bootstrap-expect 3 -datacenter dc001 |
-bootstrap-expect 在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap公用(推荐使用的方式)
获取node1的ip地址
| JOIN_IP="$(sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' node1)" |
JOIN_IP 设置节点1的ip,方便后面使用
继续创建其他服务器
| sudo docker run -d --name node2 -h node2 --net my-consul consul agent -server -join $JOIN_IP -datacenter=dc001 |
| sudo docker run -d --name node3 -h node3 --net my-consul consul agent -server -join=$JOIN_IP -datacenter=dc001 |
consul后的参数用等于或者空格都可以比如上面我写的-datacenter dc001
,这里我写的-datacenter=dc001
-server 此参数表明是创建服务器,不加就是创建客户端
启动consul客户端
| sudo docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp --name node4 -h node4 --net my-consul consul agent -ui -client=0.0.0.0 -join=$JOIN_IP -datacenter=dc001 |
-ui 在端口8500上启动Consul的Web UI
-client 将Consul的客户端绑定到指定ip,默认为127.0.0.1,这里设置为0.0.0.0,即不限制ip,让容器外也能访问到
更多参数
| -advertise:通知展现地址用来改变我们给集群中的其他节点展现的地址,默认情况下-bind地址就是展现地址,然而也存在一些路由地址是不能受约束的,这时候会激活一个不同的地址来供应,如果这个地址不能路由,这个路由将不能被加入集群 |
| |
| -bootstrap:用来控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader,在一个节点的模式下这种方式很重要,否则在集群中的一致性不能保证,不推荐在集群中应用这个标识 |
| |
| -bootstrap-expect:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap公用(推荐使用的方式) |
| |
| -bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0,这意味着Consulo会使用第一个可用的私有IP地址,Consul可以使用TCP和UDP并且可以使用共同的端口,如果存在防火墙,这两者协议必须是允许的。 |
| |
| -client:consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1,只允许回路连接。RPC地址用于Consul命令,比如Consul members可以查询当前运行的Consul代理 |
| |
| -config-file:明确的指定要加载哪个配置文件,文件下的所有配置会合并在一起进行加载 |
| |
| -config-dir:配置文件目录,里面所有以.json结尾的文件都会被加载 |
| |
| -data-dir:提供一个目录用来存放agent的状态,所有的agent允许都需要该目录,该目录必须是稳定的,系统重启后都继续存在 |
| |
| -dc:该标记控制agent运行的datacenter的名称,默认是dc1 |
| |
| -encrypt:指定secret key,使consul在通讯时进行加密,key可以通过consul keygen生成,同一个集群中的节点必须使用相同的key |
| |
| -http-port:HTTP API侦听端口,默认端口8500,可以在环境变量中进行设置,非常有用,可以用于与Consul进行通讯 |
| |
| -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。跟踪 调试 详情 警告 错误,可以通过Consul monitor使用任何级别,也可以通过重启加载新的配置级别 |
| |
| -node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名(代表一个机器) |
| |
| -pid-file:提供一个路径来存放pid文件,可以使用该文件进行SIGINT/SIGHUP(关闭/更新)agent |
| |
| -protocol:consul使用的协议版本 consul -v |
| |
| -rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。 |
| |
| -server:定义agent运行在server模式还是Client模式,提供时即为Server端,每个集群至少有一个server并且每台机器上不要超过5个dataceter.所有服务器采用一致性算法Raft保证数据一致,确保在故障的情况下的可用性。 |
| |
| -syslog:开启系统日志功能,只在linux/osx上生效 |
| |
| -ui-dir:提供存放web ui资源的路径,该目录必须是可读的 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?