所有节点执行前必须先关闭防火墙和SELinux,否则会出现集群通信异常,本次部署采用3节点架构(奇数节点避免脑裂),节点规划如下:
所有节点执行以下初始化命令:
``` 关闭防火墙 systemctl stop firewalld && systemctl disable firewalld 关闭SELinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config && setenforce 0 配置主机映射 cat >> /etc/hosts << EOF 192.168.1.10 node1 192.168.1.11 node2 192.168.1.12 node3 EOF 配置SSH免密登录,一路回车即可 ssh-keygen 分别向另外两个节点传输公钥,输入对应节点root密码即可 ssh-copy-id node1 ssh-copy-id node2 ssh-copy-id node3 ```云环境部署用户注意:提前在云服务商控制台开启VRRP内网广播权限,否则VIP无法正常漂移
档案附件需要统一存储,中小规模场景采用NFS即可,部署在node3节点,执行以下命令:
``` 安装NFS服务 yum install nfs-utils rpcbind -y systemctl start rpcbind && systemctl enable rpcbind systemctl start nfs && systemctl enable nfs 创建存储目录 mkdir -p /data/archive chmod 777 /data/archive 配置挂载权限 cat >> /etc/exports << EOF /data/archive 192.168.1.0/24(rw,sync,no_root_squash) EOF 生效配置 exportfs -rv ```node1、node2节点执行挂载命令:
``` yum install nfs-utils -y mkdir -p /opt/archive/attachment 挂载共享存储 mount -t nfs node3:/data/archive /opt/archive/attachment 配置开机自动挂载 echo "node3:/data/archive /opt/archive/attachment nfs defaults 0 0" >> /etc/fstab ```执行df -h确认挂载成功,出现node3:/data/archive对应的挂载点即可。
node1、node2节点统一安装MySQL8.0,执行以下命令:
``` 安装MySQL源 yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm -y yum install mysql-community-server -y --nogpgcheck systemctl start mysqld && systemctl enable mysqld 获取初始密码 grep 'temporary password' /var/log/mysqld.log 登录修改初始密码,替换your_new_pwd为自定义强密码 mysql -uroot -p初始密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_pwd@2024'; flush privileges; ```编辑/etc/my.cnf,替换为以下完整配置:
``` [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid server-id=1 log-bin=mysql-bin binlog_format=row gtid_mode=ON enforce_gtid_consistency=ON log_slave_updates=ON ```执行systemctl restart mysqld重启服务,登录MySQL创建同步用户:
编辑/etc/my.cnf,替换为以下完整配置:
``` [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid server-id=2 log-bin=mysql-bin binlog_format=row gtid_mode=ON enforce_gtid_consistency=ON log_slave_updates=ON read_only=1 ```
重启MySQL后配置主从同步:
``` mysql -uroot -p'your_new_pwd@2024' CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='repl', MASTER_PASSWORD='Repl@2024', MASTER_AUTO_POSITION=1; start slave; ```执行show slave status\G查看同步状态,确认Slave_IO_Running和Slave_SQL_Running均为Yes即为同步成功
所有节点安装Keepalived:
``` yum install keepalived -y ```注意替换配置文件中的interface字段为你的实际网卡名,可通过ip addr命令查询
node1(主节点)/etc/keepalived/keepalived.conf配置:
``` ! Configuration File for keepalived global_defs { router_id node1 } vrrp_script chk_archive { script "/etc/keepalived/check_archive.sh" interval 2 weight -20 } vrrp_script chk_mysql { script "/etc/keepalived/check_mysql.sh" interval 2 weight -20 } 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.200/24 } track_script { chk_archive chk_mysql } } ```node2(从节点)配置仅需修改router_id为node2、state为BACKUP、priority为90即可。node3(仲裁节点)配置删除vrrp_script相关配置,router_id为node3、priority为80即可。
node1、node2节点创建/etc/keepalived/check_archive.sh,替换为你的档案软件进程名:
``` !/bin/bash count=`ps -ef | grep 你的档案软件进程名 | grep -v grep | wc -l` if [ $count -eq 0 ];then systemctl stop keepalived fi ```创建/etc/keepalived/check_mysql.sh,替换为你的数据库root密码:
``` !/bin/bash mysql -uroot -p'your_new_pwd@2024' -e "select 1;" > /dev/null 2>&1 if [ $? -ne 0 ];then systemctl stop keepalived fi ```给脚本加执行权限后启动服务:
``` chmod +x /etc/keepalived/.sh systemctl start keepalived && systemctl enable keepalived ```node1执行ip addr,确认192.168.1.200已绑定到网卡即为部署成功。