1. 多台服务器部署
1.1 准备3台虚拟机
系统版本centos7,IP地址分别为
192.168.200.101
192.168.200.102
192.168.200.103
1.2 安装consul
3台虚拟机都安装consul
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum -y install consul
1.3 启动consul
提前创建consul数据目录
mkdir -p /usr/local/consul/data
101启动consul,作为leader
consul agent -server -bind=192.168.200.101 -client=0.0.0.0 -ui -bootstrap-expect=3 -data-dir=/usr/local/consul/data -node=server-01
102启动consul,加入到101
consul agent -server -bind=192.168.200.102 -client=0.0.0.0 -ui -data-dir=/usr/local/consul/data -node=server-02 -retry-join=192.168.200.101
103启动consul,加入到101
consul agent -server -bind=192.168.200.103 -client=0.0.0.0 -ui -data-dir=/usr/local/consul/data -node=server-03 -retry-join=192.168.200.101
访问 http://192.168.200.101:8500/
2. docker部署
需要提前安装docker和docker compose
2.1 拉取consul镜像
docker pull consul:1.15.4
2.2 启动consul
101启动consul
docker run -d --name=consul-server-01 --net=host consul:1.15.4 agent -server -client=0.0.0.0 -ui -bootstrap-expect=3 -node=server-01 -bind=192.168.200.101
102启动consul
docker run -d --name=consul-server-02 --net=host consul:1.15.4 agent -server -client=0.0.0.0 -node=server-02 -bind=192.168.200.102 -join=192.168.200.101
103启动consul
docker run -d --name=consul-server-03 --net=host consul:1.15.4 agent -server -client=0.0.0.0 -node=server-03 -bind=192.168.200.103 -join=192.168.200.101
3. docker compose部署
需要提前安装docker和docker compose
3.1 准备1台服务器
系统版本centos7,IP地址分别为 192.168.200.1003.2 创建consul目录
3.2 创建compose.yml
touch /docker/consul/compose.yml
修改compose.yml
name: consul
services:
consul1:
image: consul:1.15.4
command: >
consul agent -server
-bootstrap-expect=3
-node=consul1
-bind='{{ GetInterfaceIP "eth0" }}'
-client=0.0.0.0
-data-dir=/consul/data
-ui
ports:
- "8500:8500"
- "8300:8300"
- "8301:8301"
- "8302:8302"
- "8600:8600"
- "8600:8600/udp"
- "8301:8301/udp"
- "8302:8302/udp"
volumes:
- ./data/consul1:/consul/data
restart: always
networks:
consul_net:
ipv4_address: 172.20.0.2
consul2:
image: consul:1.15.4
command: >
consul agent -server
-node=consul2
-bind='{{ GetInterfaceIP "eth0" }}'
-client=0.0.0.0
-retry-join=172.20.0.2
-data-dir=/consul/data
-ui
ports:
- "18500:8500"
- "18300:8300"
- "18301:8301"
- "18302:8302"
- "18600:8600"
- "18600:8600/udp"
- "18301:8301/udp"
- "18302:8302/udp"
volumes:
- ./data/consul2:/consul/data
restart: always
depends_on:
- consul1
networks:
consul_net:
ipv4_address: 172.20.0.3
consul3:
image: consul:1.15.4
command: >
consul agent -server
-node=consul3
-bind='{{ GetInterfaceIP "eth0" }}'
-client=0.0.0.0
-retry-join=172.20.0.2
-data-dir=/consul/data
-ui
ports:
- "28500:8500"
- "28300:8300"
- "28301:8301"
- "28302:8302"
- "28600:8600"
- "28600:8600/udp"
- "28301:8301/udp"
- "28302:8302/udp"
volumes:
- ./data/consul3:/consul/data
restart: always
depends_on:
- consul1
networks:
consul_net:
ipv4_address: 172.20.0.4
networks:
consul_net:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/24
这里每个服务的网络不设置ip地址也可以自动加入集群
3.3 启动consul
进入 /docker/consul 目录,启动consul
cd /docker/consul
docker compose up -d
访问 http://192.168.200.100:8500/