From 34b298226db7e5deabd87ad0f8ca2fc61f8ee12f Mon Sep 17 00:00:00 2001 From: iamabhishek-dubey Date: Sun, 22 Mar 2020 14:51:46 +0530 Subject: [PATCH] Added compose setup for cluster and standalone mode --- Dockerfile | 4 -- Makefile | 8 ++- docker-compose-standalone.yaml | 10 ++++ docker-compose.yaml | 98 ++++++++++++++++++++++++++++++++++ run.sh | 9 +++- 5 files changed, 121 insertions(+), 8 deletions(-) create mode 100644 docker-compose-standalone.yaml create mode 100644 docker-compose.yaml diff --git a/Dockerfile b/Dockerfile index 6f2448d..d73a427 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,8 +34,4 @@ VOLUME ["/data"] WORKDIR /data -EXPOSE 6379 - ENTRYPOINT ["/usr/bin/entrypoint.sh"] - -USER redis diff --git a/Makefile b/Makefile index ab57cc2..0b973e8 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,11 @@ build-redis-exporter-image: docker build -t opstree/redis-exporter:dev -f Dockerfile.exporter . setup-standalone-server-compose: - docker-compose up -f docker-compose-standalone.yaml -d + docker-compose -f docker-compose-standalone.yaml up -d setup-cluster-compose: - docker-compose up -f docker-compose.yaml -d + docker-compose -f docker-compose.yaml up -d + docker-compose exec redis-master-3 /bin/bash -c "/usr/bin/run.sh" + docker-compose exec redis-slave-1 /bin/bash -c "/usr/bin/run.sh" + docker-compose exec redis-slave-2 /bin/bash -c "/usr/bin/run.sh" + docker-compose exec redis-slave-3 /bin/bash -c "/usr/bin/run.sh" diff --git a/docker-compose-standalone.yaml b/docker-compose-standalone.yaml new file mode 100644 index 0000000..1b12566 --- /dev/null +++ b/docker-compose-standalone.yaml @@ -0,0 +1,10 @@ +version: '3.3' +services: + redis: + image: opstree/redis:1.0 + restart: always + expose: + - 6379 + environment: + REDIS_PASSWORD: "Opstree@12345" + SETUP_MODE: standalone diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..aee53de --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,98 @@ +version: '3.3' +services: + redis-master-1: + image: opstree/redis:1.0 + restart: always + networks: + redis: + ipv4_address: 10.5.0.2 + environment: + REDIS_PASSWORD: "Opstree@12345" + SETUP_MODE: cluster + SERVER_MODE: master + + redis-master-2: + image: opstree/redis:1.0 + restart: always + networks: + redis: + ipv4_address: 10.5.0.3 + environment: + REDIS_PASSWORD: "Opstree@12345" + SETUP_MODE: cluster + SERVER_MODE: master + depends_on: + - redis-master-1 + + redis-master-3: + image: opstree/redis:1.0 + restart: always + networks: + redis: + ipv4_address: 10.5.0.4 + environment: + REDIS_PASSWORD: "Opstree@12345" + SETUP_MODE: cluster + SERVER_MODE: master + MASTER_LIST: "10.5.0.2:6379 10.5.0.3:6379 10.5.0.4:6379" + depends_on: + - redis-master-1 + - redis-master-2 + + redis-slave-1: + image: opstree/redis:1.0 + restart: always + networks: + redis: + ipv4_address: 10.5.0.5 + environment: + REDIS_PASSWORD: "Opstree@12345" + SETUP_MODE: cluster + SERVER_MODE: slave + SLAVE_IP: "10.5.0.5:6379" + MASTER_IP: "10.5.0.2:6379" + depends_on: + - redis-master-1 + - redis-master-2 + - redis-master-3 + + redis-slave-2: + image: opstree/redis:1.0 + restart: always + networks: + redis: + ipv4_address: 10.5.0.6 + environment: + REDIS_PASSWORD: "Opstree@12345" + SETUP_MODE: cluster + SERVER_MODE: slave + SLAVE_IP: "10.5.0.6:6379" + MASTER_IP: "10.5.0.3:6379" + depends_on: + - redis-master-1 + - redis-master-2 + - redis-master-3 + + redis-slave-3: + image: opstree/redis:1.0 + restart: always + networks: + redis: + ipv4_address: 10.5.0.7 + environment: + REDIS_PASSWORD: "Opstree@12345" + SETUP_MODE: cluster + SERVER_MODE: slave + SLAVE_IP: "10.5.0.7:6379" + MASTER_IP: "10.5.0.4:6379" + depends_on: + - redis-master-1 + - redis-master-2 + - redis-master-3 + +networks: + redis: + driver: bridge + ipam: + config: + - subnet: 10.5.0.0/16 diff --git a/run.sh b/run.sh index 03bb794..6889e73 100755 --- a/run.sh +++ b/run.sh @@ -3,12 +3,17 @@ redis_server_mode() { if [[ "${SERVER_MODE}" == "master" ]]; then echo "Redis server mode is master" + if [[ -z "${REDIS_PASSWORD}" ]]; then + redis-cli --cluster create "${MASTER_LIST}" --cluster-yes + else + redis-cli --cluster create ${MASTER_LIST} --cluster-yes -a "${REDIS_PASSWORD}" + fi elif [[ "${SERVER_MODE}" == "slave" ]]; then echo "Redis server mode is slave" if [[ -z "${REDIS_PASSWORD}" ]]; then - redis-cli --add-node "${SLAVE_IP}" "${MASTER_IP}" --cluster-slave + redis-cli --cluster add-node ${SLAVE_IP} ${MASTER_IP} --cluster-slave else - redis-cli --add-node "${SLAVE_IP}" "${MASTER_IP}" --cluster-slave -a "${REDIS_PASSWORD}" + redis-cli --cluster add-node ${SLAVE_IP} ${MASTER_IP} --cluster-slave -a "${REDIS_PASSWORD}" fi else echo "Redis server mode is standalone" -- 2.26.0