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.
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”.
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
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
Edite /etc/ceph/ceph.conf
e adicione as seguintes linhas:
[client.rgw.gateway_host] rgw frontends = "beast port=80"
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
Reinicie o serviço Object Gateway.
cephadm@ogw >
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@adm >
ceph-authtool --create-keyring /etc/ceph/ceph.client.rgw.keyringcephadm@adm >
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@adm >
ceph-authtool /etc/ceph/ceph.client.rgw.keyring \
-n client.rgw.gateway --gen-key
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
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
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/cephcephadm@adm >
ssh ceph@HOST_NAMEcephadm@ogw >
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@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
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
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
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
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”.
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 = HOST_NAME 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_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.
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
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>