实操指南:档案软件高可用的零 downtime 落地配置步骤
一、前置准备(需严格执行)
需2台同配置服务器(主节点+备用节点):每台2核4G vCPU、50G 系统盘、100G 数据盘,系统为CentOS 7.9,内网互通且时间同步(执行ntpdate cn.pool.ntp.org同步时间)。
1. 基础依赖安装
所有节点执行以下命令,确保依赖完整:
``` yum install -y mariadb-server mariadb-client memcached python36 rsync keepalived ```务必验证:执行seafile-server -v无报错,若提示命令不存在,需重新配置环境变量。
二、主节点核心部署
1. Seafile软件安装
主节点执行以下命令下载并解压对应版本(选8.0.6稳定版,兼容性最强):
``` wget https://download.seafile.com/published/seafile-server/8.0.6/seafile-server_8.0.6_x86_64.tar.gz tar -zxvf seafile-server_8.0.6_x86_64.tar.gz -C /opt/ cd /opt/seafile-server-8.0.6/ ```执行初始化脚本,按提示输入:
``` ./setup-seafile.sh ```输入参数时严格按以下填写:服务器名seafile-main、内网IP192.168.1.10(替换为你主节点内网IP)、存储路径/opt/seafile-data、数据库类型mysql、数据库密码seafile_pass_2024(自定义但需记住)、管理员邮箱admin@test.com、管理员密码Admin@123456。
2. 主节点配置调整
修改/opt/seafile/ccnet/ccnet.conf,找到以下字段,修改为:
修改/opt/seafile/conf/seafile.conf,添加高可用标识:
启动主节点服务:
``` ./seafile.sh start ./seafile.sh start ```务必验证:访问http://192.168.1.100:8000(虚拟IP)能正常登录,服务无报错。
三、备用节点部署与数据同步
备用节点需与主节点完全一致配置,执行同样的依赖安装、Seafile解压步骤,但跳过初始化脚本(复用主节点数据库)。
1. 数据同步配置
在主节点配置免密登录备用节点(备用节点IP为192.168.1.11):
在主节点创建定时同步任务,每5分钟同步Seafile数据:
``` crontab -e ```
添加以下内容:
``` /5 rsync -avz --delete /opt/seafile/seafile-data/ root@192.168.1.11:/opt/seafile/seafile-data/ ```2. 备用节点配置
备用节点修改/opt/seafile/ccnet/ccnet.conf,SERVICE_URL同主节点,数据库配置指向主节点IP(192.168.1.10):
停止备用节点默认启动的服务,确保服务未运行:
``` ./seafile.sh stop ./seafile.sh stop ```务必验证:主节点执行rsync命令无报错,备用节点数据目录已同步主节点最新内容。
四、Keepalived虚拟IP配置(核心高可用)
所有节点配置Keepalived,主节点优先级高于备用,虚拟IP漂移触发自动切换。
1. 主节点Keepalived配置
编辑/etc/keepalived/keepalived.conf,完整内容如下:
2. 备用节点Keepalived配置
编辑/etc/keepalived/keepalived.conf,仅修改以下内容:
启动所有节点的Keepalived服务:
``` systemctl start keepalived systemctl enable keepalived ```务必验证:主节点执行ip a能看到虚拟IP192.168.1.100,备用节点无该IP。
五、故障自动切换验证
执行以下步骤,验证高可用是否生效:
- 在主节点执行
systemctl stop seafile,停止主节点服务; - 等待30秒,执行
ip a查看备用节点,确认虚拟IP已漂移到备用节点; - 访问
http://192.168.1.100:8000,正常登录且档案数据完整; - 重启主节点服务,虚拟IP自动漂移回主节点,服务恢复正常。
关键提示:切换过程无服务中断,符合零 downtime 要求。
六、细节优化(避免后续问题)
1. 防火墙配置:所有节点开放相关端口,执行:
``` firewall-cmd --add-port=8000/tcp --permanent firewall-cmd --add-port=8082/tcp --permanent firewall-cmd --add-port=112/udp --permanent Keepalived VRRP端口 firewall-cmd --reload ```2. 时间同步:确保主备节点时间差小于1秒,避免VRRP通信异常;
3. 备份配置:每周备份主节点的/opt/seafile-data目录和数据库,执行: