dig (domain information groper) ๋? dig๋ ๋คํธ์ํฌ ๊ด๋ฆฌ ๋๊ตฌ ์ค ํ๋๋ก DNS (Domain Name System) ๋ฅผ ์ง์ํ ์ ์๋ ๋๊ตฌ์ ๋๋ค. nslookup ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ DNS ๋ฅผ ์ง์ํ ์ ์์ง๋ง, ๋ณด๋ค ๋ ํธํ ์ธํฐํ์ด์ค์ ์ฌ์ฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด์ ๋๋ถ์ด IDN (Internationalized Domain Name) ์ฟผ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค. (nslookup๋ ์ง์) dig ์ค์น ์ต๊ทผ OS๋ค์๋ dig ์ปค๋งจ๋๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์ค์น๋์ด ์์ต๋๋ค. ๋ง์ฝ, dig ์ปค๋งจ๋๊ฐ ์์ ๊ฒฝ์ฐ ์๋์ ๋ฐฉ๋ฒ์ผ๋ก ์ค์นํ๋ฉด ๋ฉ๋๋ค. Mac brew install dig Windows ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ผ๋ก๋, ISC ๋ค์ด๋ก๋ ์ ์ ์ํ์ฌ ๋ค์ด๋ก๋ ํ ์ ์์ต๋๋ค. windows dig ์ค์น ๋..
์ฟ ๋ฒ๋คํฐ์ค API ์์ฒญ ๊ณผ์ ๊ฐ๋จํ๊ฒ API Server์ ์ ๊ทผํ๊ธฐ ๊น์ง ํ๋ก์ธ์ค๋ฅผ ๋ณด๋ฉด, ์ฒซ๋ฒ์งธ, ์์ฒญ์ ๋ณด๋์ ๋ ์ธ์ฆ(Authentication) ๊ณผ์ ์ ๊ฑฐ์น๋ค. "๋๋ k8s cluster์ ๋ฑ๋ก๋ ์ฌ์ฉ์๊ฐ ๋ง๋๊ฑฐ์ง?" ๋๋ฒ์งธ, ์ธ์ฆ ๊ณผ์ ์ ํต๊ณผํ ํ ์ธ๊ฐ(Authorization) ๊ณผ์ ์ ๊ฑฐ์น๋ค. "๋ฑ๋ก๋ ์ฌ์ฉ์๋ ๋ง๊ณ ์ด ์ก์ ์ ํ ์ ์๋ ๊ถํ์ ์๋?" ์ธ๋ฒ์งธ, ์ธ์ฆ๊ณผ ์ธ๊ฐ๋ฅผ ํต๊ณผํ๊ฒ ๋๋ฉด Admission Control์ ๊ฑฐ์น๋ค. "๋๊ฐ ๋ณด๋ธ ์์ฒญ์ ์ ์ ํ์ง ํ์ธํด๋ณผ๊น?" ์ด ๊ณผ์ ์ ๋ฌด์ฌํ ๋ง์น๋ฉด "์์ฒญ ์น์ธ"์ด ๋๋ค. ํ์ง๋ง ๋ง์ฝ ํ ๊ณผ์ ์ด๋ผ๋ ์ ์ ์น ์๋ค๋ฉด "์์ฒญ ๋ฐ๋ ค"๊ฐ ๋๋ค. ๊ทธ๋ผ ๋ณธ๊ฒฉ์ ์ผ๋ก AWS EKS๋ฅผ ์ด์ฉํ์ฌ ๋ง๋ ํด๋ฌ์คํฐ์ ์ต์ด ์์ฑํ IAM ์ฌ์ฉ์๊ฐ ์๋ ์๋กญ๊ฒ ๋ง๋ I..
์ฟ ๋ฒ๋คํฐ์ค Docker Hub-Private Image ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ Private Image๋ฅผ ๊ฐ์ ธ์์ผ ํ ๋ ์ฟ ๋ฒ๋คํฐ์ค์ secret์ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค. ์ด ๊ธ์์๋ Docker Hub์ ๊ธฐ์ค์ผ๋ก ์์ฑ ํฉ๋๋ค. ์ฐ์ Private Image ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ธ ๋งํผ ์๋์ ๊ฐ์ด ์ด๋ฏธ Docker Hub์ ์ด๋ฏธ์ง๊ฐ ๋ฑ๋ก๋์ด ์๋ค๋ ๊ฐ์ ํ์ ์งํ ํฉ๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค ๋งค๋ํ์คํธ ํ์ผ ์์ฑ ์ ๋ ์๋์ ๊ฐ์ด ๊ฐ๋จํ Deployment๋ฅผ ์ค์ ํด์ฃผ๋ ๋งค๋ํ์คํธ ํ์ผ(.yaml)์ ์์ฑ ํ์์ต๋๋ค. Private Image๋ฅผ ๊ฐ์ ธ์์ ์ฌ์ฉํ ๋งค๋ํ์คํธ ํ์ผ์ viํธ์ง๊ธฐ๋ก ์ฌ์ ํ spec.template.spec.ImagePullSecrets.name ํ๋์ ์์์ ๊ฐ์ ์ค์ ํด์ค๋๋ค. ์ด ๊ฐ์ ์ดํ ์์ฑํ secr..
Cert-manager๋? Cert-manager๋ Kubernetes ๋ด๋ถ์์ HTTPS ํต์ ์ ์ํ ์ธ์ฆ์๋ฅผ ์์ฑํ๊ณ , ๋ ์ธ์ฆ์์ ๋ง๋ฃ ๊ธฐ๊ฐ์ด ๋๋ฉด ์๋์ผ๋ก ์ธ์ฆ์๋ฅผ ๊ฐฑ์ ํด์ฃผ๋ ์ญํ ์ ํ๋ Certificate manager controller์ ๋๋ค. ์ฝ๊ฒ ๋งํด Kubernetes ๋ด์์ ์ธ๋ถ์ ์กด์ฌํ๋ Issuers๋ฅผ ํ์ฉํ๊ฑฐ๋ selfsigned Issuer๋ฅผ ์ง์ ์์ฑํด์ ์์ฑํ์ฌ Certificate๋ฅผ ์์ฑํ๊ณ , ์ด๋ ์์ฑ๋ Certificate๋ฅผ ๊ด๋ฆฌํ๋ฉฐ ์ธ์ฆ์์ ๋ง๋ฃ ์๊ฐ์ด ๊ฐ๊น์์ง๋ฉด ์ธ์ฆ์๋ฅผ ์๋์ผ๋ก ๊ฐฑ์ ํด์ค๋๋ค. Cert-manager๊ฐ ์ฌ์ฉํ๋ ์ธ๋ถ์ ์กด์ฌํ๋ Issuer๋ ์๋์ ์ด๋ฏธ์ง์ ๊ฐ์๋ฐ, ๋ํ์ ์ธ Issuer๋ก ๋ฌด๋ฃ๋ก ์ฌ์ฉ๋๊ณ ์๋ let's enscrypt๋ฅผ ๋ง์ด ์ฌ์ฉํ..
Import $ mysql -u๊ณ์ -p ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช ํ์ผ์ ์ ์ฅํ ์์น/ํ์ผ๋ช ex) $ mysqldump -uroot -p1234 databasename > dump.sql ํน์ ํ ์ด๋ธ๋ง dumpํ๊ธฐ (์ํฌํธ๋ ์ด์ฐจํผ ๋๊ฐ์ด ํ ์ด๋ธ์ DB์ import ํ๋๊ฑฐ๋๊น ์์ ๋์ผ) $ mysqldump -u ๊ณ์ -p ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช ํ ์ด๋ธ๋ช > ํ์ผ์ ์ ์ฅํ ์์น/ํ์ผ๋ช ex) $ mysqldump -uroot -p1234 databasename tablename > dump.sql ํน์ ์กฐ๊ฑด์ ๋ถํฉ๋๋ rows๋ง dumpํ..
1. MySQL์ ๊ธฐ๋ณธํ ์ด๋ธ MySQL์ ์ฒ์ ์ค์น์์ 'mysql'์ด๋ผ๋ ๋ฐ์ดํ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๋ค. ์ด ๋ฐ์ดํ๋ฒ ์ด์ค๋ db,host,user, tables_priv,columns_priv, function๋ผ๋ ๊ธฐ๋ณธํ ์ด๋ธ์ ๊ฐ์ง๊ณ ์๋ค. ์ด ํ ์ด๋ธ๋ค์ MySQL์ ๊ถํ๊ณผ ๊ด๋ จ์ด ์๋ค. 2. MySQL์ ๊ธฐ๋ณธํ ์ด๋ธ๊ณผ ๊ถํ (1) userํ ์ด๋ธ : ์ ์ฒด์๋ฒ์ ์ ์ฉ๋๋ ๊ถํ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์๋ค. (2) hostํ ์ด๋ธ : ํธ์คํธ์ ์ฒด์ ๋ํ ์๋ฒ์ ์ ๊ทผ๊ถํ์ ๋ถ์ฌํ๋ค. (3) dbํ ์ด๋ธ : ๊ฐ๊ฐ์ ๋ฐ์ดํ๋ฒ ์ด์ค์ ์ ๊ทผ ๊ถํ์ ์ค์ ํ๋ค. (4) tables_priv : ํ ์ด๋ธ์ ๋ํ ์ ๊ทผ๊ถํ์ ์ค์ ํ๋ค. (5) columns_priv : ํ์ ๋ํ ์ ๊ทผ ๊ถํ์ ์ค์ ํ๋ค. (6) function : ์ฌ์ฉ์์ ์ mysql..
This text is written by Nadee Poornima To achieve the high availability and scaling of MySQL they have introduced two types of MySQL clusters as MySQL InnoDB Cluster(using InnoDB as the engine) and MySQL NDB Cluster (using NDB engine). Currently, WSO2 products are supporting for this NDB Cluster, and today I am going to explain how to set up an NDB Cluster by using a Docker image of NDB Cluster...
Docker ์ปจํ ์ด๋(container)์ ์ฐ์ฌ์ง ๋ฐ์ดํฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ปจํ ์ด๋๊ฐ ์ญ์ ๋ ๋ ํจ๊ป ์ฌ๋ผ์ง๊ฒ ๋ฉ๋๋ค. Docker์์ ๋์๊ฐ๋ ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ปจํ ์ด๋์ ์๋ช ์ฃผ๊ธฐ์ ๊ด๊ณ์์ด ๋ฐ์ดํฐ๋ฅผ ์์์ ์ผ๋ก ์ ์ฅ์ ํด์ผํ๋๋ฐ์. ๋ฟ๋ง ์๋๋ผ ๋ง์ ๊ฒฝ์ฐ ์ฌ๋ฌ ๊ฐ์ Docker ์ปจํ ์ด๋๊ฐ ํ๋์ ์ ์ฅ ๊ณต๊ฐ์ ๊ณต์ ํด์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์จ์ผํฉ๋๋ค. ์ด๋ ๊ฒ Docker ์ปจํ ์ด๋์ ์๋ช ์ฃผ๊ธฐ์ ๊ด๊ณ์์ด ๋ฐ์ดํฐ๋ฅผ ์์์ ์ผ๋ก ์ ์ฅํ ์ ์๋๋ก Docker๋ ๋๊ฐ์ง ์ต์ ์ ์ ๊ณตํ๋๋ฐ์. ์ฒซ๋ฒ์งธ๋ Docker ๋ณผ๋ฅจ(volume), ๋๋ฒ์งธ๋ ๋ฐ์ธ๋ ๋ง์ดํธ(bind mount)์ ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ Docker ์ปจํ ์ด๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ฐ ์ฌ์ฉ๋๋ ์ด ๋๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ณผ๋ฅจ ์์ฑ ๋ฐ ์กฐํ ..
sed ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ๋ " / " ๊ฐ ๊ธฐ๋ณธ ๊ตฌ๋ถ์์ด์ง๋ง "/home" ์ "/home2" ๋ก ์นํ์ ํ ๋ ๋์ผํ ํน์๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ์๊ธฐ๋ ํ์์ด์๋ค. ๊ตฌ๊ธ๋ง์ ํ๋ sed ๋ช ๋ น์ด์ ๋ชจ๋ ๊ตฌ๋ถ์๋ ๋ชจ๋ ๊ธฐํธ๊ฐ ๊ตฌ๋ถ์๊ฐ ๋ ์ ์๋ค๊ณ ํ๋ค. ๋ฆฌ๋ ์ค ์ ์คํฌ๋ฆฝํธ ๋ฑ์์ sed๋ฅผ ์ฌ์ฉํ ๋ "sed: -e expression #1, char 12: unknown option to `s`" ์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก sed -i "s/string/number/gi" ์ ๊ฐ์ด ์ฌ์ฉ๋ ํ ๋ฐ, /๋ฅผ |๋ก ๋ณ๊ฒฝ์์ผ ์ฃผ๊ฑฐ๋ ๋ฌธ์์ด ์์ /๊ฐ ์๋ค๋ฉด \/ ๋ก ์ฌ์ฉํ์ฌ ์ด์ค์ผ์ดํ ์์ผ์ฃผ์ด์ผ ํฉ๋๋ค. ex1) sed -i "s/string/number/gi" --> sed -i "s|string|nu..
s3 ๋ฒํท ์ ์ฑ ์ด๋? aws s3์ ๋ฒํท์ ๋ง๋ค๊ณ ํ๋์ ์ด๋ฏธ์ง ํ์ผ์ ์ ๋ก๋ ํ ํด๋น ์ด๋ฏธ์ง์ ์ฃผ์๋ฅผ ํธ์ถํด ๋ณด๋ฉด ์๋ ์ด๋ฏธ์ง์ ๊ฐ์ด Access Denied์ค๋ฅ๋ฅผ ๋ฐ์์ํค๋ฉด์ ์์ธ์ค ๋์ง ์๋๋ค. ์ด๋ฐ ํ์์ ํด๊ฒฐํ๊ธฐ ์ํด ์์ฑํ s3๋ฒํท์ ๋ฒํท ์ ์ฑ ์ด๋ผ๋ ๊ฒ์ ์์ฑํด์ผ ํฉ๋๋ค. s3 ๋ฒํท ์ ์ฑ ์ด๋ ์ฌ์ฉ์๊ฐ s3 ๋ฒํท์ ์์ธ์ค ํ ์ ์๋ ์ ์ฑ ์ต์ ์ค ํ๋ ์ด๋ฉฐ json ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฒํท์ ๋ํ ์์ธ์ค๋ฅผ ์ ์ด ํฉ๋๋ค. s3๊ฐ ๋ฌด์์ธ์ง? ๋ฒํท์ด ๋ฌด์์ธ์ง?์ ๋ํ ๊ถ๊ธ์ฆ์ ๋ค์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์๊ธธ ๋ฐ๋๋๋ค. Amazon S3์ด๋ ๋ฌด์์ธ๊ฐ์? - Amazon Simple Storage Service HTTP๋ฅผ ํตํ SOAP ์ง์์ ์ค๋จ๋์์ง๋ง HTTPS๋ฅผ ํตํด ๊ณ์ํด์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ก์ด Am..
์ด ๊ธ์ ์ ์๊ถ์ ์๋ฆฌ๋ฐค ๋์๊ฒ ์์ต๋๋ค. "์ํธํ ํต์ " ๋ญ๊ฐ ํ ๋ฆฌ์ฐ๋ ๋ธ๋ก๋ฒ์คํฐ ์ฐ์ ์คํ์ด ์ก์ ์ํ์์๋ ๋์ฌ๋ฒํ ๋จ์ด์ฃ ํ์ง๋ง ์๊ฐ ์ธ๋ก ์ฐ๋ฆฌ ์ผ์์ํ์์ ๋ง์ด ์ฌ์ฉํ๊ณ ์์ด์. ๊ทธ ๋ํ์ ์ธ ์๊ฐ https ์ฃ https ๋ ๊ธฐ์กด์ ์ธํฐ๋ท ๋ฐฉ์(http)์ ๋ณด์์ ๊ฒฐํฉํ ๊ฒ์ด๊ณ , ์ค๋์ ๊ทธ "๋ณด์" ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง์ ๋ํด ๊ณต๋ถํ ๊ฑฐ์์. 1. ๊ทธ "๋ณด์"์ด ๋ญ๋ฐ ์ํธํ ํต์ ์ด ๊ฐ๋ฅํ ๊ฒ์ผ๊น? ์ํธํ ํต์ ์ SSL(๋๋ TLS)๋ผ๋ ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ ๊ฒ์ ์๋ฏธํด์. ์ฐ๋ฆฌ๊ฐ ์ฒ์ ๋ง๋ ์ฌ๋๊ณผ ์ธ์ฌํ ๋ฏ ์ฌ์ฉ์์ ์น์๋ฒ๊ฐ ์ํธํ ํต์ ์ ํ ๋ ์ธ์ฌํ๋ฉฐ ์ด๋ค ์ํธํ๋ฅผ ์ฌ์ฉ ํ ๊ฒ์ธ์ง ์๊ธฐ๋ฅผ ๋๋์ฃ . ์ด๋ฌํ ๊ณผ์ ์ SSL Handshake๋ผ๊ณ ์นญํด์. ๋ฒ์ธ์ ์ธ ์๊ธฐ๋ก h..
TCP ์ UDP๋ ์ ๋ขฐ์ฑ vs ์ ์์ฑ ์ ํน์ง์ ๋๊ณ tcp์ udp๋ฅผ ์ด์ฉํ๋ ์๋น์ค ๋ค์ด ๊ฐ๋ฆฐ๋ค. TCP๋ - HTTP, Email, FIle transfer UDP๋ - DNS, Broadcasting ๋๋ฉ์ธ ์ด๋ฆ๊ณผ IP์ฃผ์๋ฅผ ์๋ก ๋ณํํ๋ ์ญํ ์ ํ๋ DNS๋ ์ UDP์ ์ํด ์์๊น? UDP์ ํน์ง UDP๋ ํธ๋์คํฌํธ ๊ณ์ธต ํ๋กํ ์ฝ์ด ํ ์ ์๋ ์ต์ ๊ธฐ๋ฅ์ผ๋ก ๋์ ์ฆ, ๋ค์คํ/์ญ๋ค์คํ ๊ธฐ๋ฅ๊ณผ ๊ฐ๋จํ ์ค๋ฅ ๊ฒ์ฌ ๊ธฐ๋ฅ์ ์ ์ธํ๋ฉด IP์ ์๋ฌด๊ฒ๋ ์ถ๊ฐํ์ง ์๋๋ค. ๊ทธ๋์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๊ฐ TCP๋์ ์ UDP๋ฅผ ์ ํํ๋ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฑฐ์ IP์ ์ง์ ํต์ ํ๋ ๊ฒ tcp์ ๋นํด ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ๊ณ ์๊ธฐ์ DNS์๋น์ค๊ฐ ์ฌ์ฉํ๊ธฐ ์ ํฉํ๋ค. ์ฐ๊ฒฐ์ ์์ ๊ณผ ๋ ์ค์ ์ด ์๋ค๋ ์ ๋ง์ฝ dns๊ฐ ..
์ ์ ์น์ HTTPS๋ก ๋ฐฐํฌํ๊ธฐ์ ์ด์ด ์ด๋ฒ์๋ EC2 ์ธ์คํด์ค๋ก ๋ฐฐํฌํ ํฐ์บฃ์ HTTPS๋ก ์ ๊ทผํ๊ณ ์ ํฉ๋๋ค. [AWS] HTTP to HTTPS๋ก ๋ฐฐํฌํ๊ธฐ (S3 ๊ธฐ์ค) ์ด์ ๊ธ 'Route 53 ๋๋ฉ์ธ ๊ตฌ๋งค ํ ์ฐ๊ฒฐํ๊ธฐ'์์ ๋๋ฉ์ธ ๊ตฌ๋งค ํ S3์ ์ฐ๋์์ผฐ์ต๋๋ค. ํ์ง๋ง Http๋ก ์ ์๋๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ Https๋ก ๋ฐ๊ฟ๋ณด๋ ์์ ์ ํ๊ฒ ์ต๋๋ค. Https๋ก ๋ฐ๊พธ๊ธฐ ์ํด์๋ S3, CloudFront, kingofbackend.tistory.com ์ ์ ์น ๊ฐ์ ๊ฒฝ์ฐ์๋ Application Load Balacner(ALB)๊ฐ ํ์์์ด์ ๊ทธ๋ฆฌ ์ด๋ ต์ง ์์์ง๋ง, ๋์ ์น(EC2) ๊ฐ์ ๊ฒฝ์ฐ๋ ALB๋ฅผ ํ์๋ก ํฉ๋๋ค. ๋ฐ๋ผ์ AWS์ ๋คํธ์ํฌ์ ๋ํ ๊ธฐ์ด์ง์์ด ํ์ํฉ๋๋ค. ALB๋ ๊ฐ๋จํ ๋งํด์ L7 Lo..
์ด ๋ฌธ์ ๋ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์์ mysql ํจ์ค์๋ ํ๋ฌ๊ทธ์ธ "caching_sha2_password"์ ์ํํ์ง ๋ชปํด์ ์๊ธฐ๋ ์ค๋ฅ์ ๋๋ค. ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋๋ก ์ ์ ์ ํจ์ค์๋ Plusin์ ๋ฐ๊ฟ์ค์๋ค. mysql์ ์ ์ํ์๊ณ , ์๋์ ๊ฐ์ด ์์ ํฉ๋๋ค. mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Xptmxm1212!@'; ์์ ์ด ์๋ฃ ๋์๋ค๋ฉด, ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด Plugin์ด ๋ณ๊ฒฝ๋์์๊ฑฐ์์ :) mysql> SELECT Host,User,plugin,authentication_string FROM mysql.user;
1. ec2 ์ ์ ํ cd/etc/mysql/mysql.conf.d ๋ก ์ด๋ํฉ๋๋ค. 2. sudo vi mysqld.cnf 3. bind-address 127.0.0.1 ๊ฐ ์ ํ์ค ๋งจ์์ # ๋ฅผ ๋ฃ์ด ์ฃผ์์ฒ๋ฆฌ ํด์ฃผ๊ธฐ 4. mysql ์ ์(sudo /usr/bin/mysql -u root -p) 5. ์ธ๋ถ์ ์ ํ์ฉ sql๋ฌธ ์ ๋ ฅ mysql> create user 'root'@'%' identified by '[password]'; mysql> grant all privileges on *.* to 'root'@'%' with grant option; 'root' ๋์ ์ ์ ์ด๋ฆ์ ๋ฃ์ด์ฃผ์๋ฉด๋๊ณ , %๋ ๋ชจ๋ ๊ณณ์์ ์ ์ ํ์ฉ์ด๋ผ๋ ๋ป์ ๋๋ค. 6. mysql ์ฌ์์ํ๊ธฐ sudo service mysql res..
์ด๋ฒ ๊ธ์ ์งํํ๋ ค๋ฉด ๋จผ์ ์ ํ๋์ด์ผ ํ ์์ ์ด ์์ต๋๋ค. ๋ํ aws, k8s์ ๋ํ ๊ธฐ์ด ์ง์์ด ์์ผ๋ฉด ์ด๋ ค์ธ ์ ์์ต๋๋ค. -k8s 1.19๋ฒ์ -aws cli ์ค์น ํ aws์ ์ก์ธ์ค ํ๊ธฐ -eksctl ์ค์น -์๋์ ๊ฐ์ vpc ๊ตฌ์ถ ์ 3๊ฐ์ง ์ ํ์์ ์ด ๋์๋ค๋ ๊ฐ์ ํ์ ์งํํฉ๋๋ค. k8s ํด๋ฌ์คํฐ ์์ฑ ์ฐ์ ํผ๋ธ๋ฆฟ ์๋ธ๋ท 3๊ฐ๋ฅผ ๊ฐ์ง๋ VPC๋ฅผ ํตํด EKS๋ฅผ ์ด์ฉํ์ฌ k8s ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค. $ eksctl create cluster -f create-cluster.yaml ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ k8s ํด๋ฌ์คํฐ๋ฅผ ์์ฑํฉ๋๋ค. * create-cluster.yaml apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: "..
๋ฆฌ๋ ์ค์์คํ ์๋ ์ฌ์ฉ์๋ฅผ ์์ฑํ๋ฉด ์๋์ผ๋ก ์ฌ์ฉ์๋ช ๊ณผ ๊ฐ์ ๊ทธ๋ฃน์ด ์์ฑ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ฆฌ๋ ์ค์์๋ ์์ ์ ๊ณ์ ์ด๋ฆ๊ณผ ๋์ผํ ๊ทธ๋ฃน์ ๋ฐ๋์ ์ํ๊ฒ ๋๋ฉฐ, ํน์ ๊ทธ๋ฃน์ ๋ง๋ค์ด์ ๊ธฐ์กด์ ์ฌ์ฉ์๋ค์ด ์์๋๊ฒ ํ ์๋ ์์ต๋๋ค. ๊ทธ๋ฃน ์ถ๊ฐ - groupadd groupadd ๋ช ๋ น์ด๋ก ์์ฑ๋๋ ๊ทธ๋ฃน์ ํน๋ณํ ์ต์ ์ด ์ฃผ์ด์ง์ง ์๋ ํ GID๋ 499 ๊น์ง๋ ํ ๋น๋์ง ์๋๋ค. ์ฆ, GID ๊ฐ 500 ์ด์์ธ ๊ทธ๋ฃน๋ค ๊ฐ์ด๋ฐ ๊ฐ์ฅ ๋ฎ์ GID ๋ฒํธ๋ก ๊ทธ๋ฃน์ ์์ฑํ๊ฒ ๋๋ค( -r ์ต์ ์ฌ์ฉ์์๋ ์์ธ). BASH $ groupadd teamzezz ์๋ฌด ์ต์ ์์ด ์๋ก์ด ๊ทธ๋ฃน์ ์์ฑํ๋ฉด ๊ธฐ์กด์ ์๋ ๊ทธ๋ฃน์ ๋ง์ง๋ง ๋ฒํธ ๋ค์๋ฒํธ๋ฅผ GID ๋ก ํ ๋นํ์ฌ teamzezz ๋ผ๋ ๊ทธ๋ฃน์ด ์์ฑ๋๋ค. BASH grep teamzezz /e..
โถ 1. root ๋น๋ฐ๋ฒํธ๋ฅผ ๋จผ์ ๋ณ๊ฒฝํ์ฌ ์ค๋ค. #sudo passwd root โถ 2. sshd_config ์ค์ ์ ๋ณด ๋ณ๊ฒฝ #sudo vi /etc/ssh/sshd_config :set nu ๋ฅผ ์ ๋ ฅํ์ฌ ๋ณด๊ธฐ ์ข๊ฒ ๋ผ์ธ์ ํ์. 38 ๋ผ์ธ์ "PermitRootLogin yes" ๋ถ๋ถ์ ์ฃผ์์ ํด์ ํ๊ณ ์ ์ฅ (:wq) โถ 3. ๋ฃจํธ ๊ฒฝ๋ก์ .ssh ๊ฒฝ๋ก๋ฅผ ์์ฑํ์ฌ ์ค๋ค. #sudo mkdir /root/.ssh ๋์ ๊ฐ์ ๊ฒฝ์ฐ๋ ์ด๋ฏธ ๋๋ ํ ๋ฆฌ๊ฐ ์์ด ์์ฑ๋์ง ์์๋ค. โถ 4. ec2์ ์ ์ ์ธ์ฆํค๋ฅผ root๋ก ๋ณต์ฌํ๋ค. #sudo cp /home/ec2-user/.ssh/authorized_keys /root/.ssh โถ 5. sshd๋ฅผ ๋ฆฌ์คํํธ ํ๋ค. #sudo systemctl restart ssh..
Amazon Linux 2 OS์ EC2์์ nginx ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. Amazon Linux 2์์๋ yum์ ํตํ nginx ์ค์น๊ฐ ์ง์๋์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ yum ์ ํตํ ์ค์น ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. sudo yum install nginx yum์ผ๋ก๋ nginx ํจํค์ง๋ฅผ ์ฐพ์ง ๋ชปํฉ๋๋ค. To use, run ์ ๋์์๋ amazon-linux-extras install : topic ๋ฅผ ์ด์ฉํ์ฌ nginx ์ค์น๋ฅผ ์งํํ๋๋ก ํ๊ฒ ์ต๋๋ค. amazon-linux-extras list ๋ช ๋ น์ด๋ฅผ ํตํด ์ค์นํ nginx๋ฅผ ์ฐพ์๋ณด๊ฒ ์ต๋๋ค. amazon-linux-extras list | grep nginx ์กฐํ๋ nginx1์ ๋ํด์ ์ค์น๋ฅผ ์งํํด ๋ณด๊ฒ ์ต๋๋ค. ..
์๋ฐ์์ ๋ณ์๋ช ์ผ๋ก ํด๋์ค๋ฅผ ์ธ์คํด์คํ ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ฐฉ๋ฒ 1-์ธ์๋ ์๊ณ ์์ฑ์๋ง ์๋ ํด๋์ค์๋ง ํด๋น ํด๋์ค์ ์ธ์๊ฐ์๋ ์์ฑ์๊ฐ์๋ ๊ฒฝ์ฐ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ Class๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. Class domainClass = Class.forName("com.femarket.domain." + domainName); Object domain = domainClass.newInstance(); ๋ฐฉ๋ฒ 2 ํด๋์ค์ ์ธ์๊ฐ์๋ ์์ฑ์๊ฐ์๋ ๊ฒฝ์ฐ์๋ ์๋ํ๋ ๋ ์์ ํ ๋ฐฉ๋ฒ์ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์ฟผ๋ฆฌํ์ฌ ํด๋น Constructor๊ฐ์ฒด ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ด ๊ฐ์ฒด์ ๋ํ newInstance()๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒ์ ๋๋ค. Class clazz = Class.forName("..
kube config์์ eks ์ ๋ณด๊ฐ ์์ด์ผํด์ ์์ปค๋ ธ๋ ์์ฑ ์ ์๋ ์ ๊ทผ๊ฐ๋ฅํด์ ๋ง์คํฐ๋ ์ด์ฐจํผ aws์์ ๊ด๋ฆฌํด์ aws sts get-caller-identity ์ด๊ฑธ๋ก ๋ณธ์ธ local ์ปดํจํฐ์์ access key, secret key ์ค์ ํ๋์ง ํ์ธํ์๊ณ aws eks --region ${region_name} update-kubeconfig --name ${cluster_name} ์ด๊ฑธ๋ก kube config ํ์ผ ์ ๋ฐ์ดํธํ์ธ์ https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/managing-auth.html ํด๋ฌ์คํฐ ์ธ์ฆ - Amazon EKS ์ด ํ์ด์ง์ ์์ ์ด ํ์ํ๋ค๋ ์ ์ ์๋ ค ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ค๋ง์์ผ ๋๋ ค ์ฃ์กํฉ๋๋ค. ์ ๊น ์๊ฐ..
์๋ฐ์คํฌ๋ฆฝํธ์์ ํ์ฌ ๋ ์ง ๋ฐ ์๊ฐ์ ๊ตฌํ๊ธฐ ์ํด์๋ Date ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. Date ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ์ ๋ ์ง๋ฅผ ์ถ๋ ฅํ๋ฉด YYYY-MM-DD์ ๊ฐ์ ํ์์ ๋ ์ง ํฌ๋งท์ผ๋ก ์ถ๋ ฅ๋์ง ์๊ธฐ ๋๋ฌธ์, Date ๊ฐ์ฒด์์ ์ ๊ณตํ๋ ์ถ์ถ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ง ํฌ๋งท์ ๋ณํํ๋ ์์ ์ด ์ถ๊ฐ์ ์ผ๋ก ํ์ํ๋ค. ํ์ฌ ๋ ์ง, ์๊ฐ ๊ตฌํ๊ธฐ var today = new Date(); console.log(today); // ๊ฒฐ๊ณผ : Sun May 30 2021 15:47:29 GMT+0900 (๋ํ๋ฏผ๊ตญ ํ์ค์) // ๊ฒฐ๊ณผ : Sun May 30 2021 15:47:29 GMT+0900 (๋ํ๋ฏผ๊ตญ ํ์ค์) Date ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ์์คํ ์ ๋ ์ง๋ฅผ ๊ฐ์ ธ์์ ์ถ๋ ฅํ๋ฉด, ํ์์์ ์ฌ์ฉํ๋ ๋ ์ง ํฌ๋งท(YYYY-MM-DD ..
ajax ์ฌ์ฉํ๋ ์ค ํ๊ฐ์ง ์๋ฌธ์ด ์๊ฒผ์ต๋๋ค. ์ JSON.stringify๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ฉด ์ ์คํ๋ง @RequestBody์์ ๋ฐ์ง ๋ชปํ๋์ง ๋ง์ ๋๋ค. ๊ทธ๋์ data : {test : "test"} ์ data : JSON.stringify์ ํ์ ๋ค์ ์ฝ์๋ก ์ฐ์ด๋ณธ ๊ฒฐ๊ณผ ์ ์๋ object์ด๊ณ ํ์๋ string์ด์์ต๋๋ค. ์ฌ๊ธฐ์ ์ํ! ํ์ต๋๋ค. ๋ด๊ฐ ํํ ๋งํ๋ json๊ณผ js์์ ์ฌ์ฉํ๋ javacscript Object๋ ๋ค๋ฅธ๊ฑฐ๊ตฌ๋! ๊ทธ๋์ ์ด๊ฑฐ์ ๋ํด ๊ธ์ ์ฐพ์๋ณธ ํ ์ ๋ง ์ ์ค๋ช ํด์ฃผ์ ๊ธ์ด ์์ด์ ๊ฐ์ ธ์๋ดค์ต๋๋ค. ์ด๊ธ์ yongseong.log ๋์ ๊ธ์ ๋๋ค. [๊ฐ๋ฐ์์] JSON๊ณผ JavaScript Object์ ์ฐจ์ด์ ์๋ ํ์ธ์. ๊น์ฉ์ฑ์ ๋๋ค.์ ๋ง ๋น์ทํ๊ฒ ์๊ฒจ๋จน์..
var data = {"name":"John Doe"} $.ajax({ type : "post", url : "/test", dataType : "json", //์๋ฒ์์ ๋ฐ์ ๋ฐ์ดํฐ ํ์ contentType: "application/json; charset=utf-8", //์๋ฒ๋ก ๋ณด๋ด๋ ๋ฐ์ดํฐ ํ์ data : JSON.stringify(data), success : function(result) { alert(result.success); }, error: function(e){ alert("fail"); } }); ๋งจ๋ ๊น๋จน์ด์ ์ ๊ฐ ๋ณด๊ธฐ ์ํด ์๋๋ค. $.ajax({ type : `http method type`, url : `url`, data : `์๋ฒ์ ์ ์กํ ๋ฐ์ดํฐ`, contentTy..
CIDR? AWS, GCP, Azure ๋ฑ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋ ๋ฑ์ ์ฌ์ฉํ ๋ ๋คํธ์ํฌ ์ค์ ์์ VPC ๋ฐ Subnet ์ ์์ฑํ์ฌ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๊ฒ ๋ฉ๋๋ค. ์ด ๋ CIDR(Classless Inter-Domain Routing) ๋ธ๋ก์ ์ด์ฉํ์ฌ 10.10.1.0/24 ๋ฑ๊ณผ ๊ฐ์ด ํ์ํ๊ฒ ๋๋๋ฐ ์ฃผ๋์ด ๊ฐ๋ฐ์ ๊ผฌ๊ผฌ๋ง ์์ ์๋ AWS ์ฝ์์์ ๋คํธ์ํฌ, ์ํ๋ฆฌํฐ๊ทธ๋ฃน ๋ฑ์์ ๋ง์ด ๋ด ์์ง๋ง ์ ๋ฐฐ๋ค์ด ์๋ ค์ค ๋๋ก ๊ทธ๋ฅ Cํด๋์ค์ผ๋๋ /24, ํน์ IP๋ง ์ง์ ํ ๋๋ /32 ๋ก ์๊ณ ์ด์์์๊ณ , ์์ง๋ ๊ทธ๋ ๊ฒ ์๊ณ ์๋ ์ฌ๋๋ค์ด ๋ถ๋ช ํ ์์ ๊ฒ ๊ฐ์์ ๊ฐ๋จํ์ง๋ง ์ ํํ๊ฒ! ํฌ์คํธ๋ฅผ ์์ฑ ํด ๋ณด๋ ค ํฉ๋๋ค. ์ฐธ๊ณ ๋ก CIDR๋ ์ฌ์ด๋ ๋ผ๊ณ ์ฝ์ผ๋ฉด ๋๊ณ , ์ ํฝ์์ ๋ฏธ๊ตญ์ธ ๊ฐ๋ฐ์๊ฐ ๋ฐ์ํ๋๊ฑธ ๋ค์ด๋ณด๋ ์ธ์ด๋ ์ ๋๋ก ๋ฐ์ ํฉ..
๋๋ฏธ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ ํ๋ก์์ ์์ฑ ํ์ด์ง ํ ์คํธ์ ๊ฐ์ด ๋ง์ ์์ ๋๋ฏธ๋ฐ์ดํฐ(dummy data)๊ฐ ํ์ํ ๊ฒฝ์ฐ, ํ๋ก์์ ๋ฅผ ์์ฑํด์ ๋๋ฏธ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ์ ์๋ค. Workbench์์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅํ๋ค. DELIMITER $$ DROP PROCEDURE IF EXISTS loopInsert$$ CREATE PROCEDURE loopInsert() BEGIN DECLARE i INT DEFAULT 1; WHILE i
๋ก๋๋ฐธ๋ฐ์๋? ๋ก๋๋ฐธ๋ฐ์๋ ์๋ฒ์ ๊ฐํด์ง๋ ๋ถํ(=๋ก๋)๋ฅผ ๋ถ์ฐ(=๋ฐธ๋ฐ์ฑ)ํด์ฃผ๋ ์ฅ์น ๋๋ ๊ธฐ์ ์ ํต์นญํ๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒํ(Server Pool, ๋ถ์ฐ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๋ ์๋ฒ๋ค์ ๊ทธ๋ฃน) ์ฌ์ด์ ์์นํ๋ฉฐ, ํ ๋์ ์๋ฒ๋ก ๋ถํ๊ฐ ์ง์ค๋์ง ์๋๋ก ํธ๋ํฝ์ ๊ด๋ฆฌํด ๊ฐ๊ฐ์ ์๋ฒ๊ฐ ์ต์ ์ ํผํฌ๋จผ์ค๋ฅผ ๋ณด์ผ ์ ์๋๋ก ํ๋ค. ๋ง์ฝ Scale-out์ ๋ฐฉ์์ผ๋ก ์๋ฒ๋ฅผ ์ฆ์คํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๋ฉด ์ฌ๋ฌ ๋์ ์๋ฒ๋ก ํธ๋ํฝ์ ๊ท ๋ฑํ๊ฒ ๋ถ์ฐํด์ฃผ๋ ๋ก๋๋ฐธ๋ฐ์ฑ์ด ๋ฐ๋์ ํ์ํ๋ค. OSI 7 ๊ณ์ธต์ด๋? ๋คํธ์ํฌ ํต์ ์์คํ ์ ํฌ๊ฒ ์ผ๊ณฑ ๊ฐ์ง์ ๊ณ์ธต(OSI 7 layers, ๊ฐ๋ฐฉํ ํต์ ์ ์ํ ๊ตญ์ ํ์ค ๋ชจ๋ธ)์ผ๋ก ๋๋๋ค. ๊ฐ๊ฐ์ ๊ณ์ธต(Layer)์ด L1/L2/L3โฅโฅL7์ ํด๋นํ๋ค. ์์ ๊ณ์ธต์์ ์ฌ์ฉ๋๋ ์ฅ๋น๋ ํ์ ๊ณ์ธต์ ์ฅ..
S3 S3๋ AWS๊ฐ ์ ๊ณตํ๋ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง ์๋น์ค์ ๋๋ค. 99.999999%๋ผ๋ ๋์ ๋ด๊ตฌ์ฑ์ด ํน์ง์ธ ์คํ ๋ฆฌ์ง๋ก ๋ฏธ๋ฆฌ ์คํ ๋ฆฌ์ง ์ฉ๋ ๋ฑ์ ์ ์ํ์ง ์๊ณ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ ๊ณต๊ฐ ์ ์ฑ , ๋ฐ์ดํฐ ์ํธํ, ๋น์ฉ ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฅ๊ธฐ ๋ณด๊ดํ๊ธฐ ์ํ ๋ผ์ดํ์ฌ์ดํด ์ ์ฑ ๋ฑ์ ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ ์ฉํ ์๋น์ค์ ๋๋ค. S3์์๋ ์คํ ๋ฆฌ์ง์ ๊ธฐ๋ณธ ๋จ์๋ก '๋ฒํท'์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์์ญ์ ์์ฑํ๊ณ ๊ทธ ์์ ํ์ผ์ ์ ์ฅํฉ๋๋ค. CloudFront CloudFront๋ AWS๊ฐ ์ ๊ณตํ๋ ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(Content Delivery Network, CDN) ์๋น์ค์ ๋๋ค. CDN์ ์ธํฐ๋ท์์ ์น ์ฝํ ์ธ , ์ด๋ฏธ์ง, ๋์์, ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ์ ๋น ๋ฅด๊ฒ ์ ์กํ๊ธฐ ์ํ ๊ตฌ์กฐ๋ก ๋์ด ์์ต๋๋ค. CloudFront๋ ์ ..
ํค๋ฐ๋์์ ์๋ ์ฝ๋๋ก ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋์ ๊ฐ์ ์๋ต์ ๋ฐ์ ์ ์์ต๋๋ค. analyzer๋ ์ปค์คํ analyzer ์ฌ์ฉํ์ต๋๋ค. tokenizer๋ nori๋ฅผ ์ฌ์ฉํ์๊ณ , filter๋ shingle๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. ์ด ๊ฐ์ ์๋ฐ์์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์๋ฉด ๋ฉ๋๋ค. AnalyzeRequest request = AnalyzeRequest.withIndexAnalyzer("st_pdt", "nori_discard_1", pdt.getS_name()); AnalyzeResponse response = client.indices().analyze(request, RequestOptions.DEFAULT); List tokens = response.getTokens(); for(An..