AWS ELB
Elastic Load Balancer? ๐ช
-
๋ค์์ ์๋น์ค์ ํธ๋ํฝ์ ๋ถ์ฐ ์์ผ์ฃผ๋ ์๋น์ค
-
Health Check : ์ง์ ํธ๋ํฝ์ ๋ฐ์์์ผ ์ด์์๋์ง ํ์ธํจ
-
Autoscaling๊ณผ ์ฐ๋ ๊ฐ๋ฅ
-
์ฌ๋ฌ ๊ฐ์ฉ์์ญ์ ๋ถ์ฐ ๊ฐ๋ฅ
-
์ง์์ ์ผ๋ก IP๊ฐ ๋ฐ๋์ด IP๊ณ ์ ๋ถ๊ฐ๋ฅ : ํญ์ ๋๋ฉ์ธ ๊ธฐ๋ฐ ์ฌ์ฉ
-
Application Load Balancer : ์ดํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ์์ ๋์ ( ๋๋ํจ )
-
Network Load Balaner : ๋คํธ์ํฌ ๋ ๋ฒจ์์ ๋์, TCP๊ธฐ๋ฐ, Elastic IPํ ๋น ๊ฐ๋ฅ ( ๋น ๋ฆ )
-
Class Load Balaner : ์๋ ์์ฌ์ฉ
-
Gateway Load Balaner : ๋จผ์ ํธ๋ํฝ์ ์ฒดํฌํจ, ๊ฐ์์ดํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ/ํ์ฅ ๊ด๋ฆฌ๋ฅผ ์ํ ์๋น์ค
Target Group
-
ALB๊ฐ ๋ผ์ฐํ ํ ๋์์ ์งํฉ
-
Instance, IP(private), lambda, ALB
์ฌ์ฉํด๋ณด๊ธฐ
์ด๋ฏธ ๋ง๋ค์ด๋์ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๊ธฐ์กด์ 1๋ฒ ์ธ์คํด์ค์ ๋ํด 2๋ฒ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด๋ณด์๋ค.
1๋ฒ ์ธ์คํด์ค : Docker[redis], Docker[nodejs-server]
2๋ฒ ์ธ์คํด์ค : Docker[nodejs-server]
์ฌ๋ฌ๊ฐ์ ์๋ฒ์์ ์ฑํ ์ด ์ ์ฐ๊ฒฐ๋๋์ง ํ์ธํ๊ธฐ์ํ
์คํ์ฉ์ผ๋ก ๋ก๋๋ฐธ๋ฐ์๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ๋ง๋ ๊ฑฐ๋ผ ๊ตฌ์กฐ๊ฐ ์กฐ๊ธ ์ด์ํ๋ค.(์ดํด๋ฐ๋)
์ถํ ์ ๋๋ก ๋ฐฐํฌ๋ฅผ ํ๋ค๋ฉด
1๋ฒ ์ธ์คํด์ค : Docker[redis]
2๋ฒ ์ธ์คํด์ค : Docker[nodejs-server]
3๋ฒ ์ธ์คํด์ค : Docker[nodejs-server]
์ด๋ ๊ฒ ์ญ์ญ ๋ง๋ค์ด์ 1๋ฒ ์ธ์คํด์ค๋ฅผ ์ ์ธํ ๋๋จธ์ง๋ง target group์ผ๋ก ๋ง๋ค์ด ๋ก๋๋ฐธ๋ฐ์๋ฅผ ๋๋ฆฌ๋๊ฒ ๋์๊ฒ๊ฐ๋ค.
(๊ทธ๋ฌ๋ฉด 1๋ฒ ์ธ์คํด์ค๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํฌ๊ฒ ์ค์ ํ๋ฉด ๋๊ธฐ๋๋ฌธ)
์ฑํ ์๋ฒ๋ redis์ pub/sub๊ธฐ๋ฅ์ ์ด์ฉํ๊ธฐ์ 2๋ฒ์ ์ธ์คํด์ค๋ 1๋ฒ ์ธ์คํด์ค์ redis์ ์ฐ๊ฒฐํด์ค์ผํ๋ค.!
(์ฆ ๊ฐ์ redis์๋ฒ๋ฅผ ๊ณต์ ํด์ผํจ)
์๋ก ์ฐ๊ฒฐ์ด ๋๋์ง ํ์ ์ด๋ณด์.
์๋ง ์๋ ๊ฒ์ด๋ค.ใ ใ
2๋ฒ์ธ์คํด์ค์์ 1๋ฒ์ธ์คํด์ค์ redis๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํด์๋ ๋ณด์๊ทธ๋ฃน์ ์ด์ฉํ ๊ฒ์ด๋ค.
2๋ฒ ์ธ์คํด์ค์ ๋ณด์๊ทธ๋ฃน์ ์ธ๋ฐ์ด๋๊ท์น์ 1๋ฒ ์ธ์คํด์ค์ ์ธ๋ฐ์ด๋๊ท์น์ ๋ฃ์ผ๋ฉด ๋๋ค.
(1 -> 2๋ ๋์ผํ๊ฒ ์ธ๋ฐ์ด๋๊ท์น์ ์ถ๊ฐ)
์. ์ด์ ์ฐ๊ฒฐ์ด ๋์์ผ๋ redis์๋ฒ์ ์ฐ๊ฒฐ์ ํด์ฃผ์
๊ทธ๋ฆฌ๊ณ ๋ก๋๋ฐธ๋ฐ์์ target group์ ์ธ์คํด์ค๋ฅผ ๋ฃ์ด์ฃผ์.
healthy check๊ฐ ๋๊ฐ๋ค ์ฑ๊ณต์ผ๋ก ๋ฌ๋ค๋ฉด
์ด์ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ผ๋๋ง๋ค 1,2๋ฒ ์๋ฒ์์ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์๋ต์ ํด์ค๊ฒ์ด๋ค.
์ฑ๊ณต!
๋ถ๋ช ๋ก๋๋ฐธ๋ฐ์๋ ์๋์๊ฐ๊ณ ์๊ณ
graphql๋ ์๋ต์ ์ํ๊ณ ์๋ค..
ํ์ง๋ง ์ฑํ
์๋ฒ๋ง message: "Session ID unknown"
์ ๋ฑ์ด๋ด๋ฉฐ ์ฐ๊ฒฐ์ด ๋์ง์์๋ค.
๋์ฒด ๋ฌด์์ด ๋ฌธ์ ์ง? ๋ ๋ฐ๋์ ๊ตฌ๊ธ๋งํ๋ฉฐ ์ฝ์ง์ ํด๋ณธ๋ค.
์ฌ์ค ์ ์๋ฌ ๋ฉ์ธ์ง๋ฅผ ์ฐพ๋๋ฐ ๋ฐ๋์ ์ด ๊ฑธ๋ ธ๋ค๊ณ ๋ณด๋๊ฒ ๋ง๋๊ฑฐ๊ฐ๋ค..
๊ทธ์ ๊น์ง ๋ก๋๋ฐธ๋ฐ์๊ฐ ๋ฌธ์ ์ธ๊ฐ? ๋ณด์๊ทธ๋ฃน์ด ๋ฌธ์ ์ธ๊ฐ? ๊ณ์ ์ด๊ฒ์ ๊ฒ ๋ฐ๊ฟ๋ณด์๋ค.
์๋ฌ๋ฉ์ธ์ง๋ก ์ฐพ์๋ณธ ๊ฒฐ๊ณผ
https://github.com/socketio/socket.io/issues/1739#issuecomment-64244359
์ด๊ณณ์์ ์ ๋ต์ ์ป๊ฒ๋์๋ค.
var socket = io.connect('https://www2.wecode.buzzntrend.com', {
transports: ['websocket'],
});
์ด๋ ๊ฒ ์ ์ธํด์ฃผ๋ ์ ์๋ํ์๋ค.
์ด์ ์๋ฌ๊ฐ ๋ฌ๋ ์ด์ ๋ฅผ ์์๋ณด์.
๊ณต์ํํ์ด์ง์์ ์ด์ ๋ฅผ ์ฐพ์๋ณด๋ HTTP ๋กฑ ํด๋ง ์ ์ก์ด Socket.IO ์ธ์ ์ ์๋ช ๋์ ์ฌ๋ฌ HTTP ์์ฒญ์ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํ๋ค.
๋ง์ด ์กฐ๊ธ ์ด๋ ค์์ ๋ด๊ฐ ์๊ฐํ๋๋ก ๋ค์ ๋งํด๋ณด์๋ฉด ๋นจ๊ฐ๋ค๋ชจ์น์์๋ฅผ ๋ณด๋ฉด ์์ฒญ์ด ์ฑ๊ณต,์คํจ๋ฅผ ๋ฐ๋ณตํ๊ณ ์๋ค.
์ด๋ฌํ ๋ฐ๋ณตํํ๋ฅผ ๋ณด์ด๋ ์ด์ ๋ HTTP ๋กฑ ํด๋ง ์ ์ก์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ํญ์ ๊ฐ์ ์๋ฒ์ ๋์ฐฉํด์ผ๋๋๋ฐ
๋ก๋๋ฐธ๋ฐ์์ ๋ผ์ด๋-๋ก๋น ์๊ณ ๋ฆฌ์ฆ์ ํตํด ๋งค ์๊ฐ ์ค์๊ฐ ์์ฒญ์ ์ฌ๋ฌ๊ฐ์ ์๋ฒ์ ๋ฟ๋ ค์ฃผ๊ธฐ ๋๋ฌธ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ target group์ ์๋ ์คํฐํค์ธ์ ์ ํ์ฑํ ์ํค๋ฉด ๋๋ค.
์คํฐํค์ธ์ ์ด๋ ์ฒซ ์์ฒญ์ ์๋ตํด์ค ์๋ฒ์๋ง ๊ป๋ฑ์ง ์ฒ๋ผ ์์ฒญ์ ๋ณด๋ด๋๊ฒ์ด๋ค.
ํ์ง๋ง ์ด๋ถ๋ถ์ ๋์ ํ ์คํธ ๋ชฉ์ ๊ณผ ๋ง์ง ์๊ธฐ์ ๋ณด๋ฅํด ๋์๊ณ ์์ฒ๋ผ transports:[โwebsocketโ] ์ ์ ์ด์ค์ผ๋ก์จ ํด๋ง์์ฒญ์ ๋นํ์ฑํ ์์ผ ํด๊ฒฐํ์๋ค.
๋!