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))))
|
ROOT := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
|
||||||
|
|
||||||
@@ -156,6 +156,13 @@ ifneq (,$(findstring openldap,$(ENABLED_DOCKER_SERVICES)))
|
|||||||
endif
|
endif
|
||||||
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.
|
stop-docker: ## Stops the docker containers for local development.
|
||||||
ifeq ($(MM_NO_DOCKER),true)
|
ifeq ($(MM_NO_DOCKER),true)
|
||||||
@echo No Docker Enabled: skipping docker stop
|
@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-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.
|
restart-client: | stop-client run-client ## Restarts the webapp.
|
||||||
|
|
||||||
run-job-server: ## Runs the background job server.
|
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
|
- elasticsearch
|
||||||
command: postgres:5432 mysql:3306 minio:9000 inbucket:10080 openldap:389 elasticsearch:9200
|
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:
|
networks:
|
||||||
mm-test:
|
mm-test:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user