Redis와 같은 VPC 안에 EC2를 생성했다고 가정합니다. 다른 VPC에 있을 경우 VPC Peering 설정이 필요하며 이 내용은 곧 다시 업로드할 예정입니다. 

 

일단 EC2에 redis-cli 설치를 위해 gcc를 설치합니다. redis를 별도 설치해되 되지만 ec2 에서는 redis-cli만 사용할 예정이니 redis 자체 설치를 하는 방법은 사용하지 않겠습니다.

 

 

sudo yum install -y gcc 

 

redis-stable 버전을 다운받아 빌드를 해야 하니 임시 폴더 혹은 프로그램 빌드를 위한 별도 폴더를 만들어 작업하실것을 추천드립니다.

 

wget http://download.redis.io/redis-stable.tar.gz && tar xvzf redis-stable.tar.gz && cd redis-stable && make

 

redis 자체를 쓰지는 않고 redis-cli만 사용합니다. redis-cli를 사용하기 쉽게 /usr/bin에 복사합니다. 

sudo cp src/redis-cli /usr/bin 

 

redis-cli가 잘 실행된다면 redis에 원격접속을 해봅니다.

 

redis-cli -h redis-endpoint-address

redis의 주소는 기본 엔드포인트나 리더 엔드 포인트나 상관없이 잘 연결됩니다. 

 

만약 접속이 안된다면 보안 그룹에 설정된 인바운드 설정에 port가 잘 열려 있는지 확인해야 합니다. 

 

VPC 의 보안 -> 보안 그룹에서 redis에 설정된 보안 그룹을 찾아 inbound 규칙에서 TCP 6379 포트 혹은 별도 설정한 redis 포트가 규칙에 적용되어 있는지 확인해 보세요.

 

아래와 같은 설정으로 규칙이 적용되어 있어야 합니다. 

 

 

이상입니다.

 

다음은 VPC Peering 설정 방법과 EC2와 Redis가 서로 다른 VPC, 다른 리전에 있을 경우 연동하는 방법을 정리해 보겠습니다.

"가장 빨리 만나는 Docker" 책을 참고함.


구조는 아래와 같이 잡는다. 


(내부) docker-registry <---> nginx auth <---> (외부)docker daemon


기본 registry를 내려받아 실행.


sudo docker run -d --name docker-registry -v /tmp/registry:/tmp/registry registry:0.9.1

(* port는 nginx에서 redirect될거라 오픈할 필요는 없음.)


openssl로 key 제작


1. openssl genrsa -out 이름.key 2048

2. openssl req -new -key 이름.key -out.이름.csr  (작성시 도메인은  registry.test.com로 맞춰야 한다.)

3. openssl x509 -req -days 365 -in 이름.csr -signkey 이름.key -out 이름.crt


이 파일을 nginx 서버와 클라에서 아래 과정을 거쳐 인증서를 시스템에 설치한다.


1. cp 이름.crt /usr/share/ca-certificates/ (ca-certificates 폴더가 없다면 "sudo apt-get install curl")

2. echo "이름.crt" | tee -a /etc/ca-certificates.conf (설치할 인증서 목록에 추가함.)

3. update-ca-certificates (ca-certificates.conf에 포함된 내용을 참고로 인증서 설치)


 이후 도커 재시작 필요함.


nginx 서버는 아래와 같이 실행할 것! (이걸 실행 후 openssl 처리해야 할 걸.)


sudo docker run --name reg-auth \

 -p 443:443 \

 -d  \

 -v /rs2m/data:/data \

 -v /rs2m/data/nginx.conf:/etc/nginx/nginx.conf \

 -v /rs2m/data/이름.crt:/etc/이름.crt \

 -v /rs2m/data/이름.key:/etc/이름.key \

 -v /rs2m/data/.htpasswd:/etc/nginx/.htpasswd \

 --link docker-registry:docker-registry \

 nginx:1.7.9


nginx.conf는 아래와 같이 !!


worker_processes  1;


events{

    worker_connections   1024;

}


http{

    server{

        listen 443 ssl;

        server_name registry.test.com


        ssl on;

        ssl_certificate /etc/rs2m_reg.crt;

        ssl_certificate_key /etc/rs2m_reg.key;


        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header Authorization "";

        proxy_redirect http:// https://;


        client_max_body_size 0;

        chunked_transfer_encoding on;


        location / {

            proxy_pass http://rs2m-reg:5000;

            auth_basic "Restricted";

            auth_basic_user_file /etc/nginx/.htpasswd;

        }

    }

}


+ Recent posts