๊ด€๋ฆฌ ๋ฉ”๋‰ด

Coding Planet

[Docker Swarm - 8 ] GlusterFS ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜์—ฌ Docker Swarm ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•˜๊ณ  ๋™๊ธฐํ™” ๊ฒ€์ฆํ•˜๊ธฐ ๋ณธ๋ฌธ

๐Ÿ›ณ๏ธ Docker

[Docker Swarm - 8 ] GlusterFS ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜์—ฌ Docker Swarm ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•˜๊ณ  ๋™๊ธฐํ™” ๊ฒ€์ฆํ•˜๊ธฐ

jhj.sharon 2024. 3. 14. 14:57
๋ฐ˜์‘ํ˜•

GlusterFS ๊ณต์œ  ๋ณผ๋ฅจ์„ Docker Swarm ์„œ๋น„์Šค์˜ ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธํ•˜๊ณ ์ž ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์„œ๋น„์Šค๋ฅผ ์ด๋ฃจ๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ณต์œ  ๋ณผ๋ฅจ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. Docker์—์„œ๋Š” --mount ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด์ „ ํฌ์ŠคํŠธ์—์„œ ์„ค์น˜ํ•œ nginx-service ์„œ๋น„์Šค๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด์„œ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธ ํ•˜๊ฒ ๋‹ค.

 

1. ๊ธฐ์กด ์„œ๋น„์Šค ์‚ญ์ œ

์ƒˆ๋กœ์šด ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์„œ๋น„์Šค๊ฐ€ ์—†๋Š” ์ƒํƒœ๋ผ๋ฉด ์ƒ๋žต

sudo docker service rm nginx-service

 

 

2. GlusterFS ๋ณผ๋ฅจ ๋งˆ์šดํŠธ 

๋ชจ๋“  ๋…ธ๋“œ์— GlusterFS ๊ณต์œ  ๋ณผ๋ฅจ(/data/brick1)์„ ๋งˆ์šดํŠธํ•ด์•ผ ํ•œ๋‹ค. ๋งˆ์šดํŠธ ํฌ์ธํŠธ๊ฐ€ ์ด๋ฏธ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด, ๋จผ์ € ๋งˆ์šดํŠธ ํฌ์ธํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋งˆ์šดํŠธ ํฌ์ธํŠธ๋ฅผ /mnt/glustervolume์œผ๋กœ ํ•œ๋‹ค.

๊ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰ํ•œ๋‹ค. ์ฆ‰ ๊ณต์œ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•  ๋งˆ์šดํŠธ ํฌ์ธํŠธ๋ฅผ ๊ฐ ๋…ธ๋“œ์— ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

sudo mkdir -p /mnt/glustervolume

 

๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•œ๋‹ค. ์„ค์ •ํ•œ ๋ณผ๋ฅจ ์ด๋ฆ„(glustervolume)๊ณผ ํด๋Ÿฌ์Šคํ„ฐ์˜ ํ•œ ๋…ธ๋“œ IP๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ๋ชจ๋“  ๋ชจ๋“œ์—์„œ ์‹คํ–‰ํ•œ๋‹ค. ๊ฐ ๋…ธ๋“œ์—์„œ GlusterFS ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•œ ํ›„์—๋Š”, ํ•ด๋‹น ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” Docker ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๋งˆ์šดํŠธ๋œ ๋ณผ๋ฅจ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. 

sudo mount -t glusterfs 192.168.0.66:/glustervolume /mnt/glustervolume

 

๋งˆ์šดํŠธ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜ํ•œ๋‹ค.

mount | grep glusterfs

 

 

3. Docker Swarm์—์„œ ์„œ๋น„์Šค ์ƒ์„ฑ ๋ฐ GlusterFS ๋ณผ๋ฅจ ๋งˆ์šดํŠธ

์ด์ œ Docker Swarm ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด์„œ GlusterFS ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค. Docker Swarm์€ ๊ธฐ๋ณธ์ ์œผ๋กœ GlusterFS์™€ ๊ฐ™์€ ์™ธ๋ถ€ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ง์ ‘์ ์œผ๋กœ ๋งˆ์šดํŠธํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ๋ณผ๋ฅจ ๋งˆ์šดํŠธ๋Š” ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘ ์‹œ ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค.

์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๊ฐ ์ปจํ…Œ์ด๋„ˆ์˜ /usr/share/nginx/html ๋””๋ ‰ํ† ๋ฆฌ์— GlusterFS ๊ณต์œ  ๋ณผ๋ฅจ(/mnt/glustervolume)์„ ๋งˆ์šดํŠธํ•œ๋‹ค. ์ด๋Š” nginx๊ฐ€ ํ˜ธ์ŠคํŒ…ํ•  ์ •์  ํŒŒ์ผ๋“ค์ด GlusterFS๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ๋˜๊ณ  ๊ณต์œ ๋  ์ˆ˜ ์žˆ๊ฒŒ ๋‹ค.

sudo docker service create \
  --name nginx-service \
  --replicas 3 \
  --mount type=bind,src=/mnt/glustervolume,dst=/usr/share/nginx/html \
  --publish published=80,target=80 \
  nginx:latest

 

 

4. ๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ ๋ฐ ๋™๊ธฐํ™” ํ™•์ธ

์ด์ œ ํด๋ผ์ด์–ธํŠธ์ธก์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™๊ธฐํ™”๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

๋จผ์ €, ํ•˜๋‚˜์˜ ๋…ธ๋“œ์—์„œ /mnt/glustervolume์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ณ , ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ๋„ ์ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณด์ด๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ๋™๊ธฐํ™”๊ฐ€ ์ž˜ ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ๋Š”์ง€ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋งค๋‹ˆ์ € ๋…ธ๋“œ์—์„œ GlustFS ๋ณผ๋ฅจ์— ํ…Œ์ŠคํŠธ ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.

echo "Hello from GlusterFS!" | sudo tee /mnt/glustervolume/testfile.txt > /dev/null

 

๋‹ค๋ฅธ ๋…ธ๋“œ(์˜ˆ: worknode1, worknode2)์—์„œ /mnt/glustervolume/testfile.txt ํŒŒ์ผ์ด ๋ณด์ด๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ด ํŒŒ์ผ์„ cat ๋ช…๋ น์–ด๋กœ ์ฝ์–ด๋ณด๋ฉด, ๋™์ผํ•œ ๋‚ด์šฉ์ด ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•œ๋‹ค

cat /mnt/glustervolume/testfile.txt

 

๋งค๋‹ˆ์ € ๋…ธ๋“œ์—์„œ ํ…Œ์ŠคํŠธ ํŒŒ์ผ ์ƒ
์›Œ์ปค ๋…ธ๋“œ์—์„œ ๋™์ผํ•œ ๋‚ด์šฉ ์ฝ๊ธฐ ๊ฐ€๋Šฅ

 

 

5. Docker Swarm ์„œ๋น„์Šค๋ฅผ ํ†ตํ•œ ๋™๊ธฐํ™” ๊ฒ€์ฆ

Docker Swarm ์„œ๋น„์Šค์—์„œ ์ƒ์„ฑ๋œ Nginx ์ปจํ…Œ์ด๋„ˆ๊ฐ€ GlusterFS ๊ณต์œ  ๋ณผ๋ฅจ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋น™ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, HTML ํŒŒ์ผ์„ ๊ณต์œ  ๋ณผ๋ฅจ์— ์ €์žฅํ•˜๊ณ , Nginx๊ฐ€ ์ด ํŒŒ์ผ์„ ์›น ํŽ˜์ด์ง€๋กœ ์ œ๊ณตํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1) /mnt/glustervolume์— ๊ฐ„๋‹จํ•œ HTML ํŒŒ์ผ์„ ์ƒ์„ฑ

์ด๋ฒˆ์—๋Š” ์›Œ์ปค๋…ธ๋“œ์—์„œ ์ƒ์„ฑํ–ˆ๋‹ค.

echo '<h1>Hello, GlusterFS and Docker Swarm!</h1>' | sudo tee /mnt/glustervolume/index.html > /dev/null

 

2) ์›น ๋ธŒ๋ผ์šฐ์ €๋‚˜ curl ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Nginx ์„œ๋น„์Šค์— ์ ‘๊ทผ

curl http://[๋…ธ๋“œ์˜ IP ์ฃผ์†Œ]

 

๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋น™ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์–ด๋–ค ip์—์„œ๋“  ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

๋ฐ˜์‘ํ˜•
Comments