高可用部署

一.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
英文地址,請注明出處:http://en.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 項目打包優…