高可用部署

一.keeplivaer nginx 高可用部署

下面为你详细介绍基于 Keepalived 和 Nginx 在两台机器(192.168.137.132 和 192.168.137.61)上实现高可用部署的完整步骤:

一、环境准备(两台服务器均执行)

  1. 环境准备

    (1)外网安装所需软件

# 更新系统
yum update -y# 安装 Nginx 和 Keepalived
yum install -y nginx keepalived# 启动 Nginx 并设置开机自启
systemctl start nginx
systemctl enable nginx# 启动 Keepalived 并设置开机自启
systemctl start keepalived
systemctl enable keepalived

(2)内网安装(外网提前下载所需软件)

# 创建存放目录
mkdir -p /nginx-keepalived-packages
cd /nginx-keepalived-packages# 下载 Nginx 及依赖
yum install --downloadonly --downloaddir=. nginx# 下载 Keepalived 及依赖
yum install --downloadonly --downloaddir=. keepalived# 打包所有文件
tar -zcvf nginx-keepalived-packages.tar.gz *# 解压
cd /root
mkdir -p /root/packages
tar -zxvf nginx-keepalived-packages.tar.gz -C /root/packages
cd /root/packages# 强制安装所有依赖(忽略版本冲突)
rpm -ivh --force --nodeps *.rpm
# 检查 Nginx 版本
nginx -v# 检查 Keepalived 版本
keepalived -v
  1. 关闭防火墙或开放必要端口
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld# 或者开放 80、443 端口以及 VRRP 协议(VRRP 使用协议号 112)
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-protocol=vrrp
firewall-cmd --reload

二、配置 Nginx(两台服务器均执行)

Nginx 配置保持默认即可,若需区分两台服务器的页面,可修改默认页面内容:

# 在 192.168.137.132 上执行
echo "192.168.137.132" > /usr/share/nginx/html/index.html# 在 192.168.137.61 上执行
echo "192.168.137.61" > /usr/share/nginx/html/index.html# 重启 Nginx 使配置生效
systemctl restart nginx

三、配置 Keepalived

1. 在主服务器(192.168.137.132)上配置

编辑 Keepalived 配置文件:

vi /etc/keepalived/keepalived.conf

配置内容如下:

global_defs {router_id LVS_MASTER  # 主节点标识
}# 监控 Nginx 状态的脚本
vrrp_script check_nginx {script "/etc/keepalived/check_nginx.sh"interval 2  # 每 2 秒检查一次weight -10  # 失败时权重降低 10
}vrrp_instance VI_1 {state MASTER  # 主节点interface ens33  # 内网网卡(用 ip addr 查看实际网卡名)virtual_router_id 51  # 虚拟路由 ID(主从必须一致)priority 100  # 优先级(主 > 从)advert_int 1  # 心跳间隔 1 秒# 认证配置authentication {auth_type PASSauth_pass 123456  # 主从认证密码需一致}# 虚拟 IP(VIP,内网网段内未使用的 IP)virtual_ipaddress {192.168.137.200/24  # 内网虚拟 IP}# 绑定监控脚本track_script {check_nginx}
}
2. 在从服务器(192.168.137.61)上配置

同样编辑 Keepalived 配置文件:

vi /etc/keepalived/keepalived.conf

配置内容如下:

global_defs {router_id LVS_BACKUP  # 从节点标识
}# 监控 Nginx 状态的脚本(与主节点一致)
vrrp_script check_nginx {script "/etc/keepalived/check_nginx.sh"interval 2weight -10
}vrrp_instance VI_1 {state BACKUP  # 从节点interface ens33  # 内网网卡(同主节点一致的命名)virtual_router_id 51  # 与主节点一致priority 90  # 优先级低于主节点advert_int 1authentication {auth_type PASSauth_pass 123456  # 与主节点密码一致}virtual_ipaddress {192.168.137.200/24  # 与主节点相同的虚拟 IP}track_script {check_nginx}
}

四、创建 Nginx 监控脚本(两台服务器均执行)

创建脚本文件:

vi /etc/keepalived/check_nginx.sh

脚本内容如下:

#!/bin/bash
# 检查 Nginx 端口是否在监听(80 端口为例)
if netstat -tlnp | grep -q ":80.*nginx"; thenexit 0
else# 尝试重启 Nginxsystemctl start nginxsleep 3# 再次检查,若仍失败则停止 Keepalivedif ! netstat -tlnp | grep -q ":80.*nginx"; thensystemctl stop keepalivedexit 1fi
fi

为脚本添加执行权限:

chmod +x /etc/keepalived/check_nginx.sh

五、重启服务并验证

  1. 重启 Keepalived 服务(两台服务器均执行)
systemctl restart keepalived
  1. 验证虚拟 IP 是否生效
    在主服务器上执行:
ip addr show  # 应能看到 192.168.137.200 已绑定在网卡上
  1. 测试高可用切换
  • 在浏览器中访问 http://192.168.137.200,应显示主服务器(192.168.137.132)的页面
  • 停止主服务器的 Nginx 或 Keepalived 服务:systemctl stop nginxsystemctl stop keepalived
  • 再次访问 http://192.168.137.200,应自动切换到从服务器(192.168.137.61)的页面
  • 恢复主服务器的服务后,虚拟 IP 会自动切回主服务器

通过以上配置,就实现了基于 Keepalived 和 Nginx 的高可用部署,当主服务器出现故障时,从服务器会自动接管服务,保证业务的连续性。

二 .mysql数据库高可用(主从)

一、准备工作(需在有外网的机器上操作)

1. 下载 MySQL 8.0 二进制包

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz

2. 下载依赖包

MySQL 8.0 依赖以下系统库,需提前下载对应的 RPM 包(根据 CentOS 版本选择,以 CentOS 7 为例):

  • libaio:异步I/O库(MySQL 核心依赖)
  • numactl: numa 内存管理工具(优化性能)
  • libnuma:numactl 的依赖库
  • perl:初始化数据库时可能用到的脚本依赖

下载方式
在有外网的 CentOS 机器上,用 yumdownloader 下载(需安装 yum-utils):

# 安装工具(有网环境)
yum install -y yum-utils# 下载依赖包(保存到当前目录)
yumdownloader --resolve libaio numactl libnuma perl

下载后会得到一系列 .rpm 文件(如 libaio-0.3.109-13.el7.x86_64.rpm 等)。

3. 传输文件到内网服务器

将以下文件通过 U 盘、内网共享等方式拷贝到目标 CentOS 服务器(例如 /root/mysql_install 目录):

  • MySQL 二进制包(mmysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
  • 所有依赖 RPM 包(*.rpm

二、内网服务器操作:安装依赖包

  1. 进入存放依赖包的目录:

    cd /root/mysql_install
    
  2. 安装依赖(按顺序执行,解决依赖关系):

    # 安装 libaio(必选)
    rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm# 安装 numactl 及依赖(可选,优化性能)
    rpm -ivh numactl-2.0.12-5.el7.x86_64.rpm# 安装 perl(初始化可能需要)
    rpm -ivh perl-5.16.3-299.el7_9.x86_64.rpm
    

三、安装 MySQL 8.0 二进制包

1. 创建 MySQL 用户和目录
# 创建 mysql 用户和组(避免用 root 运行)
groupadd mysql
useradd -r -g mysql -s /bin/false mysql# 创建安装目录和数据目录
mkdir -p /usr/local/mysql  # 安装目录
mkdir -p /data/mysql       # 数据目录(建议独立挂载磁盘)
chown -R mysql:mysql /usr/local/mysql /data/mysql
2. 解压二进制包
# 解压到 /usr/local
tar -xvf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz -C /usr/local# 重命名为 mysql(简化路径)
cd /usr/local
mv mysql-8.0.17-linux-glibc2.12-x86_64 mysql# 设置权限
chown -R mysql:mysql /usr/local/mysql
3. 配置环境变量
# 编辑 /etc/profile,添加 MySQL 路径
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile# 生效配置
source /etc/profile

四、初始化数据库

1. 创建配置文件 my.cnf
vim /etc/my.cnf

添加以下内容(根据实际需求调整):

[mysqld]
basedir = /usr/local/mysql        # 安装目录
datadir = /data/mysql             # 数据目录
socket = /tmp/mysql.sock          # socket 文件路径
port = 3306                       # 端口
character-set-server = utf8mb4    # 字符集
collation-server = utf8mb4_general_ci
default_authentication_plugin = mysql_native_password  # 兼容旧客户端(可选)[mysqld_safe]
log-error = /var/log/mysqld.log   # 错误日志
pid-file = /var/run/mysqld/mysqld.pid  # PID 文件
2. 初始化数据库
# 初始化(生成系统表,--initialize-insecure 表示无密码,适合内网)
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql# 创建 PID 文件目录并授权
mkdir -p /var/run/mysqld
touch /var/log/mysqld.log
chown -R mysql:mysql /var/run/mysqld /var/log/mysqld.log

五、配置 MySQL 服务并启动

1. 注册系统服务
# 复制服务脚本到系统目录
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld# 赋予执行权限
chmod +x /etc/init.d/mysqld# 添加到系统服务
chkconfig --add mysqld# 设为开机启动
chkconfig mysqld on
2. 启动 MySQL
# 启动服务
service mysqld start# 检查状态(若显示 running 则成功)
service mysqld status

六、验证安装

  1. 登录 MySQL(初始化无密码,直接登录):

    mysql -u root -p  # 提示输入密码时直接回车
    
  2. 修改 root 密码(必做,增强安全性):

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'admin123';
    FLUSH PRIVILEGES;  # 刷新权限
    
  3. 检查版本:

    SELECT VERSION();  # 输出 8.0.x 即成功
    
ip
192.168.137.132主节点
192.168.137.61从节点

-----------------------------------------------------------------------------主从集群

七、配置主节点(192.168.137.132)

1. 修改 MySQL 配置文件
vi /etc/my.cnf

添加以下配置:

[mysqld]
basedir = /usr/local/mysql        # 安装目录
datadir = /data/mysql             # 数据目录
socket = /tmp/mysql.sock          # socket 文件路径
port = 3306                       # 端口
character-set-server = utf8mb4    # 字符集
collation-server = utf8mb4_general_ci
default_authentication_plugin = mysql_native_password  # 兼容旧客户端(可选)# 主从复制相关配置
server-id = 132                   # 主节点唯一ID,建议使用IP最后一段
log_bin = /data/mysql/mysql-bin   # 二进制日志文件路径
binlog_format = row               # 二进制日志格式,row模式更安全
expire_logs_days = 7              # 二进制日志自动过期时间(天)
sync_binlog = 1                   # 每次事务提交立即同步到磁盘
binlog_cache_size = 1M            # 二进制日志缓存大小
max_binlog_size = 1G              # 单个二进制日志文件最大大小
binlog_do_db = test               # 需要同步的数据库(可选,不配置则同步所有)
binlog_ignore_db = mysql          # 忽略同步的数据库(可选)
binlog_ignore_db = information_schema
binlog_ignore_db = performance_schema[mysqld_safe]
log-error = /var/log/mysqld.log   # 错误日志
pid-file = /var/run/mysqld/mysqld.pid  # PID 文件

重启 MySQL 生效:

systemctl restart mysqld
2. 创建同步账号(主节点 MySQL 内执行)
# 登录 MySQL
mysql -u root -p# 创建用于从节点同步的账号(允许 192.168.137.61 连接)
CREATE USER 'repl'@'192.168.137.61' IDENTIFIED BY 'Repl@123';# 授予复制权限
GRANT REPLICATION SLAVE, CREATE, ALTER, DROP ON *.* TO 'repl'@'192.168.137.61';# 刷新权限
FLUSH PRIVILEGES;# 查看主节点状态(记录 File 和 Position,从节点配置需要)
SHOW MASTER STATUS;

执行后会显示类似如下结果(需记录 FilePosition 的值):

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      156 |              | mysql,information_schema |                   |
+------------------+----------+--------------+------------------+-------------------+

八、配置从节点(192.168.137.61)

1. 修改 MySQL 配置文件
vi /etc/my.cnf

添加以下配置:

[mysqld]
basedir = /usr/local/mysql        # 安装目录
datadir = /data/mysql             # 数据目录
socket = /tmp/mysql.sock          # socket 文件路径
port = 3306                       # 端口
character-set-server = utf8mb4    # 字符集
collation-server = utf8mb4_general_ci
default_authentication_plugin = mysql_native_password  # 兼容旧客户端(可选)# 主从复制相关配置
server-id = 61                    # 从节点唯一ID,与主节点不同
relay_log = /data/mysql/relay-bin # 中继日志文件路径
relay_log_index = /data/mysql/relay-bin.index  # 中继日志索引文件
read_only = 1                     # 从节点设置为只读(root用户不受限)
log_slave_updates = 0             # 从节点是否将复制的操作写入自己的二进制日志(级联复制时设为1)
slave_net_timeout = 60            # 从节点连接主节点超时时间(秒)
slave_parallel_workers = 2        # 从节点并行复制线程数(根据CPU核心数调整)
relay_log_recovery = 1            # 中继日志损坏时自动恢复[mysqld_safe]
log-error = /var/log/mysqld.log   # 错误日志
pid-file = /var/run/mysqld/mysqld.pid  # PID 文件

重启 MySQL 生效:

systemctl restart mysqld
2. 配置主从同步(从节点 MySQL 内执行)
# 登录 MySQL
mysql -u root -p# 停止从节点服务(若已启动)
STOP SLAVE;# 配置主节点信息(替换为实际值)
CHANGE MASTER TO
MASTER_HOST = '192.168.137.132',  # 主节点 IP
MASTER_USER = 'repl',              # 同步账号
MASTER_PASSWORD = 'Repl@123',      # 同步密码
MASTER_LOG_FILE = 'mysql-bin.000001',  # 主节点 SHOW MASTER STATUS 中的 File
MASTER_LOG_POS = 156;                  # 主节点 SHOW MASTER STATUS 中的 Position# 启动从节点服务
START SLAVE;# 查看从节点状态(关键:Slave_IO_Running 和 Slave_SQL_Running 需均为 Yes)
SHOW SLAVE STATUS\G

若输出中出现以下两行,说明主从配置成功:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

九、验证主从复制

1. 主节点插入测试数据
# 主节点 MySQL 内执行
CREATE DATABASE IF NOT EXISTS test_db;
USE test_db;
CREATE TABLE user (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO user VALUES (1, 'test_data');
2. 从节点验证同步结果
# 从节点 MySQL 内执行
USE test_db;
SELECT * FROM user;

若能查询到主节点插入的数据(id=1, name='test_data'),说明主从复制正常工作。

十、常见问题排查

  1. 从节点同步失败(Slave_IO_Running: Connecting)

    • 检查主节点 repl 账号密码是否正确。
    • 确认主节点 IP 和端口(默认 3306)是否可达:telnet 192.168.137.132 3306
    • 查看从节点错误日志:tail -f /var/log/mysqld.log
  2. Slave_SQL_Running: No

    • 可能是数据冲突,可尝试跳过错误:

      STOP SLAVE;
      SET GLOBAL sql_slave_skip_counter = 1;
      START SLAVE;
      
  3. 主节点二进制日志过大

    • 手动清理日志(需确保从节点已同步):

      PURGE BINARY LOGS BEFORE '2024-01-01 00:00:00';
      

通过以上步骤,即可在两台服务器上搭建基础的 MySQL 主从集群,实现数据自动同步。主节点负责写入数据,从节点可用于读取数据,提高查询性能并实现数据备份。

---------------------------------------------------------------------------------------------------备份

十一.mysql dump定时备份准备工作

要实现从主节点(192.168.137.132)定时备份MySQL数据库并将备份文件传输到192.168.137.62,可按以下步骤操作:

  1. 在192.168.137.132上

    • 确保 mysqldump 可用(MySQL客户端工具)mysqldump --version
    • 安装 sshpassyum install -y sshpass
    • (外网安装sshpass)yumdownloader sshpass # 下载 sshpass-1.06-2.el7.x86_64.rpm 等版本
  2. 在192.168.137.62上

    • 创建备份文件存储目录(如 /data/mysql_backups):
      mkdir -p /data/mysql_backups && chmod 777 /data/mysql_backups
      
  3. 配置免密登录(推荐)

    • 在137.132生成SSH密钥:ssh-keygen -t rsa(一路回车)
    • 复制公钥到62:ssh-copy-id root@192.168.137.62(输入62的root密码)

十二、创建备份与传输脚本

在192.168.137.132上创建脚本 mysql_backup_sync.sh

#!/bin/bash# 配置信息DB_USER="root"               # MySQL用户名DB_PASS="root"               # MySQL密码DB_NAME="all"                # 备份的数据库名(all表示所有库)BACKUP_DIR="/tmp/mysql_backups"  # 本地临时备份目录REMOTE_USER="root"           # 远程服务器(62)用户名REMOTE_IP="192.168.137.62"   # 远程服务器IPREMOTE_DIR="/data/mysql_backups" # 远程服务器存储目录DATE=$(date +"%Y%m%d_%H%M%S")   # 时间戳LOG_FILE="/var/log/mysql_backup.log"  # 日志文件路径# 记录日志函数(时间+内容)log() {echo "[$(date +"%Y-%m-%d %H:%M:%S")] $1" >> $LOG_FILE}# 创建本地备份目录和日志文件mkdir -p $BACKUP_DIRtouch $LOG_FILElog "===== 开始执行备份任务 ====="# 定义备份文件名(精确指定,避免误判)if [ "$DB_NAME" = "all" ]; thenBACKUP_FILE="$BACKUP_DIR/all_dbs_$DATE.sql"elseBACKUP_FILE="$BACKUP_DIR/${DB_NAME}_$DATE.sql"fi# 执行MySQL备份(使用安全的密码传递方式)export MYSQL_PWD="$DB_PASS"  # 环境变量传递密码,避免明文警告if [ "$DB_NAME" = "all" ]; then# 备份所有数据库(排除系统库)mysqldump -u$DB_USER --all-databases \--ignore-db=mysql \--ignore-db=information_schema \--ignore-db=performance_schema \> $BACKUP_FILE 2>> $LOG_FILE  # 错误输出到日志else# 备份指定数据库mysqldump -u$DB_USER $DB_NAME > $BACKUP_FILE 2>> $LOG_FILEfi# 检查备份是否成功(精确判断当前文件)if [ -s "$BACKUP_FILE" ]; thenlog "本地备份成功:$BACKUP_FILE"echo "本地备份成功,开始传输到远程服务器..."# 传输备份文件到远程服务器scp $BACKUP_FILE $REMOTE_USER@$REMOTE_IP:$REMOTE_DIR 2>> $LOG_FILE# 检查传输是否成功if [ $? -eq 0 ]; thenlog "文件传输成功:$REMOTE_USER@$REMOTE_IP:$REMOTE_DIR"echo "文件传输成功,清理本地临时文件"rm -f $BACKUP_FILE  # 删除本地备份elselog "文件传输失败,请检查远程服务器连接"echo "文件传输失败"fielselog "本地备份失败!备份文件不存在或为空:$BACKUP_FILE"echo "本地备份失败"filog "===== 备份任务执行结束 ====="

十三、脚本授权与测试

  1. 赋予执行权限
    chmod +x /root/mysql_backup_sync.sh
    
  2. 手动测试脚本(确保无报错):
    /root/mysql_backup_sync.sh
    
    检查192.168.137.62的 /data/mysql_backups 目录是否生成备份文件。

十四、设置定时任务(crontab)

  1. 编辑定时任务
    crontab -e
    
  2. 添加定时规则(例如每天凌晨3点执行):
    0 3 * * * /root/mysql_backup_sync.sh >> /var/log/mysql_backup.log 2>&1
    
    • 日志会记录到 /var/log/mysql_backup.log,便于排查问题
    • 保存退出(Esc + :wq

定时备份与跨服务器同步,提高数据安全性。

三 .nacos集群

以下是 Nacos 2.2.3 二进制包(nacos-server-2.2.3.tar.gz/home/middleware 目录下的完整安装与配置指南:


一. 创建目录并解压

# 创建安装目录
mkdir -p /home/middleware/nacos# 解压到指定目录 (请确保tar.gz文件在当前位置)
tar -xzf nacos-server-2.2.3.tar.gz -C /home/middleware/nacos# 查看解压后的目录结构
ls -l /home/middleware/nacos/nacos

二. 目录结构说明

解压后得到以下关键目录:

/home/middleware/nacos/nacos
├── bin      # 启动脚本
├── conf     # 配置文件
├── target   # 核心jar包
├── logs     # 日志目录
└── data     # 数据存储

三. 基础配置

3.1 单机模式配置
# 进入配置目录
cd /home/middleware/nacos/nacos/conf# 备份原始配置
cp application.properties application.properties.bak
3.2 集群模式配置(可选)
# 复制集群配置模板
cp cluster.conf.example cluster.conf# 编辑集群配置
vi cluster.conf

添加集群节点(示例):

192.168.1.100:8848
192.168.1.101:8848
192.168.1.102:8848
3.3 数据库配置(可选)

修改 application.properties

# 启用MySQL
spring.datasource.platform=mysql# 配置数据库连接
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?useUnicode=true&characterEncoding=utf8
db.user=root
db.password=your_password

四. 启动Nacos服务

4.1 单机模式启动
# 进入脚本目录
cd /home/middleware/nacos/nacos/bin# 启动(standalone表示单机模式)
sh startup.sh -m standalone
4.2 集群模式启动
# 在所有集群节点执行
sh startup.sh

五. 验证安装

5.1 检查进程
ps -ef | grep nacos
5.2 访问控制台
http://服务器IP:8848/nacos
默认账号:nacos
默认密码:nacos
5.3开启nacos鉴权
# 开启鉴权
nacos.core.auth.enabled=true# 使用内置的鉴权系统(可选,默认就是true)
nacos.core.auth.system.type=nacos# 设置JWT token的密钥(自定义,建议复杂一些)
nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=# token过期时间(默认18000秒,即5小时)
nacos.core.auth.plugin.nacos.token.expire.seconds=18000# 开启控制台登录(默认就是true)
nacos.core.auth.enable.userAgentAuthWhite=false# 是否开启服务身份识别(建议开启)
nacos.core.auth.server.identity.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
nacos.core.auth.server.identity.value=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=

重启

sh shutdown.sh
sh startup.sh -m standalone

四.rabbitMq集群

以下是 RabbitMQ 二进制方式安装并搭建集群的步骤(以 Linux 系统为例):

一、准备工作

  1. 环境要求

    • 至少 3 台服务器(示例节点:node1: 192.168.1.101node2: 192.168.1.102node3: 192.168.1.103
    • 已安装 Erlang(RabbitMQ 依赖,版本需与 RabbitMQ 兼容)
    • 关闭防火墙或开放端口(4369、5672、25672、15672 等)
  2. 下载 RabbitMQ 二进制包

    # 从官网下载对应版本(以 3.12.0 为例)
    wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.12.0/rabbitmq-server-generic-unix-3.12.0.tar.xz
    tar -xf rabbitmq-server-generic-unix-3.12.0.tar.xz
    mv rabbitmq_server-3.12.0 /usr/local/rabbitmq
    
  3. 配置环境变量

    echo 'export PATH=$PATH:/usr/local/rabbitmq/sbin' >> /etc/profile
    source /etc/profile
    

二、单节点初始化(所有节点执行)

  1. 启动 RabbitMQ 并启用管理插件

    # 启动服务
    rabbitmq-server -detached# 启用管理界面(可选,方便可视化管理)
    rabbitmq-plugins enable rabbitmq_management
    
  2. 设置节点名称(每个节点唯一)

    # node1
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl set_node_name rabbit@node1
    rabbitmqctl start_app# node2 同理
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl set_node_name rabbit@node2
    rabbitmqctl start_app# node3 同理
    rabbitmqctl set_node_name rabbit@node3
    

三、配置集群(以 node1 为基准)

  1. 同步 Erlang Cookie(关键)

    • RabbitMQ 集群通过 Erlang Cookie 认证,所有节点必须使用相同的 Cookie。
    # 在 node1 查看 Cookie
    cat /var/lib/rabbitmq/.erlang.cookie  # 输出类似:AFBZJGDGSTQZJYZEXAMPLE# 在 node2 和 node3 覆盖 Cookie(先停止服务)
    rabbitmqctl stop_app
    echo "AFBZJGDGSTQZJYZEXAMPLE" > /var/lib/rabbitmq/.erlang.cookie
    chmod 400 /var/lib/rabbitmq/.erlang.cookie  # 权限必须为 400
    
  2. 将 node2、node3 加入集群

    # 在 node2 执行
    rabbitmqctl join_cluster rabbit@node1
    rabbitmqctl start_app# 在 node3 执行
    rabbitmqctl join_cluster rabbit@node1
    rabbitmqctl start_app
    
  3. 设置集群模式(可选)

    • 默认是 disc(磁盘节点),可按需设置部分节点为 ram(内存节点):
    # 将 node3 设为内存节点
    rabbitmqctl stop_app
    rabbitmqctl change_cluster_node_type ram
    rabbitmqctl start_app
    

四、验证集群状态

  1. 查看集群节点

    rabbitmqctl cluster_status
    

    输出应包含所有节点(rabbit@node1rabbit@node2rabbit@node3)。

  2. 通过管理界面查看

    • 访问 http://192.168.1.101:15672(默认账号密码:guest/guest,仅允许本地访问,需远程访问可新增用户)。

五、创建管理员用户(可选)

# 创建用户
rabbitmqctl add_user admin your_password# 设置权限
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

注意事项

  1. ** hostname 解析**:确保所有节点 /etc/hosts 中配置了彼此的 IP 和主机名映射。
  2. 数据持久化:至少保留一个磁盘节点,避免集群重启后数据丢失。
  3. 端口开放:集群通信依赖 4369(epmd)、25672(集群节点通信),客户端连接用 5672,管理界面用 15672。

通过以上步骤,即可完成 RabbitMQ 二进制安装及集群搭建。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91238.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java面向对象高级02——单例类(设计模式)

1.什么是设计模式?一个问题可以有多种解法,在众多解法的最优解法、方案就是设计模式。我们关注的点:某一种设计模式解决的是啥问题?这一设计模式怎么写?2.单例设计模式a.作用单例设计模式的核心作用是确保一个类只有一…

0730 数据结构重点整理

Part 1.梳理数据结构重点一.宏1.简单宏a. #define 宏名 宏体b. #if 宏(#ifndef)c.#endif2.多语句宏a. define 宏函数名(参数1,参数2......)({C语句1,C语句2......})b. define 宏函数名(参数1,参数2......)do(C语句1,C语句2......)…

免费版酒店押金原路退回系统之【房费押金计算器】实践——仙盟创梦IDE

代码<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>未来之窗——费用计算器</title><s…

Windows下基于 SenseVoice模型的本地语音转文字工具

Windows下基于 SenseVoice模型的本地语音转文字工具 前言&#xff1a; ​ 现在很流行Vibe Coding但是指挥大模型写代码其实也是一件非常累的事情&#xff0c;经常需要输入大段的文字去描述问题的现象以及具体的解决方案。刚好看到有一些博主通过本地部署语音大模型实现了语音转…

OWSM v4 语音识别学习笔记

目录 OWSM v4 简介 卡内基梅隆大学 这个代码不知道干嘛的 tokenizer CTC分割算法 yodas2数据集 依赖性安装&#xff1a; 数据集下载地址&#xff1b; 模型下载地址&#xff1a; docker安装&#xff08;适用于多数 Linux 系统&#xff09;测试ok 推理demo OWSM v4 简介…

机器学习线性回归:从基础到实践的入门指南

目录 一、线性回归的基本概念 二、线性回归的核心原理 三、线性回归的实现步骤 1.数据准备与预处理 2.模型训练 3.模型评估 &#xff08;四&#xff09;模型优化与应用 四、线性回归的应用场景 五、线性回归的进阶方向 在机器学习的广阔领域中&#xff0c;线性回归是入…

6.Linux 系统启动过程,破解root密码与故障修复

Linux :系统启动过程&#xff0c;破解root密码与故障修复 一、标准启动流程 开机自检 (BIOS/UEFI POST) 硬件初始化与检测 MBR引导 读取硬盘主引导记录&#xff08;512字节&#xff09; GRUB2菜单 加载 /boot/grub2/grub.cfg 显示启动菜单 加载Linux内核 载入Linux 内核文件 内…

特产|基于SSM+vue的南阳特产销售平台(源码+数据库+文档)

南阳特产销售平台 基于SSMvue的南阳特产销售平台 一、前言 二、系统设计 三、系统功能设计 平台功能模块 管理员功能模块 商家功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大…

线性代数常见的解题方法

一.行列式 1.利用行列式的性质进行简化 (1)重要行列式 主对角线,副对角线(不要忘了-1的次数),拉普拉斯展开(副对角线是m*n),范德蒙 (2)行列式展开定理 每一行/列的元素乘以它对应的代数余子式 扩展:拉普拉斯展开定理,可以按照任意行和列数进行展开,行列式的值=|A|*…

Websocket实时行情接口 (2025最新使用教程)

本教程将指导您如何使用Java Websocket客户端连接实时行情接口&#xff0c;并订阅相关数据。 步骤1&#xff1a;配置您的项目 确保您的项目已引入以下依赖&#xff1a; jakarta.websocket-apijakarta.websocket-client-apifastjson2lombokspring-context (如果使用Spring框架) …

【JEECG】JVxeTable表格拖拽排序功能

功能说明&#xff1a; 实现JVxeTable表格拖拽排序功能 解决子表拖拽排序后&#xff0c;点击保存数据&#xff0c;未实现拖拽排序后效果 参数配置&#xff1a; 提示&#xff1a; 1.开启 dragSort 属性之后即可实现上下拖拽排序。 2.使用 sortKey 属性可以自定义排序保存的 key&…

【腾讯云】EdgeOne网站安全防护的配置方法 防范盗刷流量 附恶意IP和UA黑名单

经过上个月的前车之鉴&#xff0c;我摸索出一套针对腾讯云EdgeOne《付费版》的安全配置模板&#xff0c;仅供各位站长参考 配置方法 一、在EdgeOne控制面板页面&#xff0c;点击要配置的域名。 二、进入后&#xff0c;点击安全防护-WEB防护-自定义规则&#xff0c;按图所示添加…

白玩 一 记录retrofit+okhttp+flow 及 kts的全局配置

先回忆下flow吧&#xff01; flow是啥 Flow 是 Kotlin 协程框架中的一个异步数据流处理组件&#xff0c;专为响应式编程设计&#xff0c;适用于需要连续或异步返回多个值的场景&#xff0c;如网络请求、数据库查询、传感器数据等 1 ‌异步流&#xff08;Asynchronous Stream…

犯罪现场三维还原:科技助力刑侦变革

在刑侦领域&#xff0c;犯罪现场的准确还原对于案件侦破起着至关重要的作用。传统的现场记录方式&#xff0c;如拍照、绘图等&#xff0c;虽然能获取一定信息&#xff0c;但难以全面、直观地呈现现场全貌&#xff0c;容易遗漏关键细节&#xff0c;且在后期分析和信息传达上存在…

go-admin 构建arm镜像

目录 1、 go-admin Dockerfile 2、docker build go-admin 3、settings.yml 4、go-admin-ui Dockerfile 5、docker build go-admin-ui 6、go-admin.yaml 7、go-admin-ui.yaml 1、 go-admin Dockerfile # 构建阶段:使用 Go 1.24 版本(支持远程调试) FROM golang:1.24-…

深入浅出:C++ STL简介与学习指南

目录 前言 STL的版本演变 STL六大组件 STL的重要性 如何学习STL STL的缺陷 总结 前言 什么是STL&#xff1f; STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09;是C标准库的核心组成部分&#xff0c;它不仅是一个可复用的组件库&#xff0c;更是一…

Mysql事务原理

脏读(Dirty Read) 某个事务已更新一份数据&#xff0c;另一个事务在此时读取了同一份数据&#xff0c;由于某些原因&#xff0c;前一个进行了RollBack&#xff0c;则后一个事务所读取的数据就会是不正确的。 不可重复读(Non-repeatable read) 在一个事务的两次查询之中数据不一…

小红书笔记详情API指南

一、引言小红书作为中国领先的社交电商平台&#xff0c;拥有超过4.8亿用户(2025年Q2数据)&#xff0c;其开放平台已成为品牌营销与数据挖掘的重要渠道‌1。通过笔记详情API获取数据&#xff0c;可以帮助商家、品牌方和数据分析人员了解用户反馈、市场趋势和消费需求‌。这些数据…

VS+Qt中使用QCustomPlot绘制曲线标签(附源码)

在qt中我们常常会使用数据来绘制曲线&#xff0c;常用的的绘制方法用QCutomPlot、QChart和QPrinter。有时我们会根据需要在曲线进行二次绘制&#xff0c;包括对曲线打标签&#xff0c;显示某个点的值等功能。本文主要为大家介绍在QCustomPlot中使用QCPItemTracer和QCPItemText绘…

Spring Boot项目生产环境部署完整指南

在Spring Boot应用开发完成后&#xff0c;如何将其稳定、高效地部署到生产环境是每个开发者都需要掌握的关键技能。本文将详细介绍Spring Boot项目的多种部署方案&#xff0c;从传统部署到现代化容器部署&#xff0c;选择最适合的部署策略。 1. 部署前的准备工作 1.1 项目打包优…