部署集群要求server 数量>=3,client若干 server用于数据持久化与同步 client用于服务发现与转发

环境

服务器1:192.168.4.200
部署内容:consul-server、consul-agent
服务器2:192.168.4.202
部署内容:consul-server、consul-agent
服务器3:192.168.4.203
部署内容:consul-server、consul-agent

集群部署

三台服务器上准备docker及docker-compose,启动时先启动server、再启动client;server的启动需要先启动主节点
1、需要先启动一台server作为leader,以服务器2为例

  1. version: '3.1'
  2. networks:
  3. consul:
  4. services:
  5. consul-agent: &consul-agent
  6. container_name: consul-agent
  7. image: consul:1.7.14
  8. restart: always
  9. network_mode: "host"
  10. command: "agent -retry-join 192.168.4.202 -client 0.0.0.0"
  11. volumes:
  12. - ./consul/consul-agent/config/consul-config.json:/consul/config/config.json
  13. - ./consul/consul-agent/data:/consul/data
  14. consul-server:
  15. container_name: consul-server
  16. <<: *consul-agent
  17. network_mode: "host"
  18. command: "agent -server -node server-202 -bootstrap-expect 3 -advertise 192.168.4.202 -ui -client 0.0.0.0"
  19. #主 "agent -server -bootstrap-expect 3 -advertise 192.168.4.202 -ui -client 0.0.0.0"
  20. # 从 "agent -server -retry-join 192.xxx.xxx.xxx(主ip) -advertise 192.xxx.xxx.xxx -ui -client 0.0.0.0"
  21. volumes:
  22. - ./consul/consul-server/config/consul-config.json:/consul/config/config.json
  23. - ./consul/consul-server/data:/consul/data

2、服务器1:

  1. version: '3.1'
  2. networks:
  3. consul:
  4. services:
  5. consul-agent: &consul-agent
  6. container_name: consul-agent
  7. image: consul:1.7.14
  8. restart: always
  9. network_mode: "host"
  10. command: "agent -retry-join 192.168.4.202 -client 0.0.0.0"
  11. volumes:
  12. - ./consul/consul-agent/config/consul-config.json:/consul/config/config.json
  13. - ./consul/consul-agent/data:/consul/data
  14. consul-server:
  15. container_name: consul-server
  16. <<: *consul-agent
  17. network_mode: "host"
  18. command: "agent -server -node server-200 -join 192.168.4.202 -advertise 192.168.4.200 -ui -client 0.0.0.0"
  19. #主 "agent -server -bootstrap-expect 3 -advertise 192.168.4.202 -ui -client 0.0.0.0"
  20. # 从 "agent -server -retry-join 192.xxx.xxx.xxx(主ip) -advertise 192.xxx.xxx.xxx -ui -client 0.0.0.0"
  21. volumes:
  22. - ./consul/consul-server/config/consul-config.json:/consul/config/config.json
  23. - ./consul/consul-server/data:/consul/data

3、服务器3:

  1. version: '3.1'
  2. networks:
  3. consul:
  4. services:
  5. consul-agent: &consul-agent
  6. container_name: consul-agent
  7. image: consul:1.7.14
  8. restart: always
  9. network_mode: "host"
  10. command: "agent -retry-join 192.168.4.202 -client 0.0.0.0"
  11. volumes:
  12. - ./consul/consul-agent/config/consul-config.json:/consul/config/config.json
  13. - ./consul/consul-agent/data:/consul/data
  14. consul-server:
  15. container_name: consul-server
  16. <<: *consul-agent
  17. network_mode: "host"
  18. command: "agent -server -node server-203 -join 192.168.4.202 -advertise 192.168.4.203 -ui -client 0.0.0.0"
  19. #主 "agent -server -bootstrap-expect 3 -advertise 192.168.4.202 -ui -client 0.0.0.0"
  20. # 从 "agent -server -retry-join 192.xxx.xxx.xxx(主ip) -advertise 192.xxx.xxx.xxx -ui -client 0.0.0.0"
  21. volumes:
  22. - ./consul/consul-server/config/consul-config.json:/consul/config/config.json
  23. - ./consul/consul-server/data:/consul/data