호스팅 및 배포 (v2)

업데이트 됨

통합 언어 선택

Reincubate 엔지니어링 팀은 주로 Python을 사용합니다. 결과적으로 가장 정교한 샘플 클라이언트 구현은 Python으로 구현되지만 언어를 사용하는 데는 어려운 이유가 없습니다. 이 API는 .NET / C #, PHP, Python, Java 및 JavaScript / Node.js를 실행하는 클라이언트가 사용합니다.

연결성 및 데이터 센터 선택

ricloud API의 인프라는 Google Cloud Platform, Amazon Web Services 및 Microsoft Azure를 비롯한 미국, EU 및 캐나다의 여러 공급 업체에서 호스팅합니다.

프로덕션 환경에서 채널 에서 데이터를 소비하는 경우 청취자 프로세스는 데이터 소실 을 청취해야하므로 결과적 으로 최소 100Mb / s의 안정적인 고 대역폭 인터넷 연결이 필요합니다. 느린 연결은 작동하지만 aschannel 에서 설명한대로 데이터를 삭제할 수 있습니다.

많은 양의 데이터를 소비 할 가능성이있는 클라이언트는 이러한 호스트에 안정적이고 높은 대역폭의 액세스를 보장하기 위해 계층 1 피어링 을 사용하여 인프라의이 부분에 대해 호스팅 파트너를 사용해야합니다. 마찬가지로 기존 ricloud 1.x를 사용하는 클라이언트 에게도 좋습니다.

asapiasmaster에 대한 요청은 일반적으로 대역폭이 낮고 볼륨이 적기 때문에 이러한 구성 요소를 클라이언트에 호스팅 할 특정 요구 사항은 없습니다.

aschannel을 위한 고 가용성 전략

한 번에 하나의 리스너 프로세스 만 aschannel 에 연결할 수 있기 때문에 자체 구현에서 고 가용성을 필요로하는 클라이언트는 고 가용성을 위해 오픈 소스 Keepalived 프로젝트를 고려할 수 있습니다.

프로덕션에서 샘플 클라이언트 사용

일부 유스 케이스의 경우, ricloud-py 샘플 클라이언트를 직접 프로덕션 환경에 배치하여 클라이언트를 빌딩 통합으로부터 절약 할 수 있습니다.

프로덕션 환경에서 리스너 모드로 배포되면 라이브러리는 클라이언트 응용 프로그램이 수신하고 제거 할 때까지 수신 된 컨텐츠를 버퍼링하는 저장 영역이있는 시스템이 필요합니다.

지원되는 플랫폼

MySQL 5.7이 설치된 Ubuntu Server 16.04 LTS의 기본 설치 만 필요합니다. 설치가 끝나면 다음 명령을 사용하여 필요한 패키지를 추가 할 수 있습니다.

$ apt-get install python-pip libmysqlclient-dev mysql-server

작동하는 것으로 알려진 지원되지 않는 플랫폼

  • 대부분의 서버 및 클라우드 Linux 배포판
  • Brew의 MySQL 배포판이있는 macOS 10.12 ( 다운로드 )

프로덕션을 위해 서버 준비

Ubuntu 16.04에는 프로덕션 환경에서 리스너의 기능을 제한하는 많은 기본값이 있습니다.

최대 열린 파일 수

기본적으로 열린 파일 디스크립터의 한계는 171,614로 설정되고 세션 당 최대 파일 디스크립터는 1,024로 설정됩니다.

$ cat /proc/sys/fs/file-max
171614
$ ulimit -n
1024

청취자는 많은 파일을 동시에 수신하는 것을 최적화하기 위해 청크 다운되는 각 파일에 대해 파일 스트림을 열어 두었습니다. 결과적으로 많은 파일이 동시에 스트리밍되고 청크 될 경우 1024 제한을 초과 할 가능성이 있습니다.

세션 제한은 다음 내용으로 /etc/security/limits.d/ricloud-listener.conf 파일을 작성하여 해제 할 수 있습니다.

* hard nofile 10240
* soft nofile 10240

새로운 세션이 시작되면 이러한 새로운 제한이 적용됩니다. 세션을 다시 시작할 필요없이 다음 명령을 사용하여 제한을 변경할 수 있습니다.

$ ulimit -n 10240

최대 MySQL 패킷 크기

기본적으로 MySQL이 우분투 16.04에서 처리 할 수있는 가장 큰 패킷은 약 3.5MB입니다.

mysql> show global variables like 'max_allowed%';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 33554432 |
+--------------------+----------+
1 row in set (0.11 sec)

대형 피드 몸체는 삽입 될 때이 크기만큼 넘칠 수 있습니다. 세분화 된 HealthKit 데이터 항목을 사용하면 수백 메가 바이트의 JSON을 쉽게 실행할 수 있습니다. 이것은 MySQL 로그에 다음 행으로 표시됩니다 :

[Note] Aborted connection 277783 to db: 'ricloud' user: 'ricloud' host: 'localhost' (Got a packet bigger than 'max_allowed_packet' bytes)

ricloud.log 에 다음 오류가 표시됩니다.

2017-05-01 16:23:52,828 root CRITICAL <class '_mysql_exceptions.OperationalError'>: (2006, 'MySQL server has gone away')
OperationalError: (2006, 'MySQL server has gone away')

최대 크기가 1GB 인 max_allowed_packet 을 재설정하면이 문제를 해결할 수 있습니다. 이것은 다음과 같이 실행시에 변경 될 수 있습니다 :

SET GLOBAL max_allowed_packet=1073741824;

서버의 my.cnf 파일을 구성하여 영구적으로 변경할 수 있습니다.

max_allowed_packet=1073741824

최대 MySQL InnoDB 로그 파일 크기

MySQL InnoDB 스토리지 엔진은 테이블에 삽입되는 항목의 크기가 리두 로그 크기의 10 %를 초과 할 수 없도록 제한합니다. 이 제한으로 인해 발생할 수있는 오류는 다음과 같습니다.

(1118, 'The size of BLOB/TEXT data inserted in one transaction is greater than 10% of redo log size. Increase the redo log size using innodb_log_file_size.')

오류가 암시 하듯이, 문제는 innodb_log_file_size 설정의 크기를 적절한 값으로 늘리는 것입니다. 이 설정 값에 대한 제한 사항은 여기 에서 찾을 수 있습니다 .

서비스로 구성

Ubuntu 16.04에서 서비스로 실행되도록 수신기를 구성하는 것은 간단합니다.

/etc/systemd/system/ricloud-listener.service 의 새 파일에 다음을 추가하십시오.

[Unit]
Description=ricloud listener
After=network-online.target

[Service]
WorkingDirectory=/var/www-hosts
ExecStart=/usr/bin/python -m ricloud --listen
Restart=always
KillSignal=SIGQUIT
Type=simple
StandardError=syslog
NotifyAccess=all
User=www-data
Group=www-data

[Install]
WantedBy=multi-user.target

/var/www-hosts/logs 폴더가 있고 www-data 사용자가 쓰기 권한이 있는지 확인하십시오. 물론 특정 폴더 나 사용자를이 용도로 구성 할 수 있습니다. 그런 다음 system.d 서비스를 다시 시작하고 새 ricloud-listener 서비스를 시작하십시오.

$ sudo mkdir -p /var/www-hosts/logs
$ sudo chown -R www-data:www-data /var/www-hosts
$ sudo systemctl daemon-reload
$ sudo systemctl start ricloud-listener

샘플 클라이언트 방화벽

인바운드

  • 정상적인 작동에는 인바운드 인터넷 트래픽 액세스가 필요하지 않습니다.
  • 리스너 모드에서 사용될 때 클라이언트의 설정은 로컬 MySQL 인스턴스의 경우 TCP/3306 에서 인바운드 LAN 트래픽을 필요로하고 파일 시스템 공유를 위해서는 다른 포트를 요구할 수 있습니다.

배 밖으로

  • ricloud 라이브러리는 TCP/443 에서 asmaster.reincubate.com , asapi.reincubate.comaschannel.reincubate.comaschannel.reincubate.com 데이터를 검색 할 때 세 호스트 이름에 대한 아웃 바운드 요청을 aschannel.reincubate.com .
  • asmasterasapi에 대한 트래픽은 필요할 경우 안전하게 프록시 처리 할 수 있지만 연결 관련 요구 사항 을 기록하는 것이 중요 합니다 . aschannel을 프록시하는 것은 권장되지 않습니다.

프로덕션에서 데스크탑 구성 요소 사용

지원되는 플랫폼

흰색 라벨이 붙은 asrelay 구성 요소는 Windows 7 이상 (7, 8, 8.1, 10 등) 및 macOS 10.11 이상에서 실행됩니다.

코드 서명

데스크톱 구성 요소의 신뢰할 수있는 화이트 레이블 빌드를 만들려면 코드 서명 인증서가 필요합니다. Microsoft는이 정보게시 하고 Apple은 개발자 프로그램의 일부로 인증서를 제공 합니다 .

브라우저 신뢰 설정

브라우저는 다운로드에 대한 기본적인 보호 수준을 적용하기 위해 다양한 기술을 사용합니다. 최신 브라우저는 기본적으로 알 수없는 파일을 신뢰하지 않습니다. Chrome에서 "이 유형의 파일은 컴퓨터에 해를 끼칠 수 있습니다.이 어쨌든 binary.exe를 유지 하시겠습니까?"라는 메시지가 표시됩니다. Microsoft의 Edge 브라우저는 "Windows Smartscreen"창을 표시합니다. 브라우저는 경고 여부를 이해할 때 다양한 기준을 사용합니다. 도메인, 파일의 성격, 그리고 안전 여부를 이해하기에 충분한 시간을 본 적이 있는지 여부를 살펴 봅니다.

Reincubate의 소비자 응용 프로그램 을 다운로드하는 경우 브라우저에서 잘 알려진 경고가 표시되지 않습니다.

asrelay 클라이언트의 경우, 그대로 공개적으로 배포되지 않습니다. 즉, 클라이언트의 코드 서명 키로 흰색 라벨이 지정되고 서명됩니다. 브라우저는 Reincubate의 코드 서명 키와 도메인을 신뢰하지만 대중에게 공개되지 않으므로 asrelay 를 인식하지 못하는 경향이 있습니다.

Asrelay 가 클라이언트의 이름과 코드 서명으로 커스터마이징되면, Reincubate의 인증서가없는 새로운 애플리케이션으로 취급 될 것이고 평판이 없으므로 브라우저에서 다운로드 할 때 플래그가 붙습니다. 신뢰할 수있게되기 위해 새 프로그램은 가능한 많은 컴퓨터를 빨리 알아야합니다. 일반적으로 신뢰 요소를 크게 변경하면 몇 일간의 다운로드 및 설치만으로도 빠르게 화면을 통과 할 수 있습니다.

어떻게 도와 드릴까요?

지원 팀이 도와 드리겠습니다!

근무 시간은 월요일부터 금요일, 오전 9 시부 터 오후 5시 (그리니치 표준시)입니다. 시간은 현재 5:31 오후 GMT입니다.

우리는 1 일 이내에 모든 메시지에 답장하고자합니다.

지원 섹션으로 이동 › 엔터프라이즈 팀에 문의하십시오. ›
우리의 멋진 지원 팀

© 2008 - 2019 Reincubate Ltd. 판권 소유. 영국과 웨일즈에 등록 #5189175, VAT GB151788978. Reincubate®는 등록 상표입니다. 개인 정보 및 이용 약관. 우리는 2FA를 권장합니다. 런던에서 Built로 지어졌습니다.