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

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.

O daemon do Object Gateway usa um servidor HTTP incorporado (CivetWeb) para interagir com o cluster do Ceph. Como ele oferece interfaces compatíveis com o OpenStack Swift e o Amazon S3, o Object Gateway tem seu 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

A partir do SUSE Enterprise Storage 5, 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 4.3, “Implantação do cluster”.

Para adicionar um novo nó com o Object Gateway ao cluster, consulte o Seção 1.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. Por exemplo, um nó que executa o openATTIC já está usando a porta 80. O comando a seguir instala todos os componentes necessários:

    cephadm > sudo zypper ref && sudo 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 > sudo systemctl stop disable apache2.service
  3. Edite /etc/ceph/ceph.conf e adicione as seguintes linhas:

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

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

    rgw frontends = civetweb port=7480s ssl_certificate=path_to_certificate.pem
  4. Reinicie o serviço Object Gateway.

    cephadm > 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 > sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.rgw.keyring
    cephadm > 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 > sudo ceph-authtool /etc/ceph/ceph.client.rgw.keyring \
      -n client.rgw.gateway --gen-key
  3. Adicione recursos à chave:

    cephadm > sudo 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 > sudo 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 > sudo scp /etc/ceph/ceph.client.rgw.keyring  ceph@hostname:/home/ceph
    cephadm > ssh hostname
    cephadm > sudo 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 > sudo 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 > sudo 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 > sudo 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 > sudo 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 7.2.2, “Criar 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 = hostname
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 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 = hostname

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://bucketname.hostname. O arquivo dnsmasq.conf deve incluir as seguintes configurações:

address=/hostname/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.

cephadm > sudo mkdir -p /var/lib/ceph/radosgw/cluster-id

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

cephadm > sudo 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 2, Introdução e o Seção 11.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