centos

如何在CentOS上实现SQLAdmin的高可用性

小樊
44
2025-12-01 21:56:47
栏目: 云计算

在CentOS上实现 SQLAdmin 的高可用

架构总览

前置条件与组件

部署步骤

  1. 数据库高可用(MySQL 主从示例)

    • 主库配置(/etc/my.cnf 或 /etc/mysql/my.cnf):启用二进制日志与唯一 server-id。
      • [mysqld] 段示例:server-id=1;log_bin=/var/log/mysql/mysql-bin.log
    • 从库配置:server-id=2;relay_log=/var/log/mysql/mysql-relay-bin.log;read_only=1
    • 建立复制账号并初始化复制:
      • 主库:CREATE USER ‘replicator’@‘%’ IDENTIFIED BY ‘password’; GRANT REPLICATION SLAVE ON . TO ‘replicator’@‘%’; FLUSH PRIVILEGES;
      • 主库:SHOW MASTER STATUS; 记录 File/Position。
      • 从库:CHANGE MASTER TO MASTER_HOST=‘master_ip’, MASTER_USER=‘replicator’, MASTER_PASSWORD=‘password’, MASTER_LOG_FILE=‘file’, MASTER_LOG_POS=position; START SLAVE;
      • 验证:SHOW SLAVE STATUS\G 中 Slave_IO_Running/Slave_SQL_Running 均为 Yes。
  2. 部署 SQLAdmin(以 phpMyAdmin 为例)

    • 安装与配置:
      • 安装 EPEL 与 Web/PHP 组件(yum install -y epel-release httpd php php-mysqlnd …)。
      • 部署 phpMyAdmin,编辑配置文件(如 config.inc.php)设置 $cfg[‘blowfish_secret’] 与连接白名单。
      • 示例 Nginx 片段(/etc/nginx/conf.d/sqladmin.conf):
        • server { listen 80; server_name sqladmin.example.com; location / { root /usr/share/phpMyAdmin; index index.php; } location ~ .php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php-fpm/www.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
      • 启动服务:systemctl enable --now httpd php-fpm。
  3. 负载均衡与健康检查(Nginx)

    • 在两台 SQLAdmin 前端节点上配置一致的 upstream,指向数据库主从或集群的读/写分离地址;启用被动健康检查与连接复用。
    • 示例(/etc/nginx/conf.d/sqladmin_upstream.conf):
      • upstream sqladmin_backend { server 10.0.0.11:3306 max_fails=3 fail_timeout=10s; server 10.0.0.12:3306 max_fails=3 fail_timeout=10s; }
      • server { listen 33060; proxy_pass sqladmin_backend; proxy_next_upstream error timeout invalid_header http_500; proxy_connect_timeout 5s; proxy_timeout 30s; }
    • 若 SQLAdmin 为 Web 管理端,则对 80/443 做反向代理与负载均衡,并在 upstream 中加入两台前端节点。
  4. VIP 与故障转移(Keepalived)

    • 两台前端节点安装 Keepalived,配置 VRRP 实例绑定VIP(如 192.168.1.100);state 一主一备、设置不同 priority;加入 TCP 健康检查(对本地 80/443 或 33060 端口)。
    • 示例(/etc/keepalived/keepalived.conf 片段):
      • vrrp_instance VI_1 { state MASTER; interface eth0; virtual_router_id 51; priority 100; advert_int 1; authentication { auth_type PASS; auth_pass 42; } virtual_ipaddress { 192.168.1.100/24; } }
      • vrrp_script chk_sqladmin { script “/usr/bin/curl -f http://127.0.0.1/ || exit 1”; interval 2; weight -20; }
      • track_script { chk_sqladmin; }
    • 启动:systemctl enable --now keepalived。
  5. 安全与网络

    • 仅允许内网或跳板机访问 3306/33060;为 VIP/HTTP 启用 TLS/HTTPS;为 SQLAdmin 管理账号实施最小权限强口令策略;按需开启 SELinuxfirewalld 并仅放行必要端口。

验证与运维

可选增强

0
看了该问题的人还看了