๋ค์ด๊ฐ๋ฉฐ
์๋
ํ์ธ์,
ํ๋ก์ ํธ ์งํ ์ค, Redis ํด๋ฌ์คํฐ ์ฐ๊ฒฐ ํ
์คํธ๊ฐ ํ์ํ์ต๋๋ค.
JAVA ๊ธฐ๋ฐ Spring ํ๋ก์ ํธ์์ Lettuce๋ฅผ ํตํด ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํด์ผ ํ๋ ์ํฉ์ด์์ด์.
๊ธฐ๋ณธ์ ์ธ Standalone Redis๋ RedisClient๋ก ์ฌ์ฉํ๊ฒ ๋์ง๋ง,
Cluster Redis์ ๊ฒฝ์ฐ RedisClusterClient๋ก, ๋ค๋ฅธ ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
๊ทธ๋์ ์์
PC ๋ด ์ฌ๋ฌ ๊ฐ์ Redis ์ธ์คํด์ค๋ฅผ Docker๋ก ๊ตฌ์ฑํ๊ณ ,
ํด๋ฌ์คํฐ๋ก ๊ตฌ์ฑํ์ฌ Lettuce๋ฅผ ํตํด ์ฐ๊ฒฐํด๋ณด๋ ค ํ์ต๋๋ค.
ํ์ง๋ง... Docker๋ก ๊ตฌ์ฑํ Redis Cluster๋ Lettuce ์ฐ๊ฒฐ์ ์คํจํ์ต๋๋ค.
๊ทธ ์ด์ ์ ํด๊ฒฐ ๊ณผ์ ์ ์ ๋ฆฌํด ๋ณด์์ต๋๋ค.
์ ๊ฒฐ๋ก (Window ๊ธฐ์ค)
๋ฐฉ์ | ํด๋ฌ์คํฐ ๊ฒฐ์ฑ | Lettuce | ์ฐ๊ฒฐ ์ฃผ์ ์คํจ ์์ธ |
---|---|---|---|
Bridge network | ๊ฐ๋ฅ | ์คํจ | ํด๋ฌ์คํฐ ํ ํด๋ก์ง๊ฐ ์ปจํ ์ด๋ ๋ด๋ถ IP๋ก ๋ ธ์ถ |
Host network | ๋ถ๊ฐ | - | Window Docker Desktop ์ ์ฝ |
cluster-announce | ๋ถ๊ฐ | - | ์ปจํ ์ด๋ ๋ด๋ถ์์ ํธ์คํธ ๋คํธ์ํฌ ์ ๊ทผ ๋ถ๊ฐ (network: Bridge) |
host.docker.internal | ๋ถ๊ฐ | - | cluster-announce ์ค์ ๋ถ๊ฐ |
VM(๋ฆฌ๋ ์ค ํธ์คํธ) | ๊ฐ๋ฅ | ์ฑ๊ณต | ๋คํธ์ํฌ ๋ถ๋ฆฌ ์์ด host IP ์ง์ ์ฌ์ฉ |
1. ๋ชฉํ ๋ฐ ๊ฐ์ค
๊ฐ์ฉ ์์ ํ์
๋จผ์ ํ์ฌ ํ๋์จ์ด ์ํ๋ฅผ ์ ๋ฆฌ ํด ๋ณด๊ฒ ์ต๋๋ค.
- PC 1๋
- ๊ฐ๋ฐ ๋ด๋ถ๋ง (์ธ๋ถ ์ธํฐ๋ท ๋ถ๊ฐ)
- Docker, VMWare ์ค์น ๋์ด์์
์ต์ข ๋ชฉํ
JAVA ์ฑ์์ Lettuce๋ฅผ ํตํด ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐ์ด ๋๋์ง ํ
์คํธํด์ผ ํฉ๋๋ค.
์ดํ, RedisClusterCommand ๊ฐ์ฒด๋ฅผ ํตํด CLUSTER INFO ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ๋ฐ๋ ๊ฒ ๋ชฉํ์
๋๋ค.
๋ชฉํ ์ฑ์ทจ ๊ฐ์ค
- Docker-Compose๋ฅผ ํตํด Redis Container๋ฅผ 7๋ ์์ฑ
- Redis์ Replica๋ 1๋ก ์ค์ , Master Node 3, S 4๊ฐ๋ก ๊ตฌ์ฑ
- ๊ฐ ์ปจํ ์ด๋๋ Bridge Network๋ก ์ฐ๊ฒฐ
- redis-cli --cluster create๋ก ์ปจํ ์ด๋ ์ด๋ฆ์ผ๋ก ์ฐ๊ฒฐ
์์ ์์๋ก ์์
์ ์งํํ๋ฉด,
๋ชจ๋ Redis container๋ ํด๋ฌ์คํฐ๋ก ๊ตฌ์ฑ๋์ด
ํธ์คํธ์์ ํน์ ๋
ธ๋์ ์ฐ๊ฒฐ์ ์๋ํ์ ๋ ๋ชจ๋ ํ ํด๋ก์ง๊ฐ ์๋ ์ฐ๊ฒฐ ๋ ๊ฒ์ด๋ผ ์๊ฐํ์ต๋๋ค.
2. ์ฒซ๋ฒ์งธ ํ ์คํธ (Bridge Network ํ์ฉ)
- ํ๋์จ์ด: Windows ๋จ์ผ PC
- Docker-compose๋ก Redis ๋ ธ๋ 7๊ฐ๋ฅผ ๊ตฌ์ฑ(bridge/host ๋คํธ์ํฌ ๋น๊ต)
Docker-Compose ์ ์
version: "3"
services:
redis-node-1:
image: redis:latest
container_name: redis-node-1
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --bind 0.0.0.0
ports:
- "7001:6379"
networks:
- redis_cluster_net
redis-node-2:
image: redis:latest
container_name: redis-node-2
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --bind 0.0.0.0
ports:
- "7002:6379"
networks:
- redis_cluster_net
... (redis-node-7๊น์ง ๋ฐ๋ณต)
networks:
redis_cluster_net:
driver: bridge
์ถ๊ฐ๋ก, ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ ์์ฑ์ฉ ์ปจํ ์ด๋๋ฅผ ์ถ๊ฐ ์ ์ํ์ต๋๋ค.
redis-cluster-creator:
image: redis:latest
container_name: cluster-creator
networks:
- redis_cluster_net
depends_on:
- redis-node-1
- redis-node-2
- redis-node-3
- redis-node-4
- redis-node-5
- redis-node-6
- redis-node-7
command: redis-cli --cluster create redis-node-1:6379 redis-node-2:6379
... (๋ฐ๋ณต)
--cluster-replicas 1
--cluster-yes
์ดํ, docker-compose up
์ ํตํด ๋ก๊ทธ์ ํจ๊ป ๋ด์ฉ์ ํ์ธํฉ๋๋ค.
๋ด๋ถ Bridge๋ก ์ฐ๊ฒฐ๋์ด์๊ธฐ ๋๋ฌธ์, ๋ค๋ฅธ node๋ก์ ์ฐ๊ฒฐ๋ ๊ฐ๋ฅํฉ๋๋ค.
redis-cli -h 172.20.0.2 -p 6379
์ด๋ฐ ๋ฐฉ์์ผ๋ก, ์ ์์ด ๊ฐ๋ฅํ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
Lettuce JAVA ์ฑ
์ด์ , Lettuce๊ธฐ๋ฐ JAVA ์ฑ ์ฝ๋๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
public static void main(String[] args) {
SpringApplication.run(LettuceApplication.class, args);
RedisClusterClient clusterClient = RedisClusterClient.create(
"redis://127.0.0.1:7001"
);
try (StatefulRedisClusterConnection<String, String> connection = clusterClient.connect()) {
RedisClusterCommands<String, String> commands = connection.sync();
StringListOutput<String,String> output = new StringListOutput<>(StringCodec.UTF8);
CommandArgs<String, String> arg = new CommandArgs<>(StringCodec.UTF8).add("INFO");
List<String> res = commands.dispatch(CommandType.CLUSTER, output, arg);
System.out.println(res);
}
clusterClient.shutdown();
}
๊ฐ๋จํ๊ฒ ๊ตฌ์ฑํ์ต๋๋ค.
redis์ ์ฐ๊ฒฐํ ํ, Cluster Info ๋ฉ์์ง๋ฅผ ๋ ๋ฆฝ๋๋ค.
๊ฒฐ๊ณผ
connection timed out after 10000 ms: /172.20.0.7:6379
์ ๋ก๊ทธ์ฒ๋ผ, Unable to connect
๋ฅผ ์ป์์ต๋๋ค.
๊ฐ์ฅ ํฐ ๋ฌธ์ ๋, Lettuce์์ ์ฐ๊ฒฐํ๋ ค๋ ๋์์ด 172.20.0.7:6379
์ธ ๊ฒ์ผ๋ก ํ๋จํ์ต๋๋ค.
ํด๋น ์ฃผ์๋ docker network inspect dca_redis_cluster_net
๋ช
๋ น์ด๋ฅผ ํตํด
Docker ๋ด๋ถ ์ปจํ
์ด๋ ์ ์ฉ IP๋ผ๋ ๊ฒ์ ์ ์ ์์ง์.
> docker network inspect dca_redis_cluster_net
[
{
"Name": "dca_redis_cluster_net",
...(์๋ต)
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.20.0.0/16",
"Gateway": "172.20.0.1"
}
]
},
...(์๋ต)
"Containers": {
"17151efcca8b5e326536717daf4712edfd1d47eaa883accdca409b081a5eb730": {
"Name": "redis-node-3",
"EndpointID": "d7379693b4eea17d36e4988ae2ecc1dac606aa378021eaf26b49640965c1b672",
"MacAddress": "02:42:ac:14:00:02",
"IPv4Address": "172.20.0.2/16",
"IPv6Address": ""
},
"47db6a380c842f091bd7bb726cf6ff1bcf560d58150a5a85f70101cb82302daf": {
"Name": "redis-node-7",
"EndpointID": "9829afd2d94f1d9e77e893582ff39f84018c8830b25a076bf092c64735815c36",
"MacAddress": "02:42:ac:14:00:05",
"IPv4Address": "172.20.0.5/16",
"IPv6Address": ""
},
... (์ดํ ์๋ต)
๊ทธ๋ผ ๋ค์ ๋์๊ฐ์, 172.20.0.x๋ ๋์ปค ์ปจํ
์ด๋ ๋ด๋ถ ์๋ธ๋ท IP์
๋๋ค.
ํธ์คํธ, ๋์ปค ์ปจํ
์ด๋ ์ธ๋ถ์์ ์ ๊ทผํ ์ ์๋ ์ฃผ์์ด์ฃ .
ํธ์คํธ์์ ์ ๊ทผํ๋ ค๋ฉด localhost: ๋ก ์ ๊ทผํด์ผ ํ๋ฉฐ.
docker์์ ports๋ก ํฌํธํฌ์๋ฉํ ์์น๋ก ์ ๊ทผํด์ผ ํด๋น ๋
ธ๋๋ก ์ ๊ทผํ ์ ์๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ผ, ์ Lettuce๋ ํ ํด๋ก์งํ์์ ๋์ปค ๋ด๋ถ ์ปจํ ์ด๋ ์ฃผ์๋ฅผ ์ธ๊น?
3. Lettuce์ ํด๋ฌ์คํฐ ํ์ ๋ฐฉ์?
Lettuce๋ ์ต์ด๋ก ํ ๋
ธ๋์ ์ ์ํ๊ฒ ๋๋ฉด,
์๋์ผ๋ก CLSUTER SLOTS์ ์ํํฉ๋๋ค.
127.0.0.1:6379> CLUSTER SLOTS
1) 1) (integer) 0
2) (integer) 5460
3) 1) "172.20.0.7"
2) (integer) 6379
3) "cdc471c93bff4771944f8c936c552be18ec7541c"
4) (empty array)
4) 1) "172.20.0.3"
2) (integer) 6379
3) "ff4793dd3ea08102af6a081df3e1ad7abc2c16c1"
4) (empty array)
5) 1) "172.20.0.6"
์ฌ๊ธฐ์ ๊ฒ์ ๋ IP๋ก LETTUCE์์ ์๋ ๊ฒ์์ ์ํํ๋๋ฐ,
๋ชจ๋ ๋์ปค ๋ด๋ถ IP์์ ํ์คํ ์ ์ ์์ต๋๋ค.
์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Lettuce๊ฐ ํต์ ์ฐ๊ฒฐ์ ์๋ํ๊ธฐ ๋๋ฌธ์,
ํธ์คํธ์์๋ ๋์ปค ๋ด๋ถ IP๋ก ์ ์ํ ์ ์๋ ์ํฉ์ด ๋ฒ์ด์ง ๊ฒ์ด์ฃ ...
4. ๋๋ฒ์งธ ๋ฐฉ์ (Host Network ํ์ฉ)
๊ฐ์ค
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ ์ ์๋ ๊ฑธ ์๊ฐํด๋ดค์ ๋...
Docker-Bridge๋ก ํ๋ฉด ๋ด๋ถ ๋คํธ์ํฌ๋ก ์ก์ผ๋,
Host ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋๋ก ํ๊ณ , ๊ฐ ์ปจํ
์ด๋๋ฅผ ๋ค๋ฅธ ํฌํธ๋ก ์คํ์ํค๋ฉด ๋์ง ์์๊น?
ํ๋ ๊ฐ์ค์ ์ธ์ ์ต๋๋ค.
- Host ๋คํธ์ํฌ ์ฌ์ฉ
- ๊ฐ Redis Cluster ์คํ ํฌํธ๋ฅผ ๋ณ๊ฒฝ
๊ฒฐ๊ณผ (ํ๊ณ)
Window Docker์์๋ network Host๋ฅผ ๋ณ๋ ์ค์ ํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ PC์์๋ ๊ตฌ๋์ค์ธ ๋ค๋ฅธ ์ปจํ ์ด๋๋ค์ด ์์ด,
์ผ๊ด ๋ณ๊ฒฝ๋๋ Docker Desktop์ Host ์ค์ ํ์ฑํ๋ ๋ฌด๋ฆฌ๊ฐ ์์ต๋๋ค.
Linux ํ๊ฒฝ์์๋ ์ถฉ๋ถํ ๊ฐ๋ฅํ๋ค ์๊ฐํฉ๋๋ค.
์ด๋ฅผ ํ
์คํธํ๋ ค๋ฉด, linux์์ host๋ก REDIS๋ค์ ์คํ์ํจ ํ
ํน์ ๋
ธ๋์์ redis-cli -h 127.0.0.1 -p <๋ค๋ฅธ REDIS ์ปจํ
์ด๋ ํฌํธ>
๋ก
์ ์์ด ๊ฐ๋ฅํ๋ฉด ์๋ง ๋ฌธ์ ์์ด ๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค.
ํ์ง๋ง... ์ ๋ Window ํ๊ฒฝ์ด๊ณ , ๋น ๋ฅธ ํ
์คํธ๊ฐ ํ์ํฉ๋๋ค.
๋ฌผ๋ก , Docker-in-Docker๋ก Rocky Linux ๋ฑ์ ์ค์นํด์ redis๋ฅผ ๊ตฌ๋์ํค๋ ๊ฒ๋ ๋ฐฉ๋ฒ์ด์ฃ .
๊ทธ๋๋ ๊น๋ํ๊ฒ ํ
์คํธ๋ฅผ ํ๊ณ ์ถ์์ด์.
5. ์ธ๋ฒ์งธ ๋ฐฉ์ (cluster-announce-ip ํ์ฉ)
announce ์ค์ ์๋
์ด๊ฒ๋ Host-Network์ ๋น์ทํ ๋ฌธ์ ์ ๋๋ค.
redis-node-1:
image: redis:latest
container_name: redis-node-1
command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 127.0.0.1 --cluster-announce-port 7001
ports:
- "7001:6379"
์ด๋ฐ์์ผ๋ก, redis ์๋ฒ ์์ฑ ์ cluster-announce-๋ฅผ ์
๋ ฅํ์ฌ
๋ณธ์ธ์ ์๊ฒฉ ์ฃผ์๋ฅผ ์
๋ ฅํด์ค ์ ์์ต๋๋ค.
ํ์ง๋ง... ์ญ์ ๋์ผํ์ฃ . ๋ธ๋ฆฟ์ง๋ก ๊ตฌ๋๋๋ ์๋ฒ์ด๊ธฐ ๋๋ฌธ์,
container์ ๋ค์ด๊ฐ์ ํด๋ฌ์คํฐ๋ฅผ ์์ฑํ๋ ค ํ๋ฉด,
root@ddfabbf00ab4:/data# redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 127.0.0.1:7007 --cluster-replicas 1
Could not connect to Redis at 127.0.0.1:7001: Connection refused
์ด๋ฐ ์๋ฌ๊ฐ ๋์ฌ๊ฒ๋๋ค.
cluster-announce ์์ฒด๋ Redis ์ค์ ์ ๊ฐ๋ฅํ์ง๋ง,
Docker Bridge ๋คํธ์ํฌ ํน์ฑ์ ํธ์คํธ IP๋ก์ ์ฐ๊ฒฐ์ ์ปจํ
์ด๋ ๋ด๋ถ์์ ์ ํ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด, ๋น์ฐํ๊ฒ๋ ํด๋ฌ์คํฐ ๊ตฌ์ฑ ์์ฒด๊ฐ ๋ถ๊ฐํฉ๋๋ค.
๊ทธ๋ผ, host.docker.internal์ ์ฌ์ฉํ๋ฉด ๋์ง ์๋?
host.docker.internal์ Docker ์ปจํ ์ด๋์์ ํธ์คํธ ๋จธ์ ์ผ๋ก ์ ๊ทผํ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ ผ๋ฆฌ์ network ์ค์ ์ host๋ก ์ ๋ ฅํ๊ณ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋ค๋ฅผ ๊ฒ ์์ฃ .
ํ์ง๋ง
Redis ํด๋ฌ์คํฐ์ ๋ณธ์ธ์ผ๋ก ์ ์ํ๊ธฐ ์ํ IP๋ฅผ ์ค์ ํ๋ cluster-announce-ip๋ IP ์ ๊ท์๋ง ํ์ฉํฉ๋๋ค.
--cluster-announce-ip host.docker.internal
์
๋ ฅ์ ํด ์ฃผ๋ฉด, ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ทธ๋ ๋ค๊ณ cluster-announce-ip๋ฅผ 127.0.0.1๋ก ํ๋ฉด, ์ปจํ ์ด๋๋ง๋ค ๋คํธ์ํฌ๊ฐ ๊ณ ๋ฆฝ๋๋ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ๋ฟ์ ๋๋ค.
6. ๋ง์ง๋ง ๋ฐฉ์ (VM ํ์ฉ)
์๋์ฐ ํ๊ฒฝ์์ ๋ณ๋ OS ์ค์ ์์ด ์งํํ๋ ค๋ฉด, ๋์ปค ์ปจํ ์ด๋๋ก๋ ์ด๋ ต๋ค๋ ํ๋จ์ด ์ฐ์ต๋๋ค.
- ๋ฆฌ๋ ์ค ํ๊ฒฝ์ด๋ผ๋ฉด network - host ์ค์ ์ผ๋ก ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๋ณด์.
ํ๊ฒฝ ์ค์
- ์ธ๋ถ๋ง์์ Rocky-Linux Container๋ฅผ ์์ฑ.
- redis ์ค์น์ ํ์ํ rpm ์ถ๊ฐ.
dnf download --resolve --arch=x86_64 redis
- ์ดํ rpm ํ์ผ์ ๊ฐ๋ฐ๋ง ๋ด๋ถ NAS ์๋ฒ๋ก ์ด๋ํฉ๋๋ค.
- ๋ด๋ถ ๊ฐ๋ฐ๋ง, VMWare์์ Linux๋ฅผ ๊ตฌ๋ํฉ๋๋ค.
- ๊ณต์ ํด๋๋ฅผ ํตํด rpm์ ์ ๋ฌํ ํ, ์ค์นํฉ๋๋ค.
dnf --disablerepo="*" localinstall *.rpm --nogpgcheck
ํด๋ฌ์คํฐ ์ ์
- ๊ฐ VM์ ์ ์ํ์ฌ
/etc/redis.conf
์bind
๊ฐ์0.0.0.0
์ผ๋ก ํ์ฉ ์ฒ๋ฆฌ ํด ์ค๋๋ค. - ๊ฐ VM์ ๋ฐฉํ๋ฒฝ์ ์ ์ํ์ฌ
6379
์16379
ํฌํธ๋ฅผ ํ์ฉํฉ๋๋ค. /var/lib/redis/nodes.conf
๊ฐ VM๋ณ๋ก ๋ค๋ฅธ ๊ฐ์ด ๋ค์ด์๋์ง ํ์ธํฉ๋๋ค.- ํ VM์ ์ ์ํ์ฌ
redis-cli --cluster create <VM-IP>:6379 ~ ๋ฐ๋ณต ~ --cluster-replicas 1 --cluster-yes
๋ก ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. - CLUSTER INFO์์ cluster state๊ฐ ON์ผ๋ก ํ์๋๋์ง ํ์ธํ๊ณ , CLUSTER NODES๊ฐ ์ ์์ธ์ง ํ์ธํฉ๋๋ค.
๊ฒฐ๊ณผ (Lettuce ์ฐ๊ฒฐ ํ ์คํธ)
์ดํ, ํธ์คํธ์์ ๋ค์ Lettuce๋ฅผ ํตํด create.connect.sync๋ฅผ ์คํํ๋ฉด,
์ ์์ ์ผ๋ก ์ฐ๊ฒฐ๋ ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ๋ฐ๋ ๋ชจ์ต์ ํ์ธํ ์ ์์์ต๋๋ค.
Cluster INFO์ ๋ํ ๊ฐ๋ ์ ์์ ์ผ๋ก ๋ฐํ๋๋ค์.
๋ง๋ฌด๋ฆฌ
์ฌ๋ฌ๋ชจ๋ก ์ฌ๋ฏธ์๋ ํ
์คํธ์์ต๋๋ค.
ํ์ฌ๋ ์ข ๋ REDIS๋ฅผ JAVA์์ ํธ๋ค๋งํ๊ธฐ ์ํด LETTUCE๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
spring-boot-Redis๋ ๊ฐ๋ฅ์ ํ์ง๋ง, ์ปค๋งจ๋ string์ ์ง์ ๊ตฌ๋์ํค๊ธฐ์๋
lettuce๊ฐ ๋ ์ข๋ค ํ๋จํ์ต๋๋ค.
- Docker Bridge๋ก Redis Cluster๋ฅผ ๊ตฌ์ฑํ๋ฉด, ์ธ๋ถ์์ Lettuce ์ฐ๊ฒฐ์ ์คํจํฉ๋๋ค.
- ๊ฐ์ฅ ํฐ ์์ธ์ CLUSTER SLOTS ๊ฒฐ๊ณผ๊ฐ ๋ด๋ถ IP๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- Windows Docker๋ Host ๋คํธ์ํฌ๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ์ง์ํ๊ธฐ ๋๋ฌธ์, VM ๊ธฐ๋ฐ ๋ฆฌ๋ ์ค๊ฐ ์ฌ์ค์ ์ ์ผํ ๋์์ด์์ต๋๋ค.
์์ง ๋ฆฌ๋
์ค ๊ธฐ๋ฐ OS์์ ๋์ปค๋ฅผ ์ค์นํ ๋ค, host ๊ธฐ๋ฐ์ผ๋ก ๋์ ํ
์คํธ๋ฅผ ํ๋ ๊ฑด
์ํ๋์ง ์์์ง๋ง, Linux ๊ธฐ๋ฐ์์๋ host network ์ค์ ์ด ์์ ๋กญ๊ธฐ ๋๋ฌธ์
๋ธ๋ฆฟ์ง ๋คํธ์ํฌ์ ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ ์ ์์ ๊ฒ์ผ๋ก ์๊ฐํ๊ณ ์์ต๋๋ค.
๋น ๋ฅธ ์์ผ ๋ด์ ํ ์คํธํ์ฌ ๊ธ ์์ ์ ํด ๋๋๋ก ํ๊ฒ ์ต๋๋ค. ๐
ํ๋ฆฐ ๋ถ๋ถ์ด๋ ๋ ๋ณด์ํ ๋งํ ๋ถ๋ถ์ด ์๋ค๋ฉด,
๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค!
๊ฐ์ฌํฉ๋๋ค.