๋ ๊ฐ์ ํด๋ฌ์คํฐ ๊ตฌ์ถ
Docker Compose๋ฅผ ์ด์ฉํด ๊ฐ๋จํ๊ฒ ๋ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํ์๋ค. Cluster A๋ 3๊ฐ ๋ ธ๋๋ก ๊ตฌ์ฑ๋๊ณ , Cluster B๋ 2๊ฐ ๋ ธ๋๋ก ๊ตฌ์ฑ๋๋ค.
services:
# --- Cluster A (3 Nodes) ---
cb-a1:
image: couchbase:community-6.6.0
platform: linux/x86_64
container_name: cb-a1
ports:
- "8091:8091"
- "11210:11210"
networks: [cb-net]
cb-a2:
image: couchbase:community-6.6.0
platform: linux/x86_64
container_name: cb-a2
networks: [cb-net]
cb-a3:
image: couchbase:community-6.6.0
platform: linux/x86_64
container_name: cb-a3
networks: [cb-net]
cb-a4:
image: couchbase:community-6.6.0
platform: linux/x86_64
container_name: cb-a4
networks: [cb-net]
# --- Cluster B (2 Nodes) ---
cb-b1:
image: couchbase:community-6.6.0
platform: linux/x86_64
container_name: cb-b1
ports:
- "9091:8091"
- "12210:11210"
networks: [cb-net]
cb-b2:
image: couchbase:community-6.6.0
platform: linux/x86_64
container_name: cb-b2
networks: [cb-net]
networks:
cb-net:
driver: bridge
7.0.0 ๋ฒ์ ์ดํ๋ถํฐ๋ XDCR ๊ธฐ๋ฅ์ด ์ํฐํ๋ผ์ด์ฆ ํ๋ ๊ตฌ๋งค ์์๋ง ์ง์๋๊ธฐ ๋๋ฌธ์ 6.6.0 ๋ฒ์ ์์ ํ ์คํธํ์๋ค. ์ ํ ์นฉ ๋งฅ ํ๊ฒฝ์์ ๊ตฌ๋ํ๋๋ฐ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ชป์ฐพ์์ platform ๊ฐ์ ๋ช ์ํด์ฃผ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๋์ผํ ๋์ปค ๋ด๋ถ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋๋ก ํ์๋ค. ์ด๋ฅผ ํตํด ๊ฐ ๋ ธ๋๋ค์ ํด๋ฌ์คํฐ๋ก ์ถ๊ฐํ ๋ ๋์ปค ๋ด๋ถ IP๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋ ธ๋ ์๋ํฌ์ธํธ์์ ์ ๊ณตํ๋ UI์ ์ ์ํ๋ฉด ํด๋ฌ์คํฐ๋ฅผ ์์ฑํ๊ฑฐ๋ ์ด๋ฏธ ์กด์ฌํ๋ ํด๋ฌ์คํฐ์ ํฉ๋ฅํ ์ ์๋ค. Docker Compose ํ์ผ์์ ๊ฐ ํด๋ฌ์คํฐ๋ง๋ค ํ๋์ ๋ ธ๋๋ง ์ธ๋ถ ํฌํธ๋ก ๋ ธ์ถ์ํค๋๋ก ์ค์ ํด๋์๊ธฐ ๋๋ฌธ์, ํฌํธ๊ฐ ๋ ธ์ถ๋์ด ์๋ ๋ ธ๋์ธ localhost:8091 ์ ์ ๊ทผํ์๋ค. Setup New Cluster๋ก ์๋กญ๊ฒ ํด๋ฌ์คํฐ๋ฅผ ์์ฑํ ์ ์๋ค.

ํ์ฌ ๋ ธ๋๋ฅผ ์๋กญ๊ฒ ๋ง๋ ํด๋ฌ์คํฐ์ ํฌํจํ๋ ๊ฐ๋ ์ด๋ค. Data Service๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌ๋๋๋ฉฐ, ์ด๋ค ์๋น์ค๋ค์ ์๋กญ๊ฒ ๊ตฌ๋ํ ์ง ๊ฒฐ์ ํ ์ ์๋ค.

ํด๋ฌ์คํฐ๊ฐ ์์ฑ๋๋ฉด ์๋์ ๊ฐ์ด ๋์๋ณด๋ ํ๋ฉด์ด ๋ฌ๋ค. ์์ง ๋ฒํท์ ์์ฑํ์ง ์์์ผ๋ฏ๋ก ์๋ฌด ์ ๋ณด๋ ๋จ์ง ์๋๋ค.

Servers ํญ์ผ๋ก ์ด๋ํ์ฌ ์ฐ์ธก ์๋จ์ ADD SERVER ๋ฒํผ์ ํตํด ํด๋ฌ์คํฐ์ ์ ๋ ธ๋๋ค์ ์ถ๊ฐํ๋ค.
๋์ปค ๋ด๋ถ Network๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์๋ ๋ช ๋ น์ผ๋ก ๋ด๋ถ IP๋ฅผ ์กฐํํด ์ฌ์ฉํ์๋ค.
docker inspect <์ปจํ
์ด๋ ์ด๋ฆ> | grep IPAddress

ํด๋ฌ์คํฐ์ ๋ฑ๋กํ๊ธฐ ์ ๋
ธ๋์ ๋์์ง ํ๋ก์ธ์ค ๋ชฉ๋ก์ ๋ค์๊ณผ ๊ฐ๋ค. memcached, goport, goxdcr ๋ฑ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ฉ๋์ ํ๋ก์ธ์ค๋ค์ด ๊ตฌ๋๋์ด ์๋ค.
# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 1 03:08 ? 00:00:00 runsvdir -P /etc/service log: .........................................................................
root 41 1 0 03:08 ? 00:00:00 runsv couchbase-server
couchba+ 42 41 12 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/beam.smp /opt/couchbase/lib/erlang/erts
couchba+ 61 1 0 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/epmd /opt/couchbase/lib/erlang/erts-9.3
couchba+ 140 42 3 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/erl_child_setup erl_child_setup 1048576
couchba+ 176 140 54 03:08 ? 00:00:02 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/beam.smp /opt/couchbase/lib/erlang/erts
couchba+ 198 176 4 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/erl_child_setup erl_child_setup 1048576
couchba+ 234 198 0 03:08 ? 00:00:00 /run/rosetta/rosetta /bin/sh sh -s disksup
couchba+ 235 198 0 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/lib/os_mon-2.4.4/priv/bin/cpu_sup /opt/couchbase/lib/erl
couchba+ 236 198 0 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/lib/os_mon-2.4.4/priv/bin/memsup /opt/couchbase/lib/erla
couchba+ 238 198 59 03:08 ? 00:00:01 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/beam.smp /opt/couchbase/lib/erlang/erts
couchba+ 254 238 5 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/erl_child_setup erl_child_setup 1048576
root 290 0 1 03:08 pts/0 00:00:00 /bin/sh
couchba+ 295 254 1 03:08 ? 00:00:00 /run/rosetta/rosetta /bin/sh sh -s disksup
couchba+ 296 254 0 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/lib/os_mon-2.4.4/priv/bin/memsup /opt/couchbase/lib/erla
couchba+ 297 254 0 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/lib/os_mon-2.4.4/priv/bin/cpu_sup /opt/couchbase/lib/erl
couchba+ 308 254 1 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/bin/priv/godu /opt/couchbase/bin/priv/godu
couchba+ 309 198 2 03:08 ? 00:00:00 /run/rosetta/rosetta /bin/sh sh -s ns_disksup
couchba+ 310 198 1 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/bin/priv/godu /opt/couchbase/bin/priv/godu
couchba+ 320 198 1 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/inet_gethost inet_gethost 4
couchba+ 321 320 0 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/inet_gethost inet_gethost 4
couchba+ 322 140 6 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/bin/saslauthd-port /opt/couchbase/bin/saslauthd-port
couchba+ 323 198 1 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/bin/sigar_port portsigar for ns_1@cb.local 42
couchba+ 329 140 4 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/bin/goport /opt/couchbase/bin/goport -graceful-shutdown=false -wind
couchba+ 333 140 19 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/bin/memcached /opt/couchbase/bin/memcached -C /opt/couchbase/var/li
couchba+ 335 329 18 03:08 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/bin/goxdcr /opt/couchbase/bin/goxdcr -sourceKVAdminPort=8091 -xdcrR
ํด๋ฌ์คํฐ์ ๋ ธ๋๋ฅผ ๋ฑ๋กํ ๋ Search, Query, Index Service๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ๊ตฌ๋์ํค๋๋ก ์ค์ ํ๋ฉด, ์๋กญ๊ฒ ํ๋ก์ธ์ค๊ฐ ๊ตฌ๋๋๋ค. Service ํ๋ก์ธ์ค์ ์ด๋ฆ๊ณผ ์ค๋ช ์ ๋ค์๊ณผ ๊ฐ๋ค.
| ํ๋ก์ธ์ค ์ด๋ฆ | ์ค๋ช |
| cbft | ์ ๋ฌธ ๊ฒ์์ ์ํ Search Service |
| indexer | ์ธ๋ฑ์ค ๋ณด๊ด์ ์ํ Index Service |
| cbq-engine | ์ฟผ๋ฆฌ ์ฒ๋ฆฌ๋ฅผ ์ํ Query Service |
์์ธํ ํ๋ก์ธ์ค ๋ชฉ๋ก์ ์๋ ๋งํฌ์์ ํ์ธํ ์ ์๋ค.
https://docs.couchbase.com/server/current/install/server-processes.html#linux
์๋๋ ์ค์ ๋ก Service๋ค์ด ์ถ๊ฐ์ ์ผ๋ก ๊ตฌ๋๋ ์ํ์ ํ๋ก์ธ์ค ๋ชฉ๋ก์ด๋ค.
root 40 1 0 Feb23 ? 00:00:00 runsv couchbase-server
couchba+ 41 40 0 Feb23 ? 00:00:18 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/beam.smp /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/beam.smp -A 16 -sbwt none
couchba+ 60 1 0 Feb23 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/epmd /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/epmd -daemon
couchba+ 139 41 0 Feb23 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/erl_child_setup erl_child_setup 1048576
couchba+ 318 139 0 Feb23 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/bin/saslauthd-port /opt/couchbase/bin/saslauthd-port
couchba+ 329 139 4 Feb23 ? 00:06:28 /run/rosetta/rosetta /opt/couchbase/bin/memcached /opt/couchbase/bin/memcached -C /opt/couchbase/var/lib/couchbase/config/memcached.json
couchba+ 382 139 0 00:01 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/bin/goport /opt/couchbase/bin/goport -graceful-shutdown=false -window-size=524288
couchba+ 389 382 0 00:01 ? 00:00:05 /run/rosetta/rosetta /opt/couchbase/bin/projector /opt/couchbase/bin/projector -kvaddrs=127.0.0.1:11210 -adminport=:9999 -diagDir=/opt/couchb
couchba+ 514 139 0 00:05 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/bin/goport /opt/couchbase/bin/goport -graceful-shutdown=false -window-size=524288
couchba+ 519 514 0 00:05 ? 00:00:26 /run/rosetta/rosetta /opt/couchbase/bin/cbft /opt/couchbase/bin/cbft -cfg=metakv -uuid=1ef6ad982d4ff97536a0388ffbfe9203 -server=http://127.0.
couchba+ 1013 139 0 01:49 ? 00:00:01 /run/rosetta/rosetta /opt/couchbase/bin/goport /opt/couchbase/bin/goport -graceful-shutdown=false -window-size=524288
couchba+ 1019 1013 1 01:49 ? 00:00:23 /run/rosetta/rosetta /opt/couchbase/bin/goxdcr /opt/couchbase/bin/goxdcr -sourceKVAdminPort=8091 -xdcrRestPort=9998 -isEnterprise=false -ipv6
couchba+ 1038 139 10 01:51 ? 00:03:29 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/beam.smp /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/beam.smp -A 16 -sbt u -P
couchba+ 1060 1038 0 01:51 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/erl_child_setup erl_child_setup 1048576
couchba+ 1096 1060 0 01:51 ? 00:00:00 /run/rosetta/rosetta /bin/sh sh -s disksup
couchba+ 1097 1060 0 01:51 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/lib/os_mon-2.4.4/priv/bin/memsup /opt/couchbase/lib/erlang/lib/os_mon-2.4.4/priv/bin/memsup
couchba+ 1098 1060 0 01:51 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/lib/os_mon-2.4.4/priv/bin/cpu_sup /opt/couchbase/lib/erlang/lib/os_mon-2.4.4/priv/bin/cpu_sup
couchba+ 1100 1060 0 01:51 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/inet_gethost inet_gethost 4
couchba+ 1101 1100 0 01:51 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/inet_gethost inet_gethost 4
couchba+ 1103 1060 0 01:51 ? 00:00:17 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/beam.smp /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/beam.smp -P 327680 -K tru
couchba+ 1119 1103 0 01:51 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/erl_child_setup erl_child_setup 1048576
couchba+ 1155 1119 0 01:51 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/inet_gethost inet_gethost 4
couchba+ 1156 1155 0 01:51 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/erts-9.3.3.9/bin/inet_gethost inet_gethost 4
couchba+ 1157 1119 0 01:51 ? 00:00:00 /run/rosetta/rosetta /bin/sh sh -s disksup
couchba+ 1158 1119 0 01:51 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/lib/os_mon-2.4.4/priv/bin/memsup /opt/couchbase/lib/erlang/lib/os_mon-2.4.4/priv/bin/memsup
couchba+ 1159 1119 0 01:51 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/lib/erlang/lib/os_mon-2.4.4/priv/bin/cpu_sup /opt/couchbase/lib/erlang/lib/os_mon-2.4.4/priv/bin/cpu_sup
couchba+ 1170 1119 0 01:51 ? 00:00:02 /run/rosetta/rosetta /opt/couchbase/bin/priv/godu /opt/couchbase/bin/priv/godu
couchba+ 1171 1060 0 01:51 ? 00:00:00 /run/rosetta/rosetta /bin/sh sh -s ns_disksup
couchba+ 1173 1060 0 01:51 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/bin/priv/godu /opt/couchbase/bin/priv/godu
couchba+ 1184 1060 0 01:52 ? 00:00:02 /run/rosetta/rosetta /opt/couchbase/bin/sigar_port portsigar for ns_1@172.20.0.5 41
couchba+ 1187 139 0 01:53 ? 00:00:01 /run/rosetta/rosetta /opt/couchbase/bin/goport /opt/couchbase/bin/goport -graceful-shutdown=false -window-size=524288
couchba+ 1192 1187 0 01:53 ? 00:00:16 /run/rosetta/rosetta /opt/couchbase/bin/indexer /opt/couchbase/bin/indexer -adminPort=9100 -scanPort=9101 -httpPort=9102 -streamInitPort=9103
couchba+ 1277 139 0 02:23 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/bin/goport /opt/couchbase/bin/goport -graceful-shutdown=false -window-size=524288
couchba+ 1283 1277 1 02:23 ? 00:00:00 /run/rosetta/rosetta /opt/couchbase/bin/cbq-engine /opt/couchbase/bin/cbq-engine --datastore=http://127.0.0.1:8091 --http=:8093 --configstore
๋ฆฌ๋ฐธ๋ฐ์ฑ์ ํตํด ํด๋ฌ์คํฐ์ ์์ ํ๊ฒ ํธ์ ์ํค๋ฉด ํด๋ฌ์คํฐ ๊ตฌ์ถ ์๋ฃ์ด๋ค.

XDCR ์ฐ๊ฒฐํ๊ธฐ
XDCR ๋์์ด ๋ ๋ฒํท์ ๊ฐ ํด๋ฌ์คํฐ ํ๊ฒฝ์ ์์ฑํด์ค๋ค.

๋ ธ๋๊ฐ 3๊ฐ์ธ Cluster A์ ๋ฒํท์ ์์ฑํ ํ ์์ธ ์ ๋ณด๋ฅผ ๋ณด๋ฉด, ๋ค์๊ณผ ๊ฐ์ด vBucket์ด 1024 / 3 ํ์ฌ ๋ถ๋ฐฐ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.

์ ํด๋ฌ์คํฐ์ ๋ฒํท์ ๋ชจ๋ ์์ฑํ๋ค๋ฉด ๋ฒํท ๊ฐ์ ๋ณต์ ๊ด๊ณ๋ฅผ ๋งบ๊ธฐ ์ XDCR Remote Cluster๋ฅผ ๋ฑ๋กํด์ฃผ์ด์ผ ํ๋ค. ์ด ๋ ํ์ฌ ํด๋ฌ์คํฐ -> ์๋ ํด๋ฌ์คํฐ ๋ฐฉํฅ์ผ๋ก ๋ณต์ ํ๊ธฐ ์ํ ์ค์ ์์ ์๊ณ ์์ด์ผ ํ๋ค. ์๋ ํด๋ฌ์คํฐ์ ์ด๋ฆ, IP, Admin ๊ณ์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๋ฉด ๋ฑ๋ก์ด ์๋ฃ๋๋ค.

ํ์ฌ ํด๋ฌ์คํฐ์ ๋ฒํท์ ์ ํํ๊ณ , ์๋ ํด๋ฌ์คํฐ์ ํด๋ฌ์คํฐ ๋ด๋ถ์ ์๋ ๋ฒํท์ ์ง์ ํ๋ฉด ๋ณต์ ๊ด๊ณ๋ฅผ ์์ฑํ ์ ์๋ค. Advanced Replication Settings์์๋ XDCR ๋ด๋ถ ๋์์ ์ํ ๊ฐ๋ค์ ์ค์ ํ ์ ์๋ค.


๋ค์๊ณผ ๊ฐ์ด ๋ณต์ ๊ด๊ณ๊ฐ ํ์ฑ๋์๋ค.

๋ค๋ฅธ ํด๋ฌ์คํฐ์์๋ ๋์ผํ ๋ฐฉ์์ผ๋ก Remote Cluster, Replication์ ๋ฑ๋กํ์ฌ ์๋ฐฉํฅ์ผ๋ก ๋ณต์ ๊ด๊ณ๋ฅผ ๋ง๋ค์๋ค.
์ดํ ๋ช ๊ฐ์ Document๋ฅผ ์์๋ก ์ถ๊ฐํ๊ณ , Replications์์ ๋ณด์ฌ์ฃผ๋ Stats ์ ๋ณด์์ XDCR์ด ์ ์ํ๋๊ณ ์๋์ง ํ์ธํ ์ ์์๋ค.

๋๊ธ