bash
docker swarm init --advertise-addr <MANAGER-IP>
bash
docker swarm join --token <TOKEN> <MANAGER-IP>:2377
docker service create --name web --replicas 5 -p 80:80 nginx
docker service create --name web --replicas 3 --publish published=8080,target=80 nginx
示例nginx.conf
配置:
upstream backend {
server web1:80;
server web2:80;
server web3:80;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
示例配置:
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server server1 web1:80 check
server server2 web2:80 check
server server3 web3:80 check
docker run --name mysql-master -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7 --server-id=1 --log-bin=mysql-bin --binlog-format=ROW
docker run --name mysql-slave --link mysql-master:master -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7 --server-id=2 --log-bin=mysql-bin --binlog-format=ROW --relay-log=mysql-relay-bin --log-slave-updates=1 --read-only=1
docker run --name mongo1 -d mongo --replSet rs0
docker run --name mongo2 -d mongo --replSet rs0
docker run --name mongo3 -d mongo --replSet rs0
docker service create --name health-check --health-cmd "curl -f http://localhost || exit 1" --health-interval=5s --health-retries=3 nginx
示例docker-compose.yml
片段:
version: '3'
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
bash
docker service update --update-parallelism 2 --update-delay 10s web
bash
docker service create --name limited --limit-cpu 0.5 --limit-memory 512M nginx
bash
docker network create --driver overlay my-network
# 初始化Swarm
docker swarm init
# 创建覆盖网络
docker network create --driver overlay mynet
# 部署MySQL主从
docker service create --name mysql-master --network mynet -e MYSQL_ROOT_PASSWORD=password mysql:5.7 --server-id=1 --log-bin=mysql-bin --binlog-format=ROW
# 部署Web服务
docker service create --name web --network mynet --replicas 5 -e DB_HOST=mysql-master my-web-app
# 部署Nginx负载均衡器
docker service create --name nginx --network mynet --publish published=80,target=80 --mount type=bind,source=/path/to/nginx.conf,target=/etc/nginx/nginx.conf nginx
通过以上配置,您可以构建一个具有高可用性和负载均衡能力的Docker化应用架构。根据实际需求,您可能需要调整副本数量、负载均衡算法或监控配置。