档案软件高可用实现:从零到上手的全流程实操解决方案
前置环境准备
需要两台同配置CentOS 7.9服务器,内存≥4G、硬盘≥50G,内网互通,IP分别为192.168.1.10、192.168.1.11;同步配置yum源后执行:
``` yum clean all && yum makecache ```安装所需依赖包:
``` yum install -y keepalived nginx mysql-server ```数据层高可用:MySQL主从半同步配置
步骤1:主库(192.168.1.10)配置
编辑MySQL配置文件/etc/my.cnf,完整内容:
``` [mysqld] server-id=10 log-bin=mysql-bin binlog-format=ROW sync_binlog=1 innodb_flush_log_at_trx_commit=1 ```启动MySQL并设置开机自启:
``` systemctl start mysqld && systemctl enable mysqld ```进入MySQL创建复制专用账号:
``` mysql -u root -p -e "CREATE USER 'repl'@'192.168.1.11' IDENTIFIED BY 'Repl@123456'; GRANT REPLICATION SLAVE ON . TO 'repl'@'192.168.1.11'; FLUSH PRIVILEGES;" ```查看主库状态,必须记录返回的File(如mysql-bin.000001)和Position(如156)数值,后续从库配置必须使用该值:
``` mysql -u root -p -e "SHOW MASTER STATUS;" ```步骤2:从库(192.168.1.11)配置
编辑MySQL配置文件/etc/my.cnf,完整内容:
``` [mysqld] server-id=11 log-bin=mysql-bin relay-log=relay-bin binlog-format=ROW read_only=1 ```启动MySQL并设置开机自启,执行主从同步命令(替换为刚才记录的主库File和Position):
``` systemctl start mysqld && systemctl enable mysqld mysql -u root -p -e "CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='repl', MASTER_PASSWORD='Repl@123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=156;" ```启动从库同步线程:
``` mysql -u root -p -e "START SLAVE;" ```验证同步状态,正常输出为Slave_IO_Running: Yes,Slave_SQL_Running: Yes,若为No则重试启动命令:
``` mysql -u root -p -e "SHOW SLAVE STATUS\G" | grep -E "Slave_IO_Running|Slave_SQL_Running" ```应用层高可用:Nginx反向代理+Keepalived双机热备
步骤1:Nginx反向代理配置(两台服务器均执行)

编辑/etc/nginx/nginx.conf,在http块内添加集群配置(将192.168.1.10:8080和192.168.1.11:8080替换为你的档案软件实际端口),完整内容:
``` http { upstream doc_server { server 192.168.1.10:8080 weight=1 max_fails=2 fail_timeout=30s; server 192.168.1.11:8080 weight=1 max_fails=2 fail_timeout=30s; } server { listen 80; server_name _; location / { proxy_pass http://doc_server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } } ```启动Nginx并设置开机自启:
``` systemctl start nginx && systemctl enable nginx ```步骤2:Keepalived双机热备配置
主库(192.168.1.10)编辑/etc/keepalived/keepalived.conf,完整内容:
``` ! Configuration File for keepalived global_defs { router_id doc_keepalived } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100/24 } } ```从库(192.168.1.11)编辑/etc/keepalived/keepalived.conf,仅修改state为BACKUP、priority为90,其余内容一致:
``` ! Configuration File for keepalived global_defs { router_id doc_keepalived } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100/24 } } ```两台服务器均启动Keepalived并设置开机自启:
``` systemctl start keepalived && systemctl enable keepalived ```高可用场景验证
1. 虚拟IP验证:主库执行ip a,应显示192.168.1.100的虚拟网卡;
2. 故障切换验证:主库执行systemctl stop mysqld,等待30秒后,从库执行ip a,应获取192.168.1.100虚拟IP;
3. 故障恢复:主库启动MySQL后,虚拟IP自动切回,从库执行mysql -u root -p -e "START SLAVE;"恢复同步。
可选增强配置:应用进程守护
安装Supervisor管理档案软件进程,确保崩溃后自动重启:
``` yum install -y supervisor && systemctl start supervisord && systemctl enable supervisord ```创建守护配置文件/etc/supervisord.d/doc.ini,替换/opt/doc-server.jar为你的档案软件启动包路径:
``` [program:doc_server] command=java -jar /opt/doc-server.jar user=root autostart=true autorestart=true stderr_logfile=/var/log/doc_err.log stdout_logfile=/var/log/doc_out.log ```更新Supervisor配置并启动进程:
``` supervisorctl update && supervisorctl start doc_server ```