4.8. Ceph 对象网关的高可用性
作为存储管理员,您可以将多个 Ceph 对象网关实例分配到一个区域。这允许您随着负载的增加而横向扩展,即相同的 zone group 和 zone;但是,您不需要联合架构来使用高度可用的代理。由于每个 Ceph 对象网关守护进程都有自己的 IP 地址,因此您可以使用 入口
服务在多个 Ceph 对象网关守护进程或节点之间平衡负载。ingress
服务管理 Ceph 对象网关环境的 HAProxy 和 keepalived
守护进程。您还可以在 HAProxy 服务器上终止 HTTPS 流量,并在 HAProxy 服务器和 Ceph 对象网关的 Beast 前端 web 服务器实例之间使用 HTTP。
先决条件
- 至少两个 Ceph 对象网关守护进程在不同主机上运行。
-
至少两个在不同主机上运行的
ingress
服务实例的容量。
4.8.1. 高可用性服务
ingress
服务为 Ceph 对象网关提供高可用性端点。可以根据需要将 ingress
服务部署到任意数量的主机。红帽建议至少有两个支持的 Red Hat Enterprise Linux 服务器,每个服务器都配置了 ingress
服务。您可以使用最小配置选项运行高可用性(HA)服务。Ceph 编配器部署 入口
服务,该服务通过提供负载平衡和浮动虚拟 IP 地址来管理 haproxy
和 keepalived
守护进程。活跃的 haproxy
将所有 Ceph 对象网关请求分发到所有可用的 Ceph 对象网关守护进程。
每次的一个 入口
主机上自动配置虚拟 IP 地址,称为主主机。Ceph 编配器根据配置为同一子网的一部分的现有 IP 地址选择第一个网络接口。如果虚拟 IP 地址不属于同一子网,您可以为 Ceph 编配器定义一个子网列表,以匹配现有的 IP 地址。如果 keepalived
守护进程和活跃的 haproxy
在主主机上没有响应,则虚拟 IP 地址将变为备份主机。此备份主机成为新的主主机。
目前,您无法在没有配置 IP 地址的网络接口中配置虚拟 IP 地址。
要使用安全套接字层(SSL),SSL 必须由 入口
服务终止,而不是在 Ceph 对象网关中终止。
4.8.2. 为 Ceph 对象网关配置高可用性
要为 Ceph 对象网关配置高可用性(HA),您可以编写 YAML 配置文件,Ceph 编配器则执行 入口
服务的安装、配置器和管理。入口
服务使用 haproxy
和 keepalived
守护进程为 Ceph 对象网关提供高可用性。
在 Ceph 8.0 发行版本中,您现在可以使用 RGW 作为后端部署 ingress 服务,其中 ingress 规格的 "spec" 部分中的 "use_tcp_mode_over_rgw" 选项被设置为 true。
先决条件
-
至少两个运行 Red Hat Enterprise Linux 9 或更高版本的主机,用于在其上安装
入口
服务。 - 一个正常运行的 Red Hat Ceph Storage 集群。
- 至少两个 Ceph 对象网关守护进程在不同主机上运行。
-
对运行
入口服务的主机的 root 级别访问权限
。 - 如果使用防火墙,则打开 HTTP 的端口 80,为 HTTPS 流量打开端口 443。
流程
创建新的
ingress.yaml
文件:Example
[root@host01 ~] touch ingress.yaml
打开
ingress.yaml
文件进行编辑。添加以下选项并添加适用于环境的值:语法
service_type: ingress 1 service_id: SERVICE_ID 2 placement: 3 hosts: - HOST1 - HOST2 - HOST3 spec: backend_service: SERVICE_ID virtual_ip: IP_ADDRESS/CIDR 4 frontend_port: INTEGER 5 monitor_port: INTEGER 6 virtual_interface_networks: 7 - IP_ADDRESS/CIDR ssl_cert: | 8
提供 SSL 证书的示例
service_type: ingress service_id: rgw.foo placement: hosts: - host01.example.com - host02.example.com - host03.example.com spec: backend_service: rgw.foo virtual_ip: 192.168.1.2/24 frontend_port: 8080 monitor_port: 1967 virtual_interface_networks: - 10.10.0.0/16 ssl_cert: | -----BEGIN CERTIFICATE----- MIIEpAIBAAKCAQEA+Cf4l9OagD6x67HhdCy4Asqw89Zz9ZuGbH50/7ltIMQpJJU0 gu9ObNtIoC0zabJ7n1jujueYgIpOqGnhRSvsGJiEkgN81NLQ9rqAVaGpadjrNLcM bpgqJCZj0vzzmtFBCtenpb5l/EccMFcAydGtGeLP33SaWiZ4Rne56GBInk6SATI/ JSKweGD1y5GiAWipBR4C74HiAW9q6hCOuSdp/2WQxWT3T1j2sjlqxkHdtInUtwOm j5Ism276IndeQ9hR3reFR8PJnKIPx73oTBQ7p9CMR1J4ucq9Ny0J12wQYT00fmJp -----END CERTIFICATE----- -----BEGIN PRIVATE KEY----- MIIEBTCCAu2gAwIBAgIUGfYFsj8HyA9Zv2l600hxzT8+gG4wDQYJKoZIhvcNAQEL BQAwgYkxCzAJBgNVBAYTAklOMQwwCgYDVQQIDANLQVIxDDAKBgNVBAcMA0JMUjEM MAoGA1UECgwDUkhUMQswCQYDVQQLDAJCVTEkMCIGA1UEAwwbY2VwaC1zc2wtcmhj czUtOGRjeHY2LW5vZGU1MR0wGwYJKoZIhvcNAQkBFg5hYmNAcmVkaGF0LmNvbTAe -----END PRIVATE KEY-----
没有提供 SSL 证书的示例
service_type: ingress service_id: rgw.ssl # adjust to match your existing RGW service placement: hosts: - hostname1 - hostname2 spec: backend_service: rgw.rgw.ssl.ceph13 # adjust to match your existing RGW service virtual_ip: IP_ADDRESS/CIDR # ex: 192.168.20.1/24 frontend_port: INTEGER # ex: 443 monitor_port: INTEGER # ex: 1969 use_tcp_mode_over_rgw: True
启动 Cephadm shell:
Example
[root@host01 ~]# cephadm shell --mount ingress.yaml:/var/lib/ceph/radosgw/ingress.yaml
配置最新的
haproxy
和keepalived
镜像:语法
ceph config set mgr mgr/cephadm/container_image_haproxy HAPROXY_IMAGE_ID ceph config set mgr mgr/cephadm/container_image_keepalived KEEPALIVED_IMAGE_ID
Red Hat Enterprise Linux 9
[ceph: root@host01 /]# ceph config set mgr mgr/cephadm/container_image_haproxy registry.redhat.io/rhceph/rhceph-haproxy-rhel9:latest [ceph: root@host01 /]# ceph config set mgr mgr/cephadm/container_image_keepalived registry.redhat.io/rhceph/keepalived-rhel9:latest
使用 Ceph 编配器安装和配置新的
ingress
服务:[ceph: root@host01 /]# ceph orch apply -i /var/lib/ceph/radosgw/ingress.yaml
Ceph 编配器完成后,验证 HA 配置。
在运行
ingress
服务的主机上,检查是否存在虚拟 IP 地址:Example
[root@host01 ~]# ip addr show
尝试从 Ceph 客户端访问 Ceph 对象网关:
语法
wget HOST_NAME
Example
[root@client ~]# wget host01.example.com
如果此操作返回具有类似内容的
index.html
,则 Ceph 对象网关的 HA 配置可以正常工作。Example
<?xml version="1.0" encoding="UTF-8"?> <ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>anonymous</ID> <DisplayName></DisplayName> </Owner> <Buckets> </Buckets> </ListAllMyBucketsResult>
其他资源
- 如需了解更多详细信息,请参阅 执行标准 RHEL 安装指南。
- 如需了解更多详细信息,请参阅 Red Hat Ceph Storage Object Gateway 指南中的 高可用性服务 部分。