3.7. 为 Red Hat Ceph Storage 配置防火墙

Red Hat Ceph Storage 使用 firewalld 服务。firewalld 服务包含每个守护进程的端口列表。

Ceph Monitor 守护进程使用端口 33006789 作为 Ceph 存储集群中的通信。

在每个 Ceph OSD 节点上,OSD 守护进程使用 6800-7300 范围内的多个端口:

  • 一个用于通过公共网络与客户端通信和监控器
  • 一个用于通过集群网络发送数据到其他 OSD(如果可用);否则,通过公共网络发送数据
  • 一个用于通过集群网络(如果有)交换心跳数据包;否则,通过公共网络交换。

Ceph 管理器 (ceph-mgr) 守护进程使用范围为 6800-7300 的端口。考虑将 ceph-mgr 守护进程与 Ceph monitor 在同一节点上并置。

Ceph 元数据服务器节点 (ceph-mds) 使用端口范围 6800-7300

Ceph 对象网关节点由 Ansible 配置为使用默认端口 8080。但是,您可以更改默认端口,例如端口 80

要使用 SSL/TLS 服务,请打开端口 443

如果启用 firewalld,以下步骤是可选的。默认情况下,ceph-ansiblegroup_vars/all.yml 中包括以下设置,它会自动打开适当的端口:

configure_firewall: True

前提条件

  • 网络硬件已连接。
  • 对存储集群中的所有节点具有 rootsudo 访问权限。

流程

  1. 在存储集群的所有节点上,启动 firewalld 服务。启用它在引导时运行,并确保它正在运行:

    # systemctl enable firewalld
    # systemctl start firewalld
    # systemctl status firewalld
  2. 在所有监控节点上,在公共网络上打开端口 33006789

    [root@monitor ~]# firewall-cmd --zone=public --add-port=3300/tcp
    [root@monitor ~]# firewall-cmd --zone=public --add-port=3300/tcp --permanent
    [root@monitor ~]# firewall-cmd --zone=public --add-port=6789/tcp
    [root@monitor ~]# firewall-cmd --zone=public --add-port=6789/tcp --permanent
    [root@monitor ~]# firewall-cmd --permanent --add-service=ceph-mon
    [root@monitor ~]# firewall-cmd --add-service=ceph-mon

    根据源地址限制访问:

    firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 \
    source address=IP_ADDRESS/NETMASK_PREFIX port protocol=tcp \
    port=6789 accept' --permanent
    替换
    • IP_ADDRESS,使用 Monitor 节点的网络地址。
    • NETMASK_PREFIX,使用 CIDR 表示法的子网掩码 。

      示例

      [root@monitor ~]# firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 \
      source address=192.168.0.11/24 port protocol=tcp \
      port=6789 accept' --permanent

  3. 在所有 OSD 节点上,打开公共网络上的端口 6800-7300

    [root@osd ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp
    [root@osd ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
    [root@osd ~]# firewall-cmd --permanent --add-service=ceph
    [root@osd ~]# firewall-cmd --add-service=ceph

    如果您有单独的集群网络,请对适当的区重复这些命令。

  4. 在所有 Ceph Manager (ceph-mgr) 节点上,打开公共网络上的端口 6800-7300

    [root@monitor ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp
    [root@monitor ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent

    如果您有单独的集群网络,请对适当的区重复这些命令。

  5. 在所有 Ceph 元数据服务器 (ceph-mds) 节点上,打开公共网络上的端口 6800-7300

    [root@monitor ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp
    [root@monitor ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent

    如果您有单独的集群网络,请对适当的区重复这些命令。

  6. 在所有 Ceph 对象网关节点上,打开公共网络上的相关端口或端口。

    1. 打开默认 Ansible 配置的端口 8080:

      [root@gateway ~]# firewall-cmd --zone=public --add-port=8080/tcp
      [root@gateway ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent

      根据源地址限制访问:

      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_ADDRESS/NETMASK_PREFIX" port protocol="tcp" \
      port="8080" accept"
      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_ADDRESS/NETMASK_PREFIX" port protocol="tcp" \
      port="8080" accept" --permanent
      替换
      • IP_ADDRESS,使用 Monitor 节点的网络地址。
      • NETMASK_PREFIX,使用 CIDR 表示法的子网掩码 。

        示例

        [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
        source address="192.168.0.31/24" port protocol="tcp" \
        port="8080" accept"

        [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
        source address="192.168.0.31/24" port protocol="tcp" \
        port="8080" accept" --permanent
    2. 另外,如果您使用 Ansible 安装 Ceph 对象网关并更改了 Ansible 配置 Ceph 对象网关的默认端口以便从 8080 使用,例如端口 80,打开此端口:

      [root@gateway ~]# firewall-cmd --zone=public --add-port=80/tcp
      [root@gateway ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent

      要根据源地址限制访问,请运行以下命令:

      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_ADDRESS/NETMASK_PREFIX" port protocol="tcp" \
      port="80" accept"
      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_ADDRESS/NETMASK_PREFIX" port protocol="tcp" \
      port="80" accept" --permanent
      替换
      • IP_ADDRESS,使用 Monitor 节点的网络地址。
      • NETMASK_PREFIX,使用 CIDR 表示法的子网掩码 。

      示例

      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="80" accept"

      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="80" accept" --permanent
    3. 可选。要使用 SSL/TLS,请打开端口 443

      [root@gateway ~]# firewall-cmd --zone=public --add-port=443/tcp
      [root@gateway ~]# firewall-cmd --zone=public --add-port=443/tcp --permanent

      要根据源地址限制访问,请运行以下命令:

      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_ADDRESS/NETMASK_PREFIX" port protocol="tcp" \
      port="443" accept"
      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_ADDRESS/NETMASK_PREFIX" port protocol="tcp" \
      port="443" accept" --permanent
      替换
      • IP_ADDRESS,使用 Monitor 节点的网络地址。
      • NETMASK_PREFIX,使用 CIDR 表示法的子网掩码 。

      示例

      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="443" accept"
      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="443" accept" --permanent

其它资源

返回要求清单