Настройка элементов окружения#
Зачастую точные настройки профиля и сервисов зависят от той среды, в которой данный профиль будет разворачиваться, соответственно для того, чтобы иметь возможность подставлять нужные значения. Для этого необходимо параметризовать конфигурационные файлы и подготовить файл с теми значениями параметров, которые необходимо поставить.
Например, доступен профиль override_error, и в нем необходимо параметризовать список серверов группы server_groups_back_1:
profile: override_error
version: 2.0.3
system:
wrk_count: 1
conn_count: 4096
optional:
log_level: debug
service:
service_http_proxy:
- id: rewrite_service
name: service_2
url: ^/bye
upstream_group_id: back_1
upstream_groups:
- id: back_1
servers:
#jinja2: lstrip_blocks: True
{% for server_group in server_groups_back_1 %}
- server: {{ server_group.server }}
{% endfor %}
rewrite_uri:
- from: /
to: /notFound
allowed_queries:
- method: get
listen:
- port: 11102
postprocessors:
postprocessor_error:
code:
- 404
custom_pattern_file: templates/pattern.json
rules_file: rules/postrules.yml
content_type: application/json;charset=UTF-8
handle_upstream_errors: true
Необходимо создать файл с переменными env.yml, содержащий группу узлов балансировки:
server_groups_back_1:
- { server: '127.0.0.1:10002', weight: '1' }
- { server: '127.0.0.1:10003', weight: '1' }
Для того чтобы воспользоваться значениями переменных, достаточно при конфигурации воспользоваться опцией environment с указанием файла с параметрами. Затем нужно рестартовать профиль.
[sowacfg@tkle-ish0038 proxies]$ sowa-config --config override_error.yml --environment env.yml
Profile override_error is running. Are you sure that you want to reconfigure? [y/n] y
Profile "override_error" was successfully configured.
[sowacfg@tkle-ish0038 proxies]$ sowa-config --restart override_error
Profile "override_error" was successfully stopped.
Profile "override_error" was successfully started.
Повторно отправить запрос к сервису Bye и проверить его работоспособность:
[sowacfg@tkle-ish0038 proxies]$ curl -v http://localhost:11102/bye
* About to connect() to localhost port 11102 (#0)
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 11102 (#0)
> GET /bye HTTP/1.1
> User-Agent: curl/7.29.0
> Host: localhost:11102
> Accept: */*
>
< HTTP/1.1 500 Internal Server Error
< Date: Wed, 07 Apr 2021 12:24:48 GMT
< Content-Type: application/json; charset=UTF-8
< Content-Length: 117
< Connection: keep-alive
< Server: SOWA
{
"На стороне запрашиваемого сервера произошла ошибка"
* Connection #0 to host localhost left intact