2012-08-11 4 views
1

나는 dotcloud를 처음 사용하며 여러 서비스가 함께 작동하는 방법에 대해 혼란 스럽습니다.Dotcloud 다중 서비스

www: 
    type: python 
db: 
    type: postgresql 
worker: 
    type: python-worker 
broker: 
    type: rabbitmq 

그리고 내 supervisord 파일은 장고 셀러리를 & celerycam를 시작하는 명령이 포함되어

내 YAML 빌드 파일입니다.

내 코드를 앱에 푸시하면 www & 작업자 서비스가 셀러리 & 셀러리 캠의 인스턴스를 시작하고 로그 파일이 서로 다른 것을 볼 수 있습니다. 이는 의미가 있습니다 (IMO의 dotcloud 문서에서는 명확하지 않지만 - 작업자 서비스 설정에 대한 설명은 있지만 다른 서비스와 결합하는 방법은 아닙니다).하지만 응용 프로그램을 구성하는 방법에 대한 질문이 제기됩니다 여기서 파이썬 서비스는 주로 웹 페이지를 제공하지만 파이썬 작업자 서비스는 백그라운드 작업 (예 : 샐러리)에서 작동합니다.

dotcloud documentation daemon이 언급하고 있습니다 :

"그러나, 당신은 당신이 당신의 응용 프로그램을 확장 할 때, 은 cron 작업이 모든 스케일링 경우에 예약 할 것이라는 점을 알고 있어야합니다 - 아마 당신이 무엇을하지 않은 많은 경우에있어서 은 별도의 서비스를 사용하는 것이 더 좋을 것입니다.

마찬가지로, 많은 (비 종업원) 서비스가 이미 수퍼바이저를 실행하므로 해당 서비스에서 추가 백그라운드 작업을 실행할 수 있습니다. 그런 다음 다시 응용 프로그램을 확장하면 해당 백그라운드 작업이 여러 인스턴스에서 실행된다는 점을 기억하십시오. 당신이 당신의 웹 서비스를 하는 백그라운드 작업을 추가하는 경우 또한, 그것은 페이지를 제공하기 위해 적은 자원을 얻을 것이다, 당신의 성능은 상당한 타격을 것입니다. "

을 그냥 실행 dotcloud & 응용 프로그램을 구성하려면 어떻게 하나의 서비스에 대한 웹 서버 및 작업자 서비스에 대한 배경 작업 셀러리의 동시성 설정을 높이고 (하나의 서비스를 수직으로 확장) 추가 작업자 서비스를 추가하거나 둘 다 추가하여 작업자를 확장 할 수 있습니까?

이것은 웹 서버 서비스가 백그라운드 작업을 처리 할 때 리소스를 사용할 필요가 없기 때문입니다. 둘째, 웹 서버 서비스와 독립적으로 작업자 서비스를 제공합니까?

답변

2

두 가지 트릭이 있습니다. 올바른되기 위해 파일을 복사 할 수

www: 
    type: python 
    approot: frontend 
# ... 
worker: 
    type: python-worker 
    approot: backend 
# ... 

둘째, 당신의 postinstall 스크립트가 각 approot에 대한 다르기 때문에 : 우선은 실행 코드를 분리하여 WWW 및 직원 서비스에 대한 다른 approots을 사용할 수 있습니다 특정 서비스에 대한 supervisord.conf.

django-celery에 대한 dotCloud 자습서 및 샘플 코드를 살펴볼 수도 있습니다.

/앤디

관련 문제