Active/active setup using zookeeper-refdb plugin and zookeeper service Change-Id: I3e23c07239e4e034b45827a79120d33283cf045c (cherry picked from commit 4e53ee22a04401e24de3613bd59dd07cd9430504)
diff --git a/src/test/docker/docker-compose.yaml b/src/test/docker/docker-compose.yaml index 11f4861..4e8a457 100644 --- a/src/test/docker/docker-compose.yaml +++ b/src/test/docker/docker-compose.yaml
@@ -18,28 +18,43 @@ ports: - 2049:2049 networks: - nfs-server-bridge: + gerrit-net: ipv4_address: 192.168.1.5 volumes: - nfs-server-volume:/var/gerrit + zookeeper-refdb: + image: zookeeper + ports: + - "2181:2181" + networks: + - gerrit-net + healthcheck: + test: ["CMD-SHELL", "./bin/zkServer.sh", "status"] # required, otherwise the gerrit service will fail to start with a "connection refused" error + interval: 1s + timeout: 1m + retries: 10 + gerrit-01: build: gerrit privileged: true depends_on: nfs-server: condition: service_healthy + zookeeper-refdb: + condition: service_healthy ports: - "8081:8080" - "29411:29418" networks: - nfs-server-bridge: null + - gerrit-net volumes: - /dev/urandom:/dev/random - shareddir:/var/gerrit/shareddir - ./etc/jgit.config:/var/gerrit/etc/jgit.config.orig - ./etc/gerrit.config:/var/gerrit/etc/gerrit.config.orig - ./etc/high-availability.gerrit-01.config:/var/gerrit/etc/high-availability.config.orig + - ./etc/zookeeper-refdb.config:/var/gerrit/etc/zookeeper-refdb.config.orig environment: - HOSTNAME=localhost @@ -50,7 +65,7 @@ - "8082:8080" - "29412:29418" networks: - nfs-server-bridge: null + - gerrit-net depends_on: gerrit-01: condition: service_started @@ -62,6 +77,7 @@ - ./etc/jgit.config:/var/gerrit/etc/jgit.config.orig - ./etc/gerrit.config:/var/gerrit/etc/gerrit.config.orig - ./etc/high-availability.gerrit-02.config:/var/gerrit/etc/high-availability.config.orig + - ./etc/zookeeper-refdb.config:/var/gerrit/etc/zookeeper-refdb.config.orig environment: - HOSTNAME=localhost - WAIT_FOR=gerrit-01:8080 @@ -71,10 +87,10 @@ ports: - "80:80" - "29418:29418" - networks: - nfs-server-bridge: null volumes: - syslog-sidecar:/syslog-sidecar + volumes_from: + - syslog-sidecar depends_on: - syslog-sidecar - gerrit-01 @@ -83,10 +99,10 @@ syslog-sidecar: build: docker-syslog-ng-stdout networks: - nfs-server-bridge: null + - gerrit-net networks: - nfs-server-bridge: + gerrit-net: ipam: driver: default config:
diff --git a/src/test/docker/etc/gerrit.config b/src/test/docker/etc/gerrit.config index 90a4057..2a08db6 100644 --- a/src/test/docker/etc/gerrit.config +++ b/src/test/docker/etc/gerrit.config
@@ -2,6 +2,8 @@ basePath = git canonicalWebUrl = http://gerrit:8080/ serverId = f7696647-8efd-41b1-bd60-d321bc071ea9 + installDbModule = com.ericsson.gerrit.plugins.highavailability.ValidationModule + installModule = com.gerritforge.gerrit.globalrefdb.validation.LibModule [index] type = LUCENE [auth]
diff --git a/src/test/docker/etc/high-availability.gerrit-01.config b/src/test/docker/etc/high-availability.gerrit-01.config index a21f05c..d8619c1 100644 --- a/src/test/docker/etc/high-availability.gerrit-01.config +++ b/src/test/docker/etc/high-availability.gerrit-01.config
@@ -6,3 +6,6 @@ [peerInfo "static"] url = http://gerrit-02:8080 + +[ref-database] + enabled = true
diff --git a/src/test/docker/etc/high-availability.gerrit-02.config b/src/test/docker/etc/high-availability.gerrit-02.config index d05c7ec..54cc1f2 100644 --- a/src/test/docker/etc/high-availability.gerrit-02.config +++ b/src/test/docker/etc/high-availability.gerrit-02.config
@@ -5,4 +5,7 @@ strategy = static [peerInfo "static"] - url = http://gerrit-01:8080 \ No newline at end of file + url = http://gerrit-01:8080 + +[ref-database] + enabled = true
diff --git a/src/test/docker/etc/zookeeper-refdb.config b/src/test/docker/etc/zookeeper-refdb.config new file mode 100644 index 0000000..d3cdb80 --- /dev/null +++ b/src/test/docker/etc/zookeeper-refdb.config
@@ -0,0 +1,4 @@ +[ref-database "zookeeper"] + connectString = "zookeeper-refdb:2181" + rootNode = "gerrit/HA" + transactionLockTimeoutMs = 1000
diff --git a/src/test/docker/gerrit/Dockerfile b/src/test/docker/gerrit/Dockerfile index ea07b5b..91e48a7 100644 --- a/src/test/docker/gerrit/Dockerfile +++ b/src/test/docker/gerrit/Dockerfile
@@ -32,10 +32,18 @@ ADD --chown=gerrit \ "https://gerrit-ci.gerritforge.com/job/plugin-high-availability-bazel-stable-$GERRIT_VERSION/lastSuccessfulBuild/artifact/bazel-bin/plugins/high-availability/high-availability.jar" \ /var/gerrit/plugins/high-availability.jar + +RUN mkdir -p /var/gerrit/lib && \ + ln -sf /var/gerrit/plugins/high-availability.jar /var/gerrit/lib/high-availability.jar + ADD --chown=gerrit \ "https://gerrit-ci.gerritforge.com/job/module-global-refdb-bazel-stable-$GERRIT_VERSION/lastSuccessfulBuild/artifact/bazel-bin/plugins/global-refdb/global-refdb.jar" \ /var/gerrit/lib/global-refdb.jar +ADD --chown=gerrit \ + "https://gerrit-ci.gerritforge.com/job/plugin-zookeeper-refdb-bazel-stable-$GERRIT_VERSION/lastSuccessfulBuild/artifact/bazel-bin/plugins/zookeeper-refdb/zookeeper-refdb.jar" \ + /var/gerrit/plugins/zookeeper-refdb.jar + ADD --chown=gerrit:gerrit ./wait-for-it.sh /bin # Change user
diff --git a/src/test/docker/gerrit/entrypoint.sh b/src/test/docker/gerrit/entrypoint.sh index 3a98d92..77d9eac 100755 --- a/src/test/docker/gerrit/entrypoint.sh +++ b/src/test/docker/gerrit/entrypoint.sh
@@ -9,6 +9,7 @@ sudo -u gerrit cp /var/gerrit/etc/jgit.config.orig /var/gerrit/etc/jgit.config sudo -u gerrit cp /var/gerrit/etc/gerrit.config.orig /var/gerrit/etc/gerrit.config sudo -u gerrit cp /var/gerrit/etc/high-availability.config.orig /var/gerrit/etc/high-availability.config +sudo -u gerrit cp /var/gerrit/etc/zookeeper-refdb.config.orig /var/gerrit/etc/zookeeper-refdb.config echo "Mount NFS ..."
diff --git a/src/test/docker/haproxy/haproxy.cfg b/src/test/docker/haproxy/haproxy.cfg index e86cdce..07a6746 100644 --- a/src/test/docker/haproxy/haproxy.cfg +++ b/src/test/docker/haproxy/haproxy.cfg
@@ -45,7 +45,7 @@ timeout connect 10s timeout server 5m server gerrit_ssh_01 gerrit-01:29418 check port 8080 inter 10s fall 3 rise 2 - server gerrit-ssh_02 gerrit-02:29418 check port 8080 inter 10s fall 3 rise 2 backup + server gerrit-ssh_02 gerrit-02:29418 check port 8080 inter 10s fall 3 rise 2 backend gerrit_http_nodes mode http @@ -55,7 +55,7 @@ option httpchk GET /config/server/version HTTP/1.0 http-check expect status 200 server gerrit_01 gerrit-01:8080 check - server gerrit_02 gerrit-02:8080 check backup + server gerrit_02 gerrit-02:8080 check backend gerrit_http_nodes_balanced mode http