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.
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”.
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
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
Edite /etc/ceph/ceph.conf
e adicione as seguintes linhas:
[client.rgw.gateway_host] rgw frontends = "civetweb port=80"
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
Reinicie o serviço Object Gateway.
cephadm >
sudo systemctl restart ceph-radosgw@rgw.gateway_host
Várias etapas são necessárias para configurar um Object Gateway.
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.
Crie um chaveiro para o gateway:
cephadm >
sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.rgw.keyringcephadm >
sudo chmod +r /etc/ceph/ceph.client.rgw.keyring
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
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
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
Distribua o chaveiro para o nó com a instância do gateway:
cephadm >
sudo scp /etc/ceph/ceph.client.rgw.keyring ceph@hostname:/home/cephcephadm >
ssh hostnamecephadm >
sudo mv ceph.client.rgw.keyring /etc/ceph/ceph.client.rgw.keyring
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:
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
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
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
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
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”.
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.
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
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
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.
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
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>