安裝所需軟體
Docker
Docker-compose
配置docker-compose.yml檔案內容如下:
#load balancer will automatically update the config using consul-template
lb:
image: yeasy/nginx-consul-template:latest
hostname: lb
volumes:
- /usr/soft/consul/logapi.conf:/etc/consul-templates/nginx.conf
links:
- consulserver:consul
ports:
- "80:80"
consulserver:
image: gliderlabs/consul-server:latest
hostname: consulserver
ports:
- "8300:8300"
- "8301:8301"
- "8301:8301/udp"
- "192.168.190.131:8302:8302"
- "192.168.190.131:8302:8302/udp"
- "192.168.190.131:8400:8400"
- "192.168.190.131:8500:8500"
- "53:53/udp"
- "53:53"
command: -data-dir /tmp/consul -bootstrap -advertise 192.168.190.131
registrator:
image: gliderlabs/registrator:latest
hostname: registrator
links:
- consulserver:consul
volumes:
- "/var/run/docker.sock:/tmp/docker.sock"
command: consul://consul:8500
logapi:
image: logapi-1-0-app
environment:
SERVICE_80_NAME: http
SERVICE_NAME: logapi
SERVICE_TAGS: backend
ports:
- "60000"
Nginx模板檔案 /usr/soft/consul/logapi.conf內容如下:logapi名稱與docker-compose.yml檔案中logapi節點下的SERVICE_NAME名稱相同
upstream app {
{{range service "logapi"}}server {{.Address}}:{{.Port}} max_fails=3 fail_timeout=60 weight=1;
{{else}}server 127.0.0.1:65535; # force a 502{{end}}
}
server {
listen 80 default_server;
location / {
proxy_pass http://app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
轉到docker-compose.yml檔案所在目錄
執行sudo docker-compose up
檢視執行狀態
防火牆開啟相應埠
32860埠為logapi-1-0-app容器對應的埠號
sudo firewall-cmd --zone=public --add-port=8500/tcp --permanent
sudo firewall-cmd --zone=public --add-port=32861-33000/tcp --permanent
sudo firewall-cmd --reload
檢視網站內容返回如下:
{"status":1,"message":"","data":{"hostName":"fdbd2c30b6c4","ip":["172.17.0.2","172.17.0.2","172.17.0.2"]}}
開啟2個站點
sudo docker-compose scale logapi=2
再次訪問站點內容