Add make command for running the app in an HA topology (#16702)
* Add make command for running the app in an HA topology * Tidy up conf files, remove unnecessary commands and add restart-haserver command * Use the right flag for checking enterprise folder presence before ha setup
Этот коммит содержится в:
16
Makefile
16
Makefile
@@ -1,4 +1,4 @@
|
||||
.PHONY: build package run stop run-client run-server stop-client stop-server restart restart-server restart-client start-docker clean-dist clean nuke check-style check-client-style check-server-style check-unit-tests test dist prepare-enteprise run-client-tests setup-run-client-tests cleanup-run-client-tests test-client build-linux build-osx build-windows internal-test-web-client vet run-server-for-web-client-tests diff-config prepackaged-plugins prepackaged-binaries test-server test-server-ee test-server-quick test-server-race start-docker-check
|
||||
.PHONY: build package run stop run-client run-server run-haserver stop-client stop-server restart restart-server restart-client restart-haserver start-docker clean-dist clean nuke check-style check-client-style check-server-style check-unit-tests test dist prepare-enteprise run-client-tests setup-run-client-tests cleanup-run-client-tests test-client build-linux build-osx build-windows internal-test-web-client vet run-server-for-web-client-tests diff-config prepackaged-plugins prepackaged-binaries test-server test-server-ee test-server-quick test-server-race start-docker-check
|
||||
|
||||
ROOT := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
|
||||
|
||||
@@ -156,6 +156,13 @@ ifneq (,$(findstring openldap,$(ENABLED_DOCKER_SERVICES)))
|
||||
endif
|
||||
endif
|
||||
|
||||
run-haserver: run-client
|
||||
ifeq ($(BUILD_ENTERPRISE_READY),true)
|
||||
@echo Starting mattermost in an HA topology
|
||||
|
||||
docker-compose -f docker-compose.yaml up haproxy
|
||||
endif
|
||||
|
||||
stop-docker: ## Stops the docker containers for local development.
|
||||
ifeq ($(MM_NO_DOCKER),true)
|
||||
@echo No Docker Enabled: skipping docker stop
|
||||
@@ -473,6 +480,13 @@ restart: restart-server restart-client ## Restarts the server and webapp.
|
||||
|
||||
restart-server: | stop-server run-server ## Restarts the mattermost server to pick up development change.
|
||||
|
||||
restart-haserver:
|
||||
@echo Restarting mattermost in an HA topology
|
||||
|
||||
docker-compose restart follower
|
||||
docker-compose restart leader
|
||||
docker-compose restart haproxy
|
||||
|
||||
restart-client: | stop-client run-client ## Restarts the webapp.
|
||||
|
||||
run-job-server: ## Runs the background job server.
|
||||
|
||||
35
build/docker/nginx/default.conf
Обычный файл
35
build/docker/nginx/default.conf
Обычный файл
@@ -0,0 +1,35 @@
|
||||
upstream app_cluster {
|
||||
server leader:8065 fail_timeout=5s max_fails=10;
|
||||
server follower:8065 fail_timeout=5s max_fails=10;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 8065;
|
||||
|
||||
location ~ /api/v[0-9]+/(users/)?websocket$ {
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
client_max_body_size 50M;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Frame-Options SAMEORIGIN;
|
||||
proxy_buffers 256 16k;
|
||||
proxy_buffer_size 16k;
|
||||
proxy_read_timeout 600s;
|
||||
proxy_pass http://app_cluster;
|
||||
}
|
||||
|
||||
location / {
|
||||
client_max_body_size 50M;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Frame-Options SAMEORIGIN;
|
||||
proxy_pass http://app_cluster;
|
||||
}
|
||||
}
|
||||
@@ -74,6 +74,73 @@ services:
|
||||
- elasticsearch
|
||||
command: postgres:5432 mysql:3306 minio:9000 inbucket:10080 openldap:389 elasticsearch:9200
|
||||
|
||||
leader:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./build/Dockerfile.buildenv
|
||||
working_dir: '/home/mattermost-server'
|
||||
environment:
|
||||
- "MM_SQLSETTINGS_DATASOURCE=postgres://mmuser:mostest@postgres/mattermost_test?sslmode=disable\u0026connect_timeout=10"
|
||||
- "MM_NO_DOCKER=true"
|
||||
- "RUN_SERVER_IN_BACKGROUND=false"
|
||||
networks:
|
||||
- mm-test
|
||||
depends_on:
|
||||
- start_dependencies
|
||||
volumes:
|
||||
- './:/home/mattermost-server'
|
||||
- './../mattermost-webapp:/home/mattermost-webapp'
|
||||
- './../enterprise:/home/enterprise'
|
||||
restart: on-failure
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://leader:8065/api/v4/system/ping"]
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 30
|
||||
command: ['make', 'run-server']
|
||||
expose:
|
||||
- "8065"
|
||||
|
||||
follower:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./build/Dockerfile.buildenv
|
||||
working_dir: '/home/mattermost-server'
|
||||
environment:
|
||||
- "MM_SQLSETTINGS_DATASOURCE=postgres://mmuser:mostest@postgres/mattermost_test?sslmode=disable\u0026connect_timeout=10"
|
||||
- "MM_NO_DOCKER=true"
|
||||
- "RUN_SERVER_IN_BACKGROUND=false"
|
||||
networks:
|
||||
- mm-test
|
||||
depends_on:
|
||||
- leader
|
||||
volumes:
|
||||
- './:/home/mattermost-server'
|
||||
- './../mattermost-webapp:/home/mattermost-webapp'
|
||||
- './../enterprise:/home/enterprise'
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://follower:8065/api/v4/system/ping"]
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 30
|
||||
command: ['make', 'run-server']
|
||||
restart: on-failure
|
||||
expose:
|
||||
- "8065"
|
||||
|
||||
haproxy:
|
||||
image: nginx
|
||||
networks:
|
||||
- mm-test
|
||||
volumes:
|
||||
- ./build/docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
|
||||
restart: on-failure
|
||||
depends_on:
|
||||
- leader
|
||||
- follower
|
||||
ports:
|
||||
- "8065:8065"
|
||||
|
||||
networks:
|
||||
mm-test:
|
||||
driver: bridge
|
||||
|
||||
Ссылка в новой задаче
Block a user