한국 지역 설정하기
sudo locale-gen ko_KR.UTF-8 tzselect sudo apt-get install language-pack-ko
docker CE올리기
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
sudo apt-get update
sudo apt-get install docker-ce
도커를 ubuntu계정에서 실행하게 변경(리붓해야지 반영됨)
sudo groupadd docker sudo gpasswd -a ubuntu docker
우리 도커를 다운 받는다.
docker pull hoyai/hoyai_dev_docker:squashed
1번 서버는 nfs server를 올린다.
sudo apt-get install nfs-kernel-server
nfs 마운트 포인트를 만든다
sudo mkdir /var/nfs/hoya_src_root -p sudo mkdir /var/nfs/hoya_model_root -p sudo mkdir /var/nfs/hoya_str_root -p sudo mkdir /var/nfs/hoyai_playground -p sudo chown nobody:nogroup /var/nfs/hoya_src_root sudo chown nobody:nogroup /var/nfs/hoya_model_root sudo chown nobody:nogroup /var/nfs/hoya_str_root
nfs conf
vi /etc/exports /var/nfs/hoya_src_root xx.xx.xx.xx(rw,sync,no_subtree_check) xx.xx.xx.xx(rw,sync,no_subtree_check) /var/nfs/hoya_model_root xx.xx.xx.xx(rw,sync,no_subtree_check) xx.xx.xx.xx(rw,sync,no_subtree_check) /var/nfs/hoya_str_root xx.xx.xx.xx(rw,sync,no_subtree_check) xx.xx.xx.xx(rw,sync,no_subtree_check)
nfs reload 한다
service nfs-kernel-server reload
AWS에서 nfs용 Security group을 설정한다.
TCPPort (Service) Source 111 0.0.0.0/0 2049 0.0.0.0/0 32768 0.0.0.0/0 44182 0.0.0.0/0 54508 0.0.0.0/0
UDPPort (Service) Source 111 0.0.0.0/0 2049 0.0.0.0/0 32768 0.0.0.0/0 32770-32800 0.0.0.0/0
- gpu에서 ap1번으로 붙는지 테스트 해봄
Hoya Docker cluster용(AP용) seciruty group 설정
Port (Service) Source Port (Service) Source 4369 0.0.0.0/0 25672 0.0.0.0/0 5672 0.0.0.0/0 2266 0.0.0.0/0 5432 0.0.0.0/0 8000 0.0.0.0/0 6006 0.0.0.0/0 8888 0.0.0.0/0 5901 0.0.0.0/0 5555 0.0.0.0/0
도커를 실행하면서, nfs 포인트로 올리고, 부팅시 자동으로 올라가게 하고, vnc확인하고, host도 확인하고,
도커를 재부팅시 자동으로 올라가게 설정 도커 이름은 hoyai_dev로 설정한다
docker run -itd --env="VNC_RESOLUTION=1920x1080" --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" --volume="/var/nfs/hoya_src_root:/hoya_src_root" --volume="/var/nfs/hoya_model_root:/hoya_model_root" --volume="/var/nfs/hoya_str_root:/hoya_str_root" --name hoyai_dev -p 4369:4369 -p 25672:25672 -p 5672:5672 -p 2266:2266 -p 5432:5432 -p 8000:8000 -p 6006:6006 -p 8888:8888 -p 5901:5901 -p 5555:5555 hoyai/hoyai_dev_docker:squashed
도커가 자동으로 올라가게 설정한다.
cd /etc/systemd/system/ vi docker_hoyai.service
[Unit] Description=hoyai container Requires=docker.service After=docker.service [Service] Restart=always ExecStart=/usr/bin/docker start -a hoyai_dev ExecStop=/usr/bin/docker stop -t 2 hoyai_dev [Install] WantedBy=default.target
도커 스타트업 스크립트
sudo systemctl enable docker_hoyai.service sudo systemctl start docker_hoyai.service
도커 서비스 삭제 스크립트
sudo systemctl disable docker_hoyai.service sudo systemctl stop docker_hoyai.service
sudo apt-get install nfs-common
도커 속에서 cluster 설정하기
hoyai/settings.py에서 DB를 AP1번을 보도록 설정
git에서 settings.py 추적 안하게 변경
git update-index --assume-unchanged hoyai/settings.py
각서버별로 장고가 뜨는지 확인
hosts파일을 만들어서 ap1, ap2, gpu1, gpu2에 배포
ssh를 활용해서 각각 서버에 붙는지 확인한다.
rabitmq cluster 연결을 위한 erlang cookie 맞추기
master에서 cooker를 보고, slave에 복사해준다
vi /var/lib/rabbitmq/.erlang.cookie
slave는 끄고
service rabbitmq-server stop
erlang cookie 복사하고
다시 스타트
service rabbitmq-server start
rabbitmq cluster를 확인한다.
rabbitmqctl cluster_status
hoya settings.py의 celery 설정 부분을 변경한다.
host는 master의 Docker id로 변경
CELERY_BROKER_URL = 'amqp://tensormsa:tensormsa@'+host+'//' result_backend = 'db+postgresql://xxxxxxxxxxxxx'
entrypoint에 hosts파일 add하는것을 추가
echo "xxx.xxx.xxx" >> /etc/hosts
gpu1번을 ap1에 조인
rabbitmqctl stop_app rabbitmqctl join_cluster --ram rabbit@16224139bcee rabbitmqctl start_app
gpt2번을 ap1에 조인
rabbitmqctl stop_app rabbitmqctl join_cluster --ram rabbit@16224139bcee rabbitmqctl start_app
클러스터에서 빠지기
rabbitmqctl reset
client nfs 설치한다
sudo apt-get install nfs-common
부팅했을때 nfs가 자동으로 붙도록 설정
hoya_src_root, hoya_model_root, hoya_str_root 3개 디렉토리 설정
sudo mkdir /hoya_src_root -p sudo mkdir /hoya_model_root -p sudo mkdir /hoya_str_root -p
vi /etc/fstab xx.xx.xx.xx:/var/nfs/hoya_src_root /hoya_src_root nfs hard 0 0 xx.xx.xx.xx:/var/nfs/hoya_model_root /hoya_model_root nfs hard 0 0 xx.xx.xx.xx:/var/nfs/hoya_str_root /hoya_str_root nfs hard 0 0
reboot 해서 df -h로 nfs가 잘 붙는지 확인한다
df -h
gpu Tensormsa Docker를 받는다
docker pull docker pull hoyai/hoyai_gpu_dev_docker:v1.0
gpu docker 를 실행한다.
nvidia-docker run -itd --env="VNC_RESOLUTION=1920x1080" --volume="/hoya_src_root:/hoya_src_root" --volume="/hoya_model_root:/hoya_model_root" --volume="/hoya_str_root:/hoya_str_root" --name hoyai_dev -p 4369:4369 -p 25672:25672 -p 5672:5672 -p 2266:2266 -p 5432:5432 -p 8000:8000 -p 6006:6006 -p 8888:8888 -p 5901:5901 -p 5555:5555 hoyai/hoyai_gpu_dev_docker:v1.0
docker 서비스를 올린다.
sudo gpasswd -a ubuntu docker
cd /etc/systemd/system/ vi docker_hoyai.service
[Unit] Description=hoyai container Requires=docker.service After=docker.service [Service] Restart=always ExecStart=/usr/bin/nvidia-docker start -a hoyai_dev ExecStop=/usr/bin/nvidia-docker stop -t 2 hoyai_dev [Install] WantedBy=default.target
sudo systemctl enable docker_hoyai.service sudo systemctl start docker_hoyai.service
sudo systemctl disable docker_hoyai.service sudo systemctl stop docker_hoyai.service
AP1, GPU2, GPU2의 docker id와 IP를 찾는다.