Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
Aplica-se a SUSE Enterprise Storage 6

9 Ceph Object Gateway

Ceph Object Gateway é uma interface de armazenamento de objetos desenvolvida com base em librgw para fornecer aplicativos com um gateway RESTful aos clusters do Ceph. Ele suporta duas interfaces:

  • Compatível com S3: Oferece a funcionalidade de armazenamento de objetos com uma interface compatível com um amplo subconjunto da API RESTful do Amazon S3.

  • Compatível com Swift: Oferece a funcionalidade de armazenamento de objetos com uma interface compatível com um amplo subconjunto da API do OpenStack Swift.

Por padrão, o daemon do Object Gateway usa o front end HTTP “Beast”. Ele usa a biblioteca Boost.Beast para análise de HTTP e a biblioteca Boost.Asio para operações de E/S de rede assíncronas.

Como o Object Gateway oferece interfaces compatíveis com o OpenStack Swift e o Amazon S3, ele tem o próprio gerenciamento de usuários. O Object Gateway pode armazenar dados no mesmo cluster usado para armazenar dados dos clientes CephFS ou dos clientes de Dispositivo de Blocos RADOS. As APIs do S3 e do Swift compartilham um espaço de nome comum, portanto, você pode gravar dados com uma API e recuperá-los com outra.

Importante
Importante: Object Gateway implantado pelo DeepSea

O Object Gateway é instalado como uma função do DeepSea, portanto, você não precisa instalá-lo manualmente.

Para instalar o Object Gateway durante a implantação do cluster, consulte a Seção 5.3, “Implantação do cluster”.

Para adicionar um novo nó com o Object Gateway ao cluster, consulte o Seção 2.2, “Adicionando novas funções aos nós”.

9.1 Instalação manual do Object Gateway

  1. Instale o Object Gateway em um nó que não use a porta 80. O comando a seguir instala todos os componentes necessários:

    cephadm@ogw > sudo zypper ref && zypper in ceph-radosgw
  2. Se o servidor Apache da instância anterior do Object Gateway estiver em execução, pare-o e desabilite o serviço relevante:

    cephadm@ogw >  sudo systemctl stop disable apache2.service
  3. Edite /etc/ceph/ceph.conf e adicione as seguintes linhas:

    [client.rgw.gateway_host]
     rgw frontends = "beast port=80"
    Dica
    Dica

    Para configurar o Object Gateway/Beast para uso com a criptografia SSL, modifique a linha de acordo:

    rgw frontends = beast ssl_port=7480 ssl_certificate=PATH_TO_CERTIFICATE.PEM
  4. Reinicie o serviço Object Gateway.

    cephadm@ogw > sudo systemctl restart ceph-radosgw@rgw.gateway_host

9.1.1 Configuração do Object Gateway

Várias etapas são necessárias para configurar um Object Gateway.

9.1.1.1 Configuração Básica

A configuração de um Ceph Object Gateway requer um Cluster de Armazenamento do Ceph em execução. O Ceph Object Gateway é um cliente do Cluster de Armazenamento do Ceph. Como cliente do Cluster de Armazenamento do Ceph, ele requer:

  • Um nome de host para a instância do gateway. Por exemplo, gateway.

  • Um nome de usuário do cluster de armazenamento com as permissões apropriadas e um chaveiro.

  • Pools para armazenar os dados.

  • Um diretório de dados para a instância do gateway.

  • Uma entrada de instância no arquivo de configuração do Ceph.

Cada instância deve ter um nome de usuário e uma chave para se comunicar com um cluster de armazenamento do Ceph. Nas etapas a seguir, usamos um nó do monitor para criar um chaveiro do protocolo de boot e, em seguida, criamos o chaveiro do usuário da instância do Object Gateway com base no do protocolo de boot. Em seguida, criamos um nome de usuário e uma chave do cliente. Na sequência, adicionamos a chave ao Cluster de Armazenamento do Ceph. Por fim, distribuímos o chaveiro para o nó que contém a instância do gateway.

  1. Crie um chaveiro para o gateway:

    cephadm@adm > ceph-authtool --create-keyring /etc/ceph/ceph.client.rgw.keyring
    cephadm@adm > sudo chmod +r /etc/ceph/ceph.client.rgw.keyring
  2. Gere um nome de usuário e uma chave do Ceph Object Gateway para cada instância. Como exemplo, usaremos o nome gateway depois de client.radosgw:

    cephadm@adm > ceph-authtool /etc/ceph/ceph.client.rgw.keyring \
      -n client.rgw.gateway --gen-key
  3. Adicione recursos à chave:

    cephadm@adm > ceph-authtool -n client.rgw.gateway --cap osd 'allow rwx' \
      --cap mon 'allow rwx' /etc/ceph/ceph.client.rgw.keyring
  4. Após criar um chaveiro e uma chave para habilitar o acesso do Ceph Object Gateway ao Cluster de Armazenamento do Ceph, adicione a chave ao Cluster de Armazenamento do Ceph. Por exemplo:

    cephadm@adm > ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.gateway \
      -i /etc/ceph/ceph.client.rgw.keyring
  5. Distribua o chaveiro para o nó com a instância do gateway:

    cephadm@adm > scp /etc/ceph/ceph.client.rgw.keyring  ceph@HOST_NAME:/home/ceph
    cephadm@adm > ssh ceph@HOST_NAME
    cephadm@ogw > mv ceph.client.rgw.keyring /etc/ceph/ceph.client.rgw.keyring
Dica
Dica: Usar o chaveiro do protocolo de boot

Uma maneira alternativa é criar o chaveiro do protocolo de boot do Object Gateway e, em seguida, criar o chaveiro do Object Gateway com base nele:

  1. Crie um chaveiro do protocolo de boot do Object Gateway em um dos nós do monitor:

    cephadm@mon > ceph \
     auth get-or-create client.bootstrap-rgw mon 'allow profile bootstrap-rgw' \
     --connect-timeout=25 \
     --cluster=ceph \
     --name mon. \
     --keyring=/var/lib/ceph/mon/ceph-NODE_HOST/keyring \
     -o /var/lib/ceph/bootstrap-rgw/keyring
  2. Crie o diretório /var/lib/ceph/radosgw/ceph-RGW_NAME para armazenar o chaveiro do protocolo de boot:

    cephadm@mon > mkdir \
    /var/lib/ceph/radosgw/ceph-RGW_NAME
  3. Crie um chaveiro do Object Gateway com base no chaveiro do protocolo de boot recém-criado:

    cephadm@mon > ceph \
     auth get-or-create client.rgw.RGW_NAME osd 'allow rwx' mon 'allow rw' \
     --connect-timeout=25 \
     --cluster=ceph \
     --name client.bootstrap-rgw \
     --keyring=/var/lib/ceph/bootstrap-rgw/keyring \
     -o /var/lib/ceph/radosgw/ceph-RGW_NAME/keyring
  4. Copie o chaveiro do Object Gateway para o host do Object Gateway:

    cephadm@mon > scp \
    /var/lib/ceph/radosgw/ceph-RGW_NAME/keyring \
    RGW_HOST:/var/lib/ceph/radosgw/ceph-RGW_NAME/keyring

9.1.1.2 Criar pools (opcional)

Os Ceph Object Gateways requerem pools de Cluster de Armazenamento do Ceph para armazenar dados específicos do gateway. Se o usuário que você criou tem as permissões apropriadas, o gateway criará os pools automaticamente. No entanto, verifique se você definiu um número padrão apropriado de grupos de posicionamento por pool no arquivo de configuração do Ceph.

Os nomes dos pools vêm depois da sintaxe ZONE_NAME.POOL_NAME. Ao configurar um gateway com a região e a zona padrão, o nome da zona padrão é “default”, como em nosso exemplo:

.rgw.root
default.rgw.control
default.rgw.meta
default.rgw.log
default.rgw.buckets.index
default.rgw.buckets.data

Para criar os pools manualmente, consulte o Seção 11.2.2, “Criando um pool”.

Importante
Importante: Object Gateway e pools com codificação de eliminação

Apenas o pool default.rgw.buckets.data pode ter codificação de eliminação. Todos os outros pools precisam ser replicados; do contrário, o gateway não ficará acessível.

9.1.1.3 Adicionando a configuração do gateway ao Ceph

Adicione a configuração do Ceph Object Gateway ao arquivo de Configuração do Ceph. A configuração do Ceph Object Gateway requer que você identifique a instância do Ceph Object Gateway. Em seguida, especifique o nome de host em que você instalou o daemon do Ceph Object Gateway, um chaveiro (para uso com o cephx) e, opcionalmente, um arquivo de registro. Por exemplo:

[client.rgw.INSTANCE_NAME]
host = HOST_NAME
keyring = /etc/ceph/ceph.client.rgw.keyring
Dica
Dica: Arquivo de registro do Object Gateway

Para anular o arquivo de registro do Object Gateway padrão, inclua o seguinte:

log file = /var/log/radosgw/client.rgw.INSTANCE_NAME.log

A parte [client.rgw.*] da instância do gateway identifica essa parte do arquivo de configuração do Ceph como a que configura um cliente de Cluster de Armazenamento do Ceph no qual o tipo de cliente é um Ceph Object Gateway (radosgw). O nome da instância vem na sequência. Por exemplo:

[client.rgw.gateway]
host = ceph-gateway
keyring = /etc/ceph/ceph.client.rgw.keyring
Nota
Nota

O HOST_NAME deve ser o nome de host da sua máquina, excluindo o nome de domínio.

Em seguida, desative print continue. Se ele estiver definido como true, você poderá ter problemas com as operações PUT:

rgw print continue = false

Para usar um Ceph Object Gateway com chamadas de subdomínio S3 (por exemplo, http://bucketname.hostname), você deve adicionar o nome DNS do Ceph Object Gateway à seção [client.rgw.gateway] do arquivo de configuração do Ceph:

[client.rgw.gateway]
...
rgw dns name = HOST_NAME

Você também deve considerar a instalação de um servidor DNS, como Dnsmasq, em sua(s) máquina(s) cliente ao usar a sintaxe http://BUCKET_NAME.HOST_NAME. O arquivo dnsmasq.conf deve incluir as seguintes configurações:

address=/HOST_NAME/HOST_IP_ADDRESS
listen-address=CLIENT_LOOPBACK_IP

Em seguida, adicione o endereço IP CLIENT_LOOPBACK_IP como o primeiro servidor DNS à(s) máquina(s) cliente.

9.1.1.4 Criar diretório de dados

Os scripts de implantação não podem criar o diretório de dados do Ceph Object Gateway padrão. Crie diretórios de dados para cada instância de um daemon radosgw, caso isso ainda não tenha sido feito. As variáveis de host no arquivo de configuração do Ceph determinam qual host executa cada instância de um daemon radosgw. O formato comum especifica o daemon radosgw, o nome do cluster e o ID do daemon.

root # mkdir -p /var/lib/ceph/radosgw/CLUSTER_ID

Usando as configurações do ceph.conf do exemplo acima, você executa o seguinte:

root # mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.gateway

9.1.1.5 Reiniciar serviços e iniciar o gateway

Para garantir que todos os componentes recarreguem as configurações deles, é recomendável reiniciar o serviço de Cluster de Armazenamento do Ceph. Em seguida, inicialize o serviço radosgw. Para obter mais informações, consulte o Capítulo 4, Introdução e o Seção 17.3, “Operando o serviço Object Gateway”.

Quando o serviço estiver em execução, você poderá fazer uma solicitação GET anônima para ver se o gateway retorna uma resposta. Uma solicitação HTTP simples para o nome de domínio deve retornar o seguinte:

<ListAllMyBucketsResult>
      <Owner>
              <ID>anonymous</ID>
              <DisplayName/>
      </Owner>
      <Buckets/>
</ListAllMyBucketsResult>
Imprimir esta página