From e8b1b1c8989965cd8092d1db5a307ea0d2e9f5cf Mon Sep 17 00:00:00 2001 From: dzhang Date: Wed, 5 Sep 2018 12:08:27 -0700 Subject: [PATCH] moving DB --- dockers/docker-database/Dockerfile.j2 | 34 ++++++++++++++++--- dockers/docker-database/supervisord.conf | 13 ++++++- files/build_templates/docker_image_ctl.j2 | 4 +++ files/scripts/configdb-load.sh | 4 +++ files/scripts/swss.sh | 6 +++- .../s9180-32x/utils/qsfp_monitor.sh | 2 +- .../s9280-64x/utils/qsfp_monitor.sh | 2 +- .../s8810-32q/utils/qsfp_monitor.sh | 2 +- .../s8900-54xc/utils/qsfp_monitor.sh | 2 +- .../s8900-64xc/utils/qsfp_monitor.sh | 2 +- .../s9100/utils/qsfp_monitor.sh | 2 +- .../s9200-64x/utils/qsfp_monitor.sh | 2 +- .../nephos/sonic-platform-modules-ingrasys | 2 +- platform/vs/docker-sonic-vs/Dockerfile.j2 | 25 +++++++++++++- platform/vs/docker-sonic-vs/start.sh | 4 ++- platform/vs/docker-sonic-vs/supervisord.conf | 13 ++++++- platform/vs/tests/conftest.py | 6 ++-- src/sonic-sairedis | 2 +- src/sonic-snmpagent | 2 +- src/sonic-swss | 2 +- src/sonic-swss-common | 2 +- src/sonic-utilities | 2 +- 22 files changed, 110 insertions(+), 25 deletions(-) diff --git a/dockers/docker-database/Dockerfile.j2 b/dockers/docker-database/Dockerfile.j2 index cc246c1bf949..ed7301d2937d 100644 --- a/dockers/docker-database/Dockerfile.j2 +++ b/dockers/docker-database/Dockerfile.j2 @@ -27,14 +27,38 @@ RUN apt-get autoclean -y RUN apt-get autoremove -y RUN rm -rf /debs ~/.cache -RUN sed -ri 's/^(save .*$)/# \1/g; \ - s/^daemonize yes$/daemonize no/; \ - s/^logfile .*$/logfile ""/; \ - s/^# syslog-enabled no$/syslog-enabled no/; \ - s/^# unixsocket/unixsocket/; \ +RUN sed -ri 's/^(save .*$)/# \1/g; \ + s/^daemonize yes$/daemonize no/; \ + s/^logfile .*$/logfile ""/; \ + s/^# syslog-enabled no$/syslog-enabled no/; \ s/^client-output-buffer-limit pubsub [0-9]+mb [0-9]+mb [0-9]+/client-output-buffer-limit pubsub 0 0 0/ \ ' /etc/redis/redis.conf + +RUN cp /etc/redis/redis.conf /etc/redis/redis-secondary.conf +RUN cp /etc/redis/redis.conf /etc/redis/redis-server.conf +RUN mkdir /var/lib/redis/redis-server +RUN mkdir /var/lib/redis/redis-secondary + +RUN sed -ri 's/^# unixsocket .*/unixsocket \/var\/run\/redis\/redis.sock/; \ + s/dir .*/dir \/var\/lib\/redis\/redis-server/; \ + s/pidfile .*/pidfile \/var\/run\/redis\/redis-server.pid/; \ + ' /etc/redis/redis-server.conf + +RUN sed -ri 's/port 6379/port 6380/; \ + s/^# unixsocket .*/unixsocket \/var\/run\/redis\/redis-secondary.sock/; \ + s/dir .*/dir \/var\/lib\/redis\/redis-secondary/; \ + s/pidfile .*/pidfile \/var\/run\/redis\/redis-secondary.pid/; \ + ' /etc/redis/redis-secondary.conf + +RUN sed -ri 's/DAEMON_ARGS=.*/DAEMON_ARGS=\/etc\/redis\/\`basename ${0}\`.conf/; \ + s/NAME=.*/NAME=`basename ${0}`/; \ + s/DESC=.*/DESC=`basename ${0}`/; \ + s/PIDFILE=.*/PIDFILE=$RUNDIR\/`basename ${0}`.pid/; \ + ' /etc/init.d/redis-server + +RUN cp /etc/init.d/redis-server /etc/init.d/redis-secondary + COPY ["supervisord.conf", "/etc/supervisor/conf.d/"] COPY ["files/configdb-load.sh", "/usr/bin/"] diff --git a/dockers/docker-database/supervisord.conf b/dockers/docker-database/supervisord.conf index f095e78bc144..07ba0fe7e183 100644 --- a/dockers/docker-database/supervisord.conf +++ b/dockers/docker-database/supervisord.conf @@ -11,8 +11,19 @@ autorestart=false stdout_logfile=syslog stderr_logfile=syslog +[group:redis-servers] +programs=redis-server,redis-server-secondary + [program:redis-server] -command=/usr/bin/redis-server /etc/redis/redis.conf +command=/usr/bin/redis-server /etc/redis/redis-server.conf +priority=2 +autostart=true +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + +[program:redis-server-secondary] +command=/usr/bin/redis-server /etc/redis/redis-secondary.conf priority=2 autostart=true autorestart=false diff --git a/files/build_templates/docker_image_ctl.j2 b/files/build_templates/docker_image_ctl.j2 index 61f32f16b7b9..b222741584f8 100644 --- a/files/build_templates/docker_image_ctl.j2 +++ b/files/build_templates/docker_image_ctl.j2 @@ -11,6 +11,10 @@ function postStartAction() until [[ $(/usr/bin/docker exec database redis-cli ping | grep -c PONG) -gt 0 ]]; do sleep 1; done + + until [[ $(/usr/bin/docker exec database redis-cli -p 6380 ping | grep -c PONG) -gt 0 ]]; do + sleep 1; + done {%- elif docker_container_name == "swss" %} docker exec swss rm -f /ready # remove cruft if [[ -d /host/fast-reboot ]]; diff --git a/files/scripts/configdb-load.sh b/files/scripts/configdb-load.sh index 5ba2e0e0bc7f..1df5649ef750 100755 --- a/files/scripts/configdb-load.sh +++ b/files/scripts/configdb-load.sh @@ -5,6 +5,10 @@ until [[ $(redis-cli ping | grep -c PONG) -gt 0 ]]; do sleep 1; done +until [[ $(redis-cli -p 6380 ping | grep -c PONG) -gt 0 ]]; do + sleep 1; +done + # If there is a config db dump file, load it if [ -r /etc/sonic/config_db.json ]; then sonic-cfggen -j /etc/sonic/config_db.json --write-to-db diff --git a/files/scripts/swss.sh b/files/scripts/swss.sh index 0873deb37c8e..e1f4a75e7180 100755 --- a/files/scripts/swss.sh +++ b/files/scripts/swss.sh @@ -6,6 +6,10 @@ start() { do sleep 1; done + until [[ $(/usr/bin/docker exec database redis-cli -p 6380 ping | grep -c PONG) -gt 0 ]]; + do sleep 1; + done + # Wait for configDB initialization until [[ $(/usr/bin/docker exec database redis-cli -n 4 GET "CONFIG_DB_INITIALIZED") ]]; do sleep 1; @@ -27,7 +31,7 @@ start() { # Flush DB /usr/bin/docker exec database redis-cli -n 0 FLUSHDB - /usr/bin/docker exec database redis-cli -n 1 FLUSHDB + /usr/bin/docker exec database redis-cli -p 6380 -n 1 FLUSHDB /usr/bin/docker exec database redis-cli -n 2 FLUSHDB /usr/bin/docker exec database redis-cli -n 5 FLUSHDB /usr/bin/docker exec database redis-cli -n 6 FLUSHDB diff --git a/platform/barefoot/sonic-platform-modules-ingrasys/s9180-32x/utils/qsfp_monitor.sh b/platform/barefoot/sonic-platform-modules-ingrasys/s9180-32x/utils/qsfp_monitor.sh index 249f179216a6..067467bf8f03 100755 --- a/platform/barefoot/sonic-platform-modules-ingrasys/s9180-32x/utils/qsfp_monitor.sh +++ b/platform/barefoot/sonic-platform-modules-ingrasys/s9180-32x/utils/qsfp_monitor.sh @@ -65,7 +65,7 @@ function _docker_swss_check { while true do # Check if syncd starts - result=`docker exec -i swss bash -c "echo -en \"SELECT 1\\nHLEN HIDDEN\" | redis-cli | sed -n 2p"` #TBD FIX ME + result=`docker exec -i swss bash -c "echo -en \"SELECT 1\\nHLEN HIDDEN\" | redis-cli -p 6380 | sed -n 2p"` #TBD FIX ME if [ "$result" == "3" ]; then return fi diff --git a/platform/barefoot/sonic-platform-modules-ingrasys/s9280-64x/utils/qsfp_monitor.sh b/platform/barefoot/sonic-platform-modules-ingrasys/s9280-64x/utils/qsfp_monitor.sh index 23a3fd066bee..8acc7a9f872a 100755 --- a/platform/barefoot/sonic-platform-modules-ingrasys/s9280-64x/utils/qsfp_monitor.sh +++ b/platform/barefoot/sonic-platform-modules-ingrasys/s9280-64x/utils/qsfp_monitor.sh @@ -66,7 +66,7 @@ function _docker_swss_check { while true do # Check if syncd starts - result=`docker exec -i swss bash -c "echo -en \"SELECT 1\\nHLEN HIDDEN\" | redis-cli | sed -n 2p"` #TBD FIX ME + result=`docker exec -i swss bash -c "echo -en \"SELECT 1\\nHLEN HIDDEN\" | redis-cli -p 6380 | sed -n 2p"` #TBD FIX ME if [ "$result" == "3" ]; then return fi diff --git a/platform/broadcom/sonic-platform-modules-ingrasys/s8810-32q/utils/qsfp_monitor.sh b/platform/broadcom/sonic-platform-modules-ingrasys/s8810-32q/utils/qsfp_monitor.sh index 249f179216a6..067467bf8f03 100755 --- a/platform/broadcom/sonic-platform-modules-ingrasys/s8810-32q/utils/qsfp_monitor.sh +++ b/platform/broadcom/sonic-platform-modules-ingrasys/s8810-32q/utils/qsfp_monitor.sh @@ -65,7 +65,7 @@ function _docker_swss_check { while true do # Check if syncd starts - result=`docker exec -i swss bash -c "echo -en \"SELECT 1\\nHLEN HIDDEN\" | redis-cli | sed -n 2p"` #TBD FIX ME + result=`docker exec -i swss bash -c "echo -en \"SELECT 1\\nHLEN HIDDEN\" | redis-cli -p 6380 | sed -n 2p"` #TBD FIX ME if [ "$result" == "3" ]; then return fi diff --git a/platform/broadcom/sonic-platform-modules-ingrasys/s8900-54xc/utils/qsfp_monitor.sh b/platform/broadcom/sonic-platform-modules-ingrasys/s8900-54xc/utils/qsfp_monitor.sh index 7f50d137bcb7..981ac956776a 100644 --- a/platform/broadcom/sonic-platform-modules-ingrasys/s8900-54xc/utils/qsfp_monitor.sh +++ b/platform/broadcom/sonic-platform-modules-ingrasys/s8900-54xc/utils/qsfp_monitor.sh @@ -67,7 +67,7 @@ function _docker_swss_check { while true do # Check if syncd starts - result=`docker exec -i swss bash -c "echo -en \"SELECT 1\\nHLEN HIDDEN\" | redis-cli | sed -n 2p"` #TBD FIX ME + result=`docker exec -i swss bash -c "echo -en \"SELECT 1\\nHLEN HIDDEN\" | redis-cli -p 6380 | sed -n 2p"` #TBD FIX ME if [ "$result" == "3" ]; then return fi diff --git a/platform/broadcom/sonic-platform-modules-ingrasys/s8900-64xc/utils/qsfp_monitor.sh b/platform/broadcom/sonic-platform-modules-ingrasys/s8900-64xc/utils/qsfp_monitor.sh index 36f9e53ef108..9ffc2e5a672c 100644 --- a/platform/broadcom/sonic-platform-modules-ingrasys/s8900-64xc/utils/qsfp_monitor.sh +++ b/platform/broadcom/sonic-platform-modules-ingrasys/s8900-64xc/utils/qsfp_monitor.sh @@ -67,7 +67,7 @@ function _docker_swss_check { while true do # Check if syncd starts - result=`docker exec -i swss bash -c "echo -en \"SELECT 1\\nHLEN HIDDEN\" | redis-cli | sed -n 2p"` #TBD FIX ME + result=`docker exec -i swss bash -c "echo -en \"SELECT 1\\nHLEN HIDDEN\" | redis-cli -p 6380 | sed -n 2p"` #TBD FIX ME if [ "$result" == "3" ]; then return fi diff --git a/platform/broadcom/sonic-platform-modules-ingrasys/s9100/utils/qsfp_monitor.sh b/platform/broadcom/sonic-platform-modules-ingrasys/s9100/utils/qsfp_monitor.sh index 249f179216a6..067467bf8f03 100755 --- a/platform/broadcom/sonic-platform-modules-ingrasys/s9100/utils/qsfp_monitor.sh +++ b/platform/broadcom/sonic-platform-modules-ingrasys/s9100/utils/qsfp_monitor.sh @@ -65,7 +65,7 @@ function _docker_swss_check { while true do # Check if syncd starts - result=`docker exec -i swss bash -c "echo -en \"SELECT 1\\nHLEN HIDDEN\" | redis-cli | sed -n 2p"` #TBD FIX ME + result=`docker exec -i swss bash -c "echo -en \"SELECT 1\\nHLEN HIDDEN\" | redis-cli -p 6380 | sed -n 2p"` #TBD FIX ME if [ "$result" == "3" ]; then return fi diff --git a/platform/broadcom/sonic-platform-modules-ingrasys/s9200-64x/utils/qsfp_monitor.sh b/platform/broadcom/sonic-platform-modules-ingrasys/s9200-64x/utils/qsfp_monitor.sh index 51c49c1152f5..5d9db8d196c4 100755 --- a/platform/broadcom/sonic-platform-modules-ingrasys/s9200-64x/utils/qsfp_monitor.sh +++ b/platform/broadcom/sonic-platform-modules-ingrasys/s9200-64x/utils/qsfp_monitor.sh @@ -66,7 +66,7 @@ function _docker_swss_check { while true do # Check if syncd starts - result=`docker exec -i swss bash -c "echo -en \"SELECT 1\\nHLEN HIDDEN\" | redis-cli | sed -n 2p"` #TBD FIX ME + result=`docker exec -i swss bash -c "echo -en \"SELECT 1\\nHLEN HIDDEN\" | redis-cli -p 6380 | sed -n 2p"` #TBD FIX ME if [ "$result" == "3" ]; then return fi diff --git a/platform/nephos/sonic-platform-modules-ingrasys b/platform/nephos/sonic-platform-modules-ingrasys index 796169e43aee..25e8b0d4b6b1 160000 --- a/platform/nephos/sonic-platform-modules-ingrasys +++ b/platform/nephos/sonic-platform-modules-ingrasys @@ -1 +1 @@ -Subproject commit 796169e43aee944fdf7b549d04cb181117e0fb89 +Subproject commit 25e8b0d4b6b1c67a0ccf0800e98924e0dd140bf1 diff --git a/platform/vs/docker-sonic-vs/Dockerfile.j2 b/platform/vs/docker-sonic-vs/Dockerfile.j2 index a7cccfd60a3b..b30f682ed9d1 100644 --- a/platform/vs/docker-sonic-vs/Dockerfile.j2 +++ b/platform/vs/docker-sonic-vs/Dockerfile.j2 @@ -70,11 +70,34 @@ RUN sed -ri 's/^(save .*$)/# \1/g; s/^daemonize yes$/daemonize no/; \ s/^logfile .*$/logfile ""/; \ s/^# syslog-enabled no$/syslog-enabled no/; \ - s/^# unixsocket/unixsocket/; \ s/notify-keyspace-events ""/notify-keyspace-events AKE/; \ s/^client-output-buffer-limit pubsub [0-9]+mb [0-9]+mb [0-9]+/client-output-buffer-limit pubsub 0 0 0/ \ ' /etc/redis/redis.conf +RUN cp /etc/redis/redis.conf /etc/redis/redis-secondary.conf +RUN cp /etc/redis/redis.conf /etc/redis/redis-server.conf +RUN mkdir /var/lib/redis/redis-server +RUN mkdir /var/lib/redis/redis-secondary + +RUN sed -ri 's/^# unixsocket .*/unixsocket \/var\/run\/redis\/redis.sock/; \ + s/dir .*/dir \/var\/lib\/redis\/redis-server/; \ + s/pidfile .*/pidfile \/var\/run\/redis\/redis-server.pid/; \ + ' /etc/redis/redis-server.conf + +RUN sed -ri 's/port 6379/port 6380/; \ + s/^# unixsocket .*/unixsocket \/var\/run\/redis\/redis-secondary.sock/; \ + s/dir .*/dir \/var\/lib\/redis\/redis-secondary/; \ + s/pidfile .*/pidfile \/var\/run\/redis\/redis-secondary.pid/; \ + ' /etc/redis/redis-secondary.conf + +RUN sed -ri 's/DAEMON_ARGS=.*/DAEMON_ARGS=\/etc\/redis\/\`basename ${0}\`.conf/; \ + s/NAME=.*/NAME=`basename ${0}`/; \ + s/DESC=.*/DESC=`basename ${0}`/; \ + s/PIDFILE=.*/PIDFILE=$RUNDIR\/`basename ${0}`.pid/; \ + ' /etc/init.d/redis-server + +RUN cp /etc/init.d/redis-server /etc/init.d/redis-secondary + COPY ["50-default.conf", "/etc/rsyslog.d/"] COPY ["start.sh", "orchagent.sh", "/usr/bin/"] COPY ["brcm.profile.ini", "/usr/share/sonic/device/vswitch/"] diff --git a/platform/vs/docker-sonic-vs/start.sh b/platform/vs/docker-sonic-vs/start.sh index d16e9535c218..d1e63b73ce73 100755 --- a/platform/vs/docker-sonic-vs/start.sh +++ b/platform/vs/docker-sonic-vs/start.sh @@ -24,7 +24,9 @@ supervisorctl start rsyslogd mkdir -p /var/run/redis -supervisorctl start redis-server +supervisorctl start redis-servers:redis-server + +supervisorctl start redis-servers:redis-server-secondary /usr/bin/configdb-load.sh diff --git a/platform/vs/docker-sonic-vs/supervisord.conf b/platform/vs/docker-sonic-vs/supervisord.conf index 1f6dfad60cf0..5180d98b0ded 100644 --- a/platform/vs/docker-sonic-vs/supervisord.conf +++ b/platform/vs/docker-sonic-vs/supervisord.conf @@ -19,8 +19,19 @@ autorestart=false stdout_logfile=syslog stderr_logfile=syslog +[group:redis-servers] +programs=redis-server,redis-server-secondary + [program:redis-server] -command=/usr/bin/redis-server /etc/redis/redis.conf +command=/usr/bin/redis-server /etc/redis/redis-server.conf +priority=3 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + +[program:redis-server-secondary] +command=/usr/bin/redis-server /etc/redis/redis-secondary.conf priority=3 autostart=false autorestart=false diff --git a/platform/vs/tests/conftest.py b/platform/vs/tests/conftest.py index 8acaed5e9062..527907bdc770 100644 --- a/platform/vs/tests/conftest.py +++ b/platform/vs/tests/conftest.py @@ -16,7 +16,7 @@ def pytest_addoption(parser): class AsicDbValidator(object): def __init__(self, dvs): - self.adb = swsscommon.DBConnector(1, dvs.redis_sock, 0) + self.adb = swsscommon.DBConnector(1, dvs.redis_sec_sock, 0) # get default dot1q vlan id atbl = swsscommon.Table(self.adb, "ASIC_STATE:SAI_OBJECT_TYPE_VLAN") @@ -111,7 +111,8 @@ def __init__(self, name=None): 'neighsyncd', 'orchagent', 'portsyncd', - 'redis-server', + 'redis-servers:redis-server', + 'redis-servers:redis-server-secondary', 'rsyslogd', 'syncd', 'teamsyncd', @@ -119,6 +120,7 @@ def __init__(self, name=None): 'zebra'] self.mount = "/var/run/redis-vs" self.redis_sock = self.mount + '/' + "redis.sock" + self.redis_sec_sock = self.mount + '/' + "redis-secondary.sock" self.client = docker.from_env() self.ctn = None diff --git a/src/sonic-sairedis b/src/sonic-sairedis index 1c06195cc64f..cf5d689d777f 160000 --- a/src/sonic-sairedis +++ b/src/sonic-sairedis @@ -1 +1 @@ -Subproject commit 1c06195cc64f59120bb84ba9ffbd9051ec9214dc +Subproject commit cf5d689d777f67bb5e32c70fe0e4e496bbc3de54 diff --git a/src/sonic-snmpagent b/src/sonic-snmpagent index b7d915e2679c..88133a009377 160000 --- a/src/sonic-snmpagent +++ b/src/sonic-snmpagent @@ -1 +1 @@ -Subproject commit b7d915e2679c731bb47cb1fb2889bad76e6fe110 +Subproject commit 88133a009377c552fc3345f63cd18cc012a48b72 diff --git a/src/sonic-swss b/src/sonic-swss index 58a644794a26..74fa5339b410 160000 --- a/src/sonic-swss +++ b/src/sonic-swss @@ -1 +1 @@ -Subproject commit 58a644794a2650599e1102425f3903f56ff53835 +Subproject commit 74fa5339b410e5e3e483b4db27fb2e79c93c7791 diff --git a/src/sonic-swss-common b/src/sonic-swss-common index 90855e07dffa..5f461ab6d585 160000 --- a/src/sonic-swss-common +++ b/src/sonic-swss-common @@ -1 +1 @@ -Subproject commit 90855e07dffa996d6f0ece6d728c41dbc4f83e60 +Subproject commit 5f461ab6d58519ed4f7b93bea5878c46db77bd74 diff --git a/src/sonic-utilities b/src/sonic-utilities index c14d917ec8e4..935534f7410e 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit c14d917ec8e45983bedef82460ea1903a595b19f +Subproject commit 935534f7410ee648279b2ebb7619bc0ac739fc9b