面试点补充
目录
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
-