docker安装consul集群

单机版:

# docker run -d --name=consul01 --net=host consul:latest agent -server -bind=192.168.18.129 -client=0.0.0.0 -node=consul_Server1 -bootstrap-expect=1 -ui
# docker run -d --name=consul01 --net=host -v /opt/consul/data/data01:/consul/data -v /opt/consul/logs:/consul/logs consul:latest agent -server -bind=192.168.18.129 -client=0.0.0.0 -bootstrap-expect=1 -ui -node=consul-01 -data-dir=/consul/data -log-file=/consul/logs

 

集群搭建开始:

#创建docker网络, 地址段:172.30.0.0/24
# docker network create   --driver overlay   --subnet 172.30.0.0/24 --attachable mynetwork

 

#创建consul容器时,指定mynetwork网络,及ip地址
# docker run -d --name=consul-01 --net=mynetwork -p 8500:8500 --ip 172.30.0.10 -v /opt/consul/data/data01:/consul/data -v /opt/consul/logs/log01:/consul/logs consul:latest agent -server -bind=172.30.0.10 -client=0.0.0.0 -bootstrap-expect=3 -ui -node=consul-01 -data-dir=/consul/data -log-file=/consul/logs

#加入节点2:consul-02节点服务
# docker run -d --name=consul-02 --net=mynetwork -p 8600:8500 --ip 172.30.0.12 -v /opt/consul/data/data02:/consul/data -v /opt/consul/logs/log02:/consul/logs consul:latest agent -server -bind=172.30.0.12 -client=0.0.0.0 -retry-join=172.30.0.10 -bootstrap-expect=3 -ui -node=consul-02 -data-dir=/consul/data -log-file=/consul/logs

#加入节点3:consul-03节点
# docker run -d --name=consul-03 --net=mynetwork -p 8700:8500 --ip 172.30.0.13 -v /opt/consul/data/data03:/consul/data -v /opt/consul/logs/log03:/consul/logs consul:latest agent -server -bind=172.30.0.13 -client=0.0.0.0 -retry-join=172.30.0.10 -bootstrap-expect=3 -ui -node=consul-03 -data-dir=/consul/data -log-file=/consul/logs

#查看consul节点情况:
# docker exec -t consul-01 consul members

docker运行参数说明: 

    -d: docker后台运行;

    --name: docker容器命名,可不设置,默认随机名称;

   --net: 知道docker内部网络,默认有bridge、host等,通过 # docker  network  ls  命令查看;

   -p: 对外暴露接口,查看consul监控地址暴露8500端口,其他端口请参考: https://www.consul.io/docs/install/ports.html 

    --ip: 指定mynetwork网络ip,这样在同一台服务器docker容器内地址不冲突,可以创建多个consul容器;

    -v: 容器挂载目录映射;

 

consul运行命令说明:

  1. -advertise:通知展现地址用来改变我们给集群中的其他节点展现的地址,一般情况下-bind地址就是展现地址
  2. -bootstrap:用来控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader。
  3. -bootstrap-expect:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap公用。
  4. -bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0。
  5. -client:consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1。
  6. -config-file:明确的指定要加载哪个配置文件
  7. -config-dir:配置文件目录,里面所有以.json结尾的文件都会被加载
  8. -data-dir:提供一个目录用来存放agent的状态,所有的agent都需要该目录,该目录必须是稳定的,系统重启后都继续存在。
  9. -dc:该标记控制agent的datacenter的名称,默认是dc1。
  10. -encrypt:指定secret key,使consul在通讯时进行加密,key可以通过consul keygen生成,同一个集群中的节点必须使用相同的key。
  11. -join:加入一个已经启动的agent的ip地址,可以多次指定多个agent的地址。如果consul不能加入任何指定的地址中,则agent会启动失败。默认agent启动时不会加入任何节点。
  12. -retry-join:和join类似,但是允许你在第一次失败后进行尝试。
  13. -retry-interval:两次join之间的时间间隔,默认是30s。
  14. -retry-max:尝试重复join的次数,默认是0,也就是无限次尝试。
  15. -log-level:consul agent启动后显示的日志信息级别。默认是info,可选:trace、debug、info、warn、err。
  16. -node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名。
  17. -protocol:consul使用的协议版本。
  18. -rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。
  19. -server:定义agent运行在server模式,每个集群至少有一个server,建议每个集群的server不要超过5个。
  20. -syslog:开启系统日志功能,只在linux/osx上生效。
  21. -ui-dir:提供存放web ui资源的路径,该目录必须是可读的。
  22. -pid-file:提供一个路径来存放pid文件,可以使用该文件进行SIGINT/SIGHUP(关闭/更新)agent。

    consul配置文件json:

 

  1. acl_datacenter:只用于server,指定的datacenter的权威ACL信息,所有的servers和datacenter必须同意ACL datacenter
  2. acl_default_policy:默认是allow。
  3. acl_token:agent会使用这个token和consul server进行请求。
  4. acl_ttl:控制TTL的cache,默认是30s。
  5. addresses:一个嵌套对象,可以设置以下key:dns、http、rpc。
  6. advertise_addr:等同于-advertise。
  7. bootstrap:等同于-bootstrap。
  8. bootstrap_expect:等同于-bootstrap-expect。
  9. bind_addr:等同于-bind。
  10. ca_file:提供CA文件路径,用来检查客户端或者服务端的链接。
  11. cert_file:必须和key_file一起。
  12. client_addr:等同于-client。
  13. datacenter:等同于-dc。
  14. data_dir:等同于-data-dir。
  15. disable_anonymous_signature:在进行更新检查时禁止匿名签名。
  16. disable_remote_exec:禁止支持远程执行,设置为true,agent会忽视所有进入的远程执行请求。
  17. disable_update_check:禁止自动检查安全公告和新版本信息。
  18. dns_config:是一个嵌套对象,可以设置以下参数:allow_stale、max_stale、node_ttl 、service_ttl、enable_truncate。
  19. domain:默认情况下consul在进行DNS查询时查询的是consul域,可以通过该参数进行修改。
  20. enable_debug:开启debug模式。
  21. enable_syslog:等同于-syslog。
  22. encrypt:等同于-encrypt。
  23. key_file:提供私钥的路径。
  24. leave_on_terminate:默认是false,如果为true,当agent收到一个TERM信号的时候,它会发送leave信息到集群中的其他节点上。
  25. log_level:等同于-log-level。
  26. node_name:等同于-node。
  27. ports:这是一个嵌套对象,可以设置以下key:dns(dns地址:8600)、http(http api地址:8500)、rpc(rpc:8400)、serf_lan(lan port:8301)、serf_wan(wan port:8302)、server(server rpc:8300)。
  28. protocol:等同于-protocol。
  29. rejoin_after_leave:等同于-rejoin。
  30. retry_join:等同于-retry-join。
  31. retry_interval:等同于-retry-interval。
  32. server:等同于-server。
  33. server_name:会覆盖TLS CA的node_name,可以用来确认CA name和hostname相匹配。
  34. skip_leave_on_interrupt:和leave_on_terminate比较类似,不过只影响当前句柄。
  35. start_join:一个字符数组提供的节点地址会在启动时被加入。
  36. syslog_facility:当enable_syslog被提供后,该参数控制哪个级别的信息被发送,默认Local0。
  37. ui_dir:等同于-ui-dir。
  38. verify_incoming:默认false,如果为true,则所有进入链接都需要使用TLS,需要客户端使用ca_file提供ca文件。只用于consul server端,因为client从来没有进入的链接。
  39. verify_outgoing:默认false,如果为true,则所有出去链接都需要使用TLS,需要服务端使用ca_file提供ca文件,consul server和client都需要使用,因为两者都有出去的链接。
  40. watches:watch一个详细名单。

   参考地址:

        consul文档: https://www.consul.io/docs/agent/options.html

        docker官网: https://docs.docker.com/samples/library/consul/#exposing-consuls-dns-server-on-port-53 

        博客地址:https://blog.reunicode.com/2018/04/10/19/40/79/

                          https://my.oschina.net/jiaozide/blog/321111

                          https://www.hi-linux.com/posts/28048.html

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值