3.7. 为 Red Hat Ceph Storage 配置防火墙
Red Hat Ceph Storage 使用 firewalld
服务。firewalld
服务包含每个守护进程的端口列表。
Ceph Monitor 守护进程使用端口 3300
和 6789
作为 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-ansible
在 group_vars/all.yml
中包括以下设置,它会自动打开适当的端口:
configure_firewall: True
前提条件
- 网络硬件已连接。
-
对存储集群中的所有节点具有
root
或sudo
访问权限。
流程
在存储集群的所有节点上,启动
firewalld
服务。启用它在引导时运行,并确保它正在运行:# systemctl enable firewalld # systemctl start firewalld # systemctl status firewalld
在所有监控节点上,在公共网络上打开端口
3300
和6789
:[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
在所有 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
如果您有单独的集群网络,请对适当的区重复这些命令。
在所有 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
如果您有单独的集群网络,请对适当的区重复这些命令。
在所有 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
如果您有单独的集群网络,请对适当的区重复这些命令。
在所有 Ceph 对象网关节点上,打开公共网络上的相关端口或端口。
打开默认 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
另外,如果您使用 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
可选。要使用 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
其它资源
- 如需有关公共和集群网络的更多信息,请参阅验证 Red Hat Ceph Storage 的网络配置。
-
有关
firewalld
的详情,请参阅 Red Hat Enterprise Linux 8 网络安全指南中的使用和配置防火墙章节。