Initial commit
The repository will be consist of: [+] The redis service definition.The redis used by zmq driver as matchmaker (servers discovering). [+] The zmq-proxy service - the central proxy which perform a message redirection to endpoints to avoid direct connections between openstack services (n^2 connections). To allow an OpenStack service configuration and dependencies switching between ZMQ and RabbitMQ back-ends can be used next config section (rabbitmq is default): messaging: backend: rpc: zmq notifications: rabbitmq Because there is cases when back-end name is not actually name of depended service, like `zmq` backend name != `zmq-proxy` and `redis`, there is special section of dependencies definiton: messaging: dependencies: zmq: zmq-proxy Services, which uses oslo.messaging can specify messaging dependency by generic way: dependencies: - {{ messaging.dependencies[messaging.backend.rpc] }} - {{ messaging.dependencies[messaging.backend.notifications] }} Change-Id: I63cd5d008eb8e97903e303f37ac8a90616d4c4a2
This commit is contained in:
parent
44d36dee6a
commit
8f47dac76a
|
@ -0,0 +1,14 @@
|
||||||
|
FROM {{ image_spec("base-tools") }}
|
||||||
|
MAINTAINER {{ maintainer }}
|
||||||
|
|
||||||
|
COPY redis_sudoers /etc/sudoers.d/redis_sudoers
|
||||||
|
|
||||||
|
RUN chmod 750 /etc/sudoers.d \
|
||||||
|
&& chmod 440 /etc/sudoers.d/redis_sudoers \
|
||||||
|
&& useradd redis -G microservices \
|
||||||
|
&& apt-key adv --keyserver {{ url.redis.debian.keyserver }} --recv-keys {{ url.redis.debian.keys }} \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get install --no-install-recommends -y -t jessie-backports redis-server \
|
||||||
|
&& apt-get clean
|
||||||
|
|
||||||
|
USER redis
|
|
@ -0,0 +1,2 @@
|
||||||
|
%microservices ALL=(root) NOPASSWD: /bin/chown -R redis\: /var/lib/redis /var/log/ccp/redis
|
||||||
|
%microservices ALL=(root) NOPASSWD: /bin/chown -R redis\: /var/log/ccp/redis
|
|
@ -0,0 +1,10 @@
|
||||||
|
FROM {{ image_spec("openstack-base") }}
|
||||||
|
MAINTAINER {{ maintainer }}
|
||||||
|
|
||||||
|
COPY zmq_sudoers /etc/sudoers.d/zmq_sudoers
|
||||||
|
RUN chmod 750 /etc/sudoers.d && \
|
||||||
|
chmod 440 /etc/sudoers.d/zmq_sudoers && \
|
||||||
|
useradd zmq-proxy -G microservices -s /bin/false && \
|
||||||
|
mkdir -p /etc/zmq && chown -R zmq-proxy /etc/zmq
|
||||||
|
|
||||||
|
USER zmq-proxy
|
|
@ -0,0 +1 @@
|
||||||
|
%microservices ALL=(root) NOPASSWD: /bin/chown -R zmq-proxy /var/log/ccp/zmq
|
|
@ -0,0 +1,28 @@
|
||||||
|
{% macro zmq(cfg_type) %}
|
||||||
|
|
||||||
|
{% if cfg_type == 'rpc_config' -%}
|
||||||
|
[DEFAULT]
|
||||||
|
{%- elif cfg_type == 'notifications_config' -%}
|
||||||
|
[oslo_messaging_notifications]
|
||||||
|
{%- endif %}
|
||||||
|
transport_url=zmq://
|
||||||
|
|
||||||
|
[oslo_messaging_zmq]
|
||||||
|
rpc_zmq_host={{ network_topology["private"]["address"] }}
|
||||||
|
use_router_proxy=true
|
||||||
|
rpc_use_acks=true
|
||||||
|
|
||||||
|
{% if zeromq.matchmaker == 'redis' %}
|
||||||
|
[oslo_messaging_zmq]
|
||||||
|
rpc_zmq_matchmaker=redis
|
||||||
|
|
||||||
|
[matchmaker_redis]
|
||||||
|
password={{ redis.password }}
|
||||||
|
|
||||||
|
{% if redis.deployment == 'single' %}
|
||||||
|
host={{ address('redis') }}
|
||||||
|
port={{ redis.ports.server.cont }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% endmacro %}
|
|
@ -0,0 +1,26 @@
|
||||||
|
configs:
|
||||||
|
messaging:
|
||||||
|
dependencies:
|
||||||
|
zmq: zmq-proxy
|
||||||
|
zeromq:
|
||||||
|
matchmaker: redis
|
||||||
|
proxy:
|
||||||
|
ports:
|
||||||
|
frontend:
|
||||||
|
cont: 50001
|
||||||
|
backend:
|
||||||
|
cont: 50002
|
||||||
|
publisher:
|
||||||
|
cont: 50003
|
||||||
|
redis:
|
||||||
|
deployment: single
|
||||||
|
ports:
|
||||||
|
server:
|
||||||
|
cont: 6379
|
||||||
|
password: password
|
||||||
|
|
||||||
|
url:
|
||||||
|
redis:
|
||||||
|
debian:
|
||||||
|
keyserver: keyserver.ubuntu.com
|
||||||
|
keys: "7638D0442B90D010 8B48AD6246925553"
|
|
@ -0,0 +1,54 @@
|
||||||
|
pidfile /var/run/redis/redis-server.pid
|
||||||
|
logfile /var/log/ccp/redis/redis.log
|
||||||
|
dir /var/lib/redis
|
||||||
|
|
||||||
|
bind {{ network_topology["private"]["address"] }}
|
||||||
|
port {{ redis.ports.server.cont }}
|
||||||
|
|
||||||
|
requirepass {{ redis.password }}
|
||||||
|
masterauth {{ redis.password }}
|
||||||
|
|
||||||
|
protected-mode no
|
||||||
|
timeout 0
|
||||||
|
tcp-keepalive 300
|
||||||
|
loglevel notice
|
||||||
|
databases 16
|
||||||
|
save 900 1
|
||||||
|
save 300 10
|
||||||
|
save 60 10000
|
||||||
|
stop-writes-on-bgsave-error yes
|
||||||
|
rdbcompression yes
|
||||||
|
rdbchecksum yes
|
||||||
|
dbfilename dump.rdb
|
||||||
|
slave-serve-stale-data yes
|
||||||
|
slave-read-only yes
|
||||||
|
repl-diskless-sync no
|
||||||
|
repl-diskless-sync-delay 5
|
||||||
|
repl-disable-tcp-nodelay no
|
||||||
|
slave-priority 100
|
||||||
|
appendonly no
|
||||||
|
appendfilename "appendonly.aof"
|
||||||
|
appendfsync everysec
|
||||||
|
no-appendfsync-on-rewrite no
|
||||||
|
auto-aof-rewrite-percentage 100
|
||||||
|
auto-aof-rewrite-min-size 64mb
|
||||||
|
aof-load-truncated yes
|
||||||
|
lua-time-limit 5000
|
||||||
|
slowlog-log-slower-than 10000
|
||||||
|
slowlog-max-len 128
|
||||||
|
latency-monitor-threshold 0
|
||||||
|
notify-keyspace-events ""
|
||||||
|
hash-max-ziplist-entries 512
|
||||||
|
hash-max-ziplist-value 64
|
||||||
|
list-max-ziplist-entries 512
|
||||||
|
list-max-ziplist-value 64
|
||||||
|
set-max-intset-entries 512
|
||||||
|
zset-max-ziplist-entries 128
|
||||||
|
zset-max-ziplist-value 64
|
||||||
|
hll-sparse-max-bytes 3000
|
||||||
|
activerehashing yes
|
||||||
|
client-output-buffer-limit normal 0 0 0
|
||||||
|
client-output-buffer-limit slave 256mb 64mb 60
|
||||||
|
client-output-buffer-limit pubsub 32mb 8mb 60
|
||||||
|
hz 10
|
||||||
|
aof-rewrite-incremental-fsync yes
|
|
@ -0,0 +1,19 @@
|
||||||
|
[zmq_proxy_opts]
|
||||||
|
host={{ network_topology["private"]["address"] }}
|
||||||
|
frontend-port={{ zeromq.proxy.ports.frontend.cont }}
|
||||||
|
backend-port={{ zeromq.proxy.ports.backend.cont }}
|
||||||
|
publisher-port={{ zeromq.proxy.ports.publisher.cont }}
|
||||||
|
|
||||||
|
{% if zeromq.matchmaker == 'redis' %}
|
||||||
|
[oslo_messaging_zmq]
|
||||||
|
rpc_zmq_matchmaker=redis
|
||||||
|
|
||||||
|
[matchmaker_redis]
|
||||||
|
password={{ redis.password }}
|
||||||
|
|
||||||
|
{% if redis.deployment == 'single' %}
|
||||||
|
host={{ address('redis') }}
|
||||||
|
port={{ redis.ports.server.cont }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,29 @@
|
||||||
|
dsl_version: 0.2.0
|
||||||
|
service:
|
||||||
|
name: redis
|
||||||
|
antiAffinity: local
|
||||||
|
ports:
|
||||||
|
- {{ redis.ports.server }}
|
||||||
|
containers:
|
||||||
|
- name: redis
|
||||||
|
image: redis
|
||||||
|
pre:
|
||||||
|
- name: chown-logs-dir
|
||||||
|
command: "sudo /bin/chown -R redis: /var/lib/redis /var/log/ccp/redis"
|
||||||
|
daemon:
|
||||||
|
files:
|
||||||
|
- redis-conf
|
||||||
|
command: redis-server /etc/redis/redis.conf
|
||||||
|
volumes:
|
||||||
|
- name: redis-logs
|
||||||
|
path: "/var/log/ccp/redis"
|
||||||
|
type: host
|
||||||
|
readOnly: False
|
||||||
|
- name: redis-data
|
||||||
|
path: "/var/lib/redis"
|
||||||
|
type: empty-dir
|
||||||
|
readOnly: False
|
||||||
|
files:
|
||||||
|
redis-conf:
|
||||||
|
path: /etc/redis/redis.conf
|
||||||
|
content: redis.conf.j2
|
|
@ -0,0 +1,28 @@
|
||||||
|
dsl_version: 0.2.0
|
||||||
|
service:
|
||||||
|
name: zmq-proxy
|
||||||
|
ports:
|
||||||
|
- {{ zeromq.proxy.ports.frontend }}
|
||||||
|
- {{ zeromq.proxy.ports.backend }}
|
||||||
|
- {{ zeromq.proxy.ports.publisher }}
|
||||||
|
containers:
|
||||||
|
- name: zmq-proxy
|
||||||
|
image: zmq-proxy
|
||||||
|
pre:
|
||||||
|
- name: chown-logs-dir
|
||||||
|
command: "sudo /bin/chown -R zmq-proxy /var/log/ccp/zmq"
|
||||||
|
daemon:
|
||||||
|
files:
|
||||||
|
- zmq-conf
|
||||||
|
command: oslo-messaging-zmq-proxy --config-file /etc/zmq/zmq-proxy.conf
|
||||||
|
dependencies:
|
||||||
|
- {{ zeromq.matchmaker }}
|
||||||
|
volumes:
|
||||||
|
- name: zmq-logs
|
||||||
|
path: "/var/log/ccp/zmq"
|
||||||
|
type: host
|
||||||
|
readOnly: False
|
||||||
|
files:
|
||||||
|
zmq-conf:
|
||||||
|
path: /etc/zmq/zmq-proxy.conf
|
||||||
|
content: zmq-proxy.conf.j2
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
workdir=$(dirname $0)
|
||||||
|
yamllint -c $workdir/yamllint.yaml $(find . -not -path '*/\.*' -type f -name '*.yaml')
|
|
@ -0,0 +1,21 @@
|
||||||
|
extends: default
|
||||||
|
|
||||||
|
rules:
|
||||||
|
braces:
|
||||||
|
max-spaces-inside: 1
|
||||||
|
comments:
|
||||||
|
level: error
|
||||||
|
comments-indentation:
|
||||||
|
level: warning
|
||||||
|
document-end:
|
||||||
|
present: no
|
||||||
|
document-start:
|
||||||
|
level: error
|
||||||
|
present: no
|
||||||
|
empty-lines:
|
||||||
|
max: 1
|
||||||
|
max-start: 0
|
||||||
|
max-end: 0
|
||||||
|
line-length:
|
||||||
|
level: warning
|
||||||
|
max: 120
|
|
@ -0,0 +1,17 @@
|
||||||
|
[tox]
|
||||||
|
minversion = 1.6
|
||||||
|
envlist = linters,bashate
|
||||||
|
skipsdist = True
|
||||||
|
|
||||||
|
[testenv:linters]
|
||||||
|
deps = yamllint
|
||||||
|
commands =
|
||||||
|
{toxinidir}/tools/yamllint.sh
|
||||||
|
|
||||||
|
[testenv:bashate]
|
||||||
|
deps = bashate>=0.2
|
||||||
|
whitelist_externals = bash
|
||||||
|
commands = bash -c "find {toxinidir} -type f -name '*.sh' -not -path '*/.tox/*' -print0 | xargs -0 bashate -v"
|
||||||
|
|
||||||
|
[testenv:venv]
|
||||||
|
commands = {posargs}
|
Loading…
Reference in New Issue