全文目录导航
0. 前言
Longhorn 是 Rancher 商店中自带的分布式块存储服务,部署配置方便,且提供了美观易用的 UI。
Longhorn 中的数据卷备份功能需要外部存储,例如 s3 或 nfs,本文以 nfs 服务作为备份存储服务。
1. NFS 安装配置
1.1 安装 nfs 及 rpcbind
-
有外网环境直接 yum 下载安装
yum -y install nfs-utils rpcbind
-
无外网环境下载离线程序包安装
repotrack nfs-utils repotrack rpcbind
-
启动服务
systemctl start nfs && systemctl enable nfs systemctl start rpcbind && systemctl enable rpcbind
1.2 创建共享目录
-
创建目录并赋权限
mkdir -p /home/nfs && chmod -R 777 /home/nfs
1.3 配置访问权限
-
限制指定主机访问
# 单个主机地址 echo "/home/nfs 192.168.1.101(rw,sync,no_root_squash)" >> /etc/exports # 多个主机地址 echo "/home/nfs 192.168.1.101(rw,sync,no_root_squash) 192.168.1.102(rw)" >> /etc/exports
-
限制主机 IP 范围访问
# 192.168.1 网段可以访问 echo "/home/nfs 192.168.1.*(rw,sync,no_root_squash)" >> /etc/exports
-
无限制访问(不安全)
echo "/home/nfs *(rw)" >> /etc/exports
-
加载配置
exportfs -r
1.4 限制 showmount -e
防止漏洞扫描
-
配置
/etc/hosts.allow
# 此处配置允许挂载及 showmount -e 查看共享目录的主机 mountd:192.168.1.101 mountd:192.168.1.102 rpcbind:192.168.1.101 rpcbind:192.168.1.102
-
配置
/etc/hosts.deny
# 此处拦截除 allow 中配置的主机以外的所有 mountd:all rpcbind:all
-
验证配置是否成功
# 从 192.168.1.103 查看,无权访问 [root@103 ~]# showmount -e 192.168.1.101 clnt_create: RPC: Port mapper failure - Authentication error
# 从 192.168。1.102 查看,有权访问 [root@102 ~]# showmount -e 192.168.1.101 Export list for 192.168.1.101: /home/nfs-data 192.168.1.101,192.168.1.102
1.5 防火墙配置
由于 nfs 服务中有几个端口是随机的,无法在防火墙中指定,所以需要修改配置文件指定相关端口。
-
在
/etc/sysconfig/nfs
文件中增加以下内容# custom add RQUOTAD_PORT=1001 LOCKD_TCPPORT=32803 LOCKD_UDPPORT=32769 MOUNTD_PORT=892
-
配置防火墙规则
firewall-cmd --permanent --add-port=111/tcp firewall-cmd --permanent --add-port=111/udp firewall-cmd --permanent --add-port=2049/tcp firewall-cmd --permanent --add-port=2049/udp firewall-cmd --permanent --add-port=32803/tcp firewall-cmd --permanent --add-port=32803/udp firewall-cmd --permanent --add-port=32769/tcp firewall-cmd --permanent --add-port=32769/udp firewall-cmd --permanent --add-port=1001/tcp firewall-cmd --permanent --add-port=1001/udp firewall-cmd --permanent --add-port=892/tcp firewall-cmd --permanent --add-port=892/udp firewall-cmd --reload
需要更高的安全性的话,可以指定以上端口开发给哪些 ip 或 ip 范围
2. Longhorn 备份配置
2.1 在 Longhorn UI 中配置
在集群仪表板中,进入 Longhorn
管理界面
打开 【Setting】-【General】
找到 Backup Target
项,填入 nfs
路径后在页面最下方点击保存按钮即可
nfs://192.168.1.101:/home/nfs-data
3. 数据卷备份恢复操作
3.1 创建示例工作负载
以 postgres 数据库服务为测试对象
- 部署有状态工作负载,创建 pvc 数据卷
3.2 创建测试数据
使用 navicat 连接数据库服务,创建测试数据
- 创建
demo
数据库,user
表,并且在表中插入了一条测试数据
3.3 创建数据卷备份
在 Longhorn UI 的 Volumne 菜单中选中刚才创建的数据卷,点击菜单栏中的创建备份按钮(Create Backup),根据需要添加标签(Labels)
创建完成后,在备份(Backup)菜单中可以看到本次创建的备份信息
3.4 删除数据库数据
在 Navicat 中删除刚才创建的 demo
数据库,然后停止数据库服务
3.5 恢复数据卷
- 在卷(Volume)列表中删除当前的数据卷
- 在备份(Backup)列表中找到刚才备份的数据卷,点击菜单中的恢复(Restore)
- 填写必要信息,勾选使用之前的 PVC 名称(Use Previous Name),其他无需填写
- 再次打开卷(Volume)列表,发现刚才删除的卷已经回来,需要重新创建 PVC
默认即可,使用之前的 PVC 名称,这样就不需要修改工作负载的配置
创建成功后,再次启动数据库服务,查看数据已经恢复