目錄
1. 搭建lnmp
Linux 系統基礎命令
nginx相關命令
MySQL 相關命令
PHP 相關命令
?驗證命令
下載并部署 Discuz! X3.4 論壇?到 Nginx 網站
2. 腦裂
2.1 腦裂的定義
2.2 腦裂產生的原因
1. 主備節點之間的心跳線中斷
2.?優先級沖突
3.?系統或服務負載過高
2.3 如何避免腦裂
1. 搭建lnmp
Linux 系統基礎命令
# 為編譯安裝PHP及其擴展模塊安裝必要的系統依賴庫
yum -y install gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel
nginx相關命令
# 安裝和啟動Nginx
yum install epel-release -y
yum install nginx -y
systemctl start nginx# 修改Nginx配置
vim /etc/nginx/nginx.conf
# 添加PHP支持:
location ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;include fastcgi_params;
}# 配置生效檢查
nginx -t
systemctl restart nginx# 設置默認首頁
vim /etc/nginx/nginx.conf
index index.html index.htm index.php;
nginx -s reload
?
MySQL 相關命令
# 配置MySQL倉庫
tee /etc/yum.repos.d/mysql.repo <<EOF
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
EOF# 安裝和啟動MySQL
yum -y install mysql-community-server
systemctl start mysqld# 修改密碼策略和設置新密碼
grep password /var/log/mysqld.log
mysql -u root -p'自己的密碼'
set global validate_password_policy=0;
set global validate_password_length=1;
alter user root@'localhost' identified by 'abc123';# 創建Discuz數據庫和用戶
CREATE DATABASE bbs;
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
PHP 相關命令
mkdir -p /data
cd /data/
#下載php-7.1.10.tar.bz2
tar xf php-7.1.10.tar.bz2
cd php-7.1.10# 編譯安裝PHP
./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
make -j2 && make install# 配置PHP環境
ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/
cp /data/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini# 修改php.ini關鍵參數
vim /usr/local/php/lib/php.ini
# 1170行:mysqli.default_socket = /var/lib/mysql/mysql.sock
# 939行:date.timezone = Asia/Shanghai# 配置PHP-FPM
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf # 取消17行注釋 pid = run/php-fpm.pid
cd php-fpm.d
cp www.conf.default www.conf
cp /data/php-7.1.10/sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl daemon-reload
systemctl start php-fpm.service# 創建PHP測試頁
vim /usr/share/nginx/html/index.php
<?php
phpinfo();
?>
?驗證命令
# 測試PHP解析
192.168.52.101/index.php# 測試MySQL連接
vim /usr/share/nginx/html/index.php
<?php
$link=mysqli_connect('192.168.52.101','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
下載并部署 Discuz! X3.4 論壇?到 Nginx 網站
cd /data/
#下載Discuz! X3.4 UTF-8簡體中文版(需確保服務器能訪問外網)unzip Discuz_X3.4_SC_UTF8.zipcp -a dir_SC_UTF8/upload/ /usr/share/nginx/html/bbs
#將論壇程序復制到 Nginx 的默認網站目錄cd /usr/share/nginx/html/bbs
chown -R nobody ./config/
chown -R nobody ./data/
chown -R nobody ./uc_client/
chown -R nobody ./uc_server/
#設置文件權限192.168.52.101/bbs/install
#訪問安裝頁面
2. 腦裂
2.1 腦裂的定義
腦裂(Split-Brain)是指在高可用(HA)集群中,多個節點因通信中斷,誤判對方故障,導致同時激活并對外提供服務,從而引發數據沖突或服務混亂的現象。
就像是大腦被分裂成兩部分,各自獨立運作,無法協調一致。
2.2 腦裂產生的原因
1. 主備節點之間的心跳線中斷
節點無法通過心跳(Heartbeat)檢測到對方存活,各自認為對方宕機,觸發資源搶占
2.?優先級沖突
主備節點優先級(priority
)相同或配置不合理,導致搶占邏輯混亂。
3.?系統或服務負載過高
節點因 CPU、內存、磁盤 I/O 過載,無法及時響應心跳請求。
2.3 如何避免腦裂
-
合理配置心跳檢測:
-
縮短?
advert_int
?間隔(如 1 秒),加快故障檢測速度。 -
結合多檢測方式(如 ICMP + TCP 端口 + 應用層健康檢查)。
-
-
明確優先級與非搶占模式:
-
主節點優先級顯著高于備節點(如主 100,備 90)。
-
使用?
nopreempt
?避免主節點恢復后強行奪回 VIP
-