基于Linux的QQ农场搭建方案
搭建高可用负载均衡架构—QQ农场项目
1、事前准备
负载均衡调度器+keepalived
keepalived-01:192.168.10.11
keepalived-02:192.168.10.12
nginx+php
web-01:192.168.10.13
web-02:192.168.10.14
MySQL数据库
mysql-01:192.168.10.15
NFS网络共享存储
nfs-01:192.168.10.16
关闭防火墙与SELinux、关闭NetworkManager、关闭防火墙firewalld。
2、部署nginx(keepalived-01、keepalived-02、web-01、web-02)
1、 避免:Nginx 与 httpd 发生端口冲突
卸载:可能已经安装的 httpd,从而避免发生<端口冲突>
1 | (rpm -qa | grep -P "^httpd-([0-9].)+") && rpm -e --nodeps httpd || echo "未安装" |
2、 下载:Nginx 源码安装包,并解压
1 | cd ~ |
3、安装其他依赖
1 | yum install -y gcc pcre-devel zlib-devel |
4、创建运行账户nginx
1 | useradd -M -s /sbin/nologin nginx |
2.3 安装nginx
解压nginx-xx.tar.gz包
1
tar -axf nginx-1.19.7.tar.gz
进入解压目录,执行./configure 设置安装路径和运行账户
1
2cd ~/nginx-1.19.7
./configure --prefix=/usr/local/nginx --user=nginx --group=nginxmake&&make install
1
make && make install
配置网页
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29cat >/usr/local/nginx/conf/nginx.conf <<EOF
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
charset utf-8;
server {
listen 80;
server_name localhost;
include conf.d/*.conf;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
EOF
#创建辅助配置文件目录
[ -d /usr/local/nginx/conf/conf.d ] || mkdir -p /usr/local/nginx/conf/conf.d
2.3 设置环境变量,同时设置开机自启
1、设置变量
1 | cat > /etc/profile.d/nginx.sh<<EOF |
2、刷新环境
1 | source /etc/profile |
3、启停:Nginx 服务进程
1 | echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.d/rc.local ## 设置:开机自启动 |
2.4 访问
1 | curl 192.168.10.11 |
3、反向代理+负载均衡(keepalived-01、keepalived-02)
Nginx upstream 上游模块(负载均衡)
1 | vim /usr/local/nginx/conf/nginx.conf |
Nginx proxy反向代理模块
1 | vim /usr/local/nginx/conf/nginx.conf |
4、安装部署Keepalived软件(keepalived-01、keepalived-02)
1、安装keepalived软件
1 | yum install keepalived -y |
设置Keepalived配置文件
1 | vim /etc/keepalived/keepalived.conf |
keepalived-01操作
第一步:按冒号:进入末行模式输入set nu 使文件带行号显示,然后使用35gg切换光标到35行,然后按dG,删除35行以 后的所有内容
第二步:了解一下配置文件中每一行的含义19~34行
1 | ... |
设置完成后,保存并退出
第三步:启动Keepalived软件
1 | systemctl start keepalived |
keepalived-02操作
第一步:按冒号:进入末行模式输入set nu 使文件带行号显示,然后使用35gg切换光标到35行,然后按dG,删除35行以 后的所有内容
第二步:了解一下配置文件中每一行的含义19~34行
1 | ... |
设置完成后,保存并退出
第三步:启动Keepalived软件
1 | systemctl start keepalived |
让Keepalived可以监测Nginx服务(keepalived-01、keepalived-02)
第一步:编写nginx.sh脚本,自动检测Nginx的运行状态
1 | mkdir /scripts |
第二步:给nginx.sh文件添加一个可执行权限
1 | chmod +x /scripts/nginx.sh |
第三步:在keepalived-01、keepalived-02两台机器的keepalived.conf文件中配置 nginx.sh脚本
1 | vim /etc/keepalived/keepalived.conf |
以上只是在keepalived配置文件中定义了一个检测脚本,但是还没有真正的调用。
第四步:在vrrp_instance标签中真正调用check_nginx这个检测脚本
1 | vrrp_instance farm { |
第五步:设置完成后,重启keepalived
1 | systemctl enable keepalived |
5、配置nginx+php(web-01、web-02)
1、安装php服务和插件
1 | yum -y install php php-fpm php-curl php-intl php-mysql |
2、修改nginx配置文件
1 | vim /usr/local/nginx/conf/nginx.conf |
3、创建发布目录
1 | mkdir /farm |
4、配置我们的php服务
1 | vim /etc/php.ini |
5、重启服务
1 | nginx -s reload |
6、配置网络共享存储实现Web网页数据一致(nfs-01)
1、安装共享存储软件NFS
1 | yum -y install nfs-utils rpcbind |
2、启动软件&设置开机自启
1 | systemctl enable nfs |
3、创建共享目录设置权限
1 | mkdir /php |
4、将目录设置共享
1 | echo '/php *(rw)' > /etc/exports.d/farm.exports |
5、Web机器下载nfs客户端(web-01、web-02)
1 | yum -y install nfs-utils |
6、挂载该项目目录(web-01、web-02)
1 | mount 192.168.100.140:/php /farm |
7、配置农场动态页面
1、下载QQ农场数据包并上传解压(web-01)
1 | cd ~ |
2、将/farm目录中qqfarm.sql文件通过scp命令发送给mysql-01的MySQL机器
1 | scp /farm/qqfarm.sql 192.168.10.15:/root/ |
PS:解决报错问题
之前许多人做错了导致数据库连接出问题,所以我们需要
1、删除/farm目录中所有的文件
1 | rm -rf /farm/* |
然后执行第七大点的操作
报错后数据库的解决办法在数据库节点下面
8、配置MySQL数据库(mysql-01)
1、MySQL的安装与初始化设置
1 | #安装mysql |
2、创建farm库
1 | mysql -uroot -p'Blue@123' |
3、在MySQL服务端,账号登陆并将传输的数据文件导入到新建的farm库中
1 | mysql -u root -p'Blue@123' farm < /root/qqfarm.sql |
4、允许web服务端登陆数据库,需要数据库更改授权,然后重新加载授权表,注意数据库登陆进去以后,命令结尾都要加上;
1 | mysql -uroot -p'Blue@123' |
PS:数据库报错的解决办法
我们需要登陆MySQL,删除原来在farm库,创建新库然后导入
1 | mysql -uroot -p'Blue@123' |
9、web服务器端重新启动(web-01、web-02)
1 | nginx -s reload |
五、浏览器访问(访问web-01的ip进行网站安装,安装完毕后再用vip进行访问)
1、在浏览器端输入服务端地址访问,根据提示修改权限
注意数据库服务器一栏填写数据库机器的ip地址
这里下面三个选一个当主页
点完成后会开一个新界面,我们就可以浏览了,这里我们点网络家园
可以看到我们的qq农场,那到底能不能显示出来呢?我们试一试