세 가지 Ceph rgw 전단 설정 방식

rgw 개술
Ceph 는 radosgw 를 통 해 RESTFul HTTP API 인터페이스 지원 대상 의 저장 능력 을 제공 하고 radosgw 는 librados 위 에 구축 되 어 Amazon S3 와 OpenSak Swift 를 호 환 합 니 다.
radosgw 는 본질 적 으로 클 라 이언 트 프로그램 으로 FastCGI 서 비 스 를 제공 합 니 다.클 라 이언 트 프로그램 으로서 다음 과 같은 요 구 를 만족 시 켜 야 합 니 다.
  • 인 스 턴 스 이름 입 니 다. 기본 값 은 gateway
  • 입 니 다.
  • 합 법 적 인 사용자
  • 여러 개의 저장 소
  • 데이터 디 렉 터 리 하나
  • ceph. conf 에 설정 항목 추가
  • 전단 프로필
  • radosgw 는 Apache, Civetweb, Nginx 를 전단 으로 지원 합 니 다.Civetweb 는 기본 전단 입 니 다. ceph. conf 설정 파일 을 수정 하면 아파 치 로 쉽게 바 꿀 수 있 고 설정 을 통 해 nginx 를 전단 으로 할 수 있 습 니 다.
    다음은 centos 7 상 rgw 의 설치 설정 과정 을 보 여 줍 니 다.
    설치 하 다.
    ceph - deploy 를 통 해 rgw node 에 rgw 패 키 지 를 편리 하 게 설치 할 수 있 습 니 다.
    #> ceph-deploy --rgw install {rgw-node-name}

    사용자 만 들 기
    모든 rgw 인 스 턴 스 는 인증 사용자 와 key 가 필요 합 니 다. 다음 예 에서 gateway 라 는 사용 자 를 만 들 고 키 파일 을 / etc / ceph 디 렉 터 리 에 저장 합 니 다.
    #> ceph auth get-or-create client.radosgw.gateway osd 'allow rwx' mon 'allow rwx' -o /etc/ceph/ceph.client.radosgw.keyring

    저장 탱크 만 들 기
    rgw 는 데 이 터 를 저장 할 저장 탱크 가 필요 합 니 다. 권한 을 수 여 받 은 사용자 가 관련 권한 을 가지 면 rgw 는 자동 으로 저장 탱크 를 만 듭 니 다. 기본 영역 (region) 과 사용 가능 한 영역 (zone) 을 사용 하면 다음 과 같은 탱크 를 포함 합 니 다.
    .rgw.root
    .rgw.control
    .rgw.gc
    .rgw.buckets
    .rgw.buckets.index
    .rgw.buckets.extra
    .log
    .intent-log
    .usage
    .users
    .users.email
    .users.swift
    .users.uid

    물론 각 저장 소 를 수 동 으로 만 들 수 있 습 니 다.
    #> ceph osd pool create {poolname} {pg-num} {pgp-num} {replicated | erasure} [{erasure-code-profile}]  {ruleset-name} {ruleset-number}

    rgw 설정 추가
    ceph. conf 에 gateway 라 는 인 스 턴 스 를 추가 합 니 다.
    Civetweb
    civetweb 를 전단 으로 하면 다음 과 같이 설정 합 니 다.
    [client.radosgw.gateway]
    host = {hostname}
    keyring = /etc/ceph/ceph.client.radosgw.keyring
    log file = /var/log/radosgw/client.radosgw.gateway-node1.log
    rgw_frontends = civetweb port=80

    civetweb 기본 감청 은 7480 포트 입 니 다. 상기 설정 에 지정 한 감청 포트 가 80 port=80 으로 표 시 됩 니 다.
    Apache
    apache 를 전단 으로 하면 다음 과 같이 설정 합 니 다.
    [client.radosgw.gateway]
    host = {hostname}
    keyring = /etc/ceph/ceph.client.radosgw.keyring
    rgw socket path = ""
    log file = /var/log/radosgw/client.radosgw.gateway.log
    rgw frontends = fastcgi socket_port=9000 socket_host=0.0.0.0
    rgw print continue = false

    apache 서 비 스 를 설정 하고 생 성 /etc/httpd/conf.d/rgw.conf 하 며 다음 과 같은 내용 을 기록 합 니 다.
    <VirtualHost *:80>
    ServerName localhost
    DocumentRoot /var/www/html
    
    ErrorLog /var/log/httpd/rgw_error.log
    CustomLog /var/log/httpd/rgw_access.log combined
    
    # LogLevel debug
    
    RewriteEngine On
    
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
    
    SetEnv proxy-nokeepalive 1
    
    ProxyPass / fcgi://localhost:9000/
    
    </VirtualHost>

    설정 후 apache 서 비 스 를 다시 시작 합 니 다: systemctl restart httpd.serviceNginx
    ceph. conf 설정 은 다음 과 같 습 니 다.
    [client.radosgw.gateway]
    rgw_frontends = fastcgi
    host = {hostname}
    keyring = /etc/ceph/ceph.client.radosgw.keyring
    rgw_socket_path = /var/run/ceph/ceph.radosgw.gateway.sock
    log_file = /var/log/ceph/radosgw.log
    rgw_print_continue = false
    rgw_content_length_compat = true

    nginx 서 비 스 를 설정 하고 /etc/nginx/nginx.conf 파일 의 http 세그먼트 에 다음 과 같은 내용 을 추가 합 니 다.
    http {
    server {
            listen   80 default;
            server_name {hostname};
        location / {
                fastcgi_pass_header Authorization;
                fastcgi_pass_request_headers on;
                fastcgi_param QUERY_STRING  $query_string;
                fastcgi_param REQUEST_METHOD $request_method;
                fastcgi_param CONTENT_LENGTH $content_length;
                fastcgi_param CONTENT_LENGTH $content_length;
    
                if ($request_method = PUT) {
                        rewrite ^ /PUT$request_uri;
                }
    
                include fastcgi_params;
                fastcgi_pass unix:/var/run/ceph/ceph.radosgw.gateway.sock;
            }
    
            location /PUT/ {
                internal;
                fastcgi_pass_header Authorization;
                fastcgi_pass_request_headers on;
    
                include fastcgi_params;
                fastcgi_param QUERY_STRING  $query_string;
                fastcgi_param REQUEST_METHOD $request_method;
                fastcgi_param CONTENT_LENGTH $content_length;
                fastcgi_param  CONTENT_TYPE $content_type;
                fastcgi_pass unix:/var/run/ceph/ceph.radosgw.gateway.sock;
            }
    }

    주의: fastcgipass 가 가리 키 는 경 로 는 ceph. conf 에서 설정 한 경로 와 일치 해 야 합 니 다.
    nginx 설정 적용: nginx -s reloadrgw 인 스 턴 스 시작
    위의 -> -> -> 과정 을 통 해 rgw 도 준비 가 되 었 습 니 다. 아래 명령 을 통 해 인 스 턴 스 를 시작 할 수 있 습 니 다.
    //radosgw -c {conf_file} -n {rgw-name}
    #> radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway

    테스트
    ceph rgw 의 테스트 방식 은 s3cmd, cosbench 이 며, python 라 이브 러 리 boto 를 통 해 스스로 테스트 프로그램 을 쓸 수 있 습 니 다.개인 적 으로 cosbench 가 괜 찮 은 것 같 아 요. 한번 해 보 세 요.
    rgw 다 중 인 스 턴 스
    rgw 의 병행 능력 을 향상 시 키 기 위해 서 는 여러 개의 rgw 인 스 턴 스 를 배치 해 야 합 니 다.사실 간단 합 니 다. 여러 노드 에 여러 개의 rgw 인 스 턴 스 를 배치 합 니 다. rgw 패 키 지 를 설치 하고 ceph. conf 파일, 키 파일, 전단 설정 파일 을 해당 노드 에 복사 한 다음 인 스 턴 스 를 시작 하면 됩 니 다.
    이로써 rgw 의 배치 실천 과정 을 소 개 했 습 니 다. 문제 가 있 으 면 메 시 지 를 환영 합 니 다.

    좋은 웹페이지 즐겨찾기