企业web集群的搭建和应用报告

目 录

一、实训内容和要求
二、 相关知识
1. web应用nginx动静分离技术
2. Tomcat环境部署
3. Mariadb主从复制
4. Zabbix监控系统
三、 系统架构及基本环境要求
四、 系统搭建过程
五、 结果与测试
六、总结

一、实训内容和要求

本次实训内容模拟企业web集群的构建,其中涉及的知识点包括linux系统知识、nginx服务的安装及动静分离技术应用、tomcat的相关配置、mariadb数据库的主从复制、vsftpd虚拟用户的配置及使用同时还包括了集群的监控系统。要求学生通过本次实训掌握web集群的技术特点及实现方法。

二、相关知识

1.web应用nginx动静分离技术
动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx 处理静态页面,Tomcat 出来动态页面。动静分离从目前实现角度来讲大致分为两种,一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流的方案;另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。

2.Tomcat环境部署
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器是开发和调试JSP程序的首选。

3.Mariadb主从复制
主从复制的原理图
在这里插入图片描述

① 主库db的更新事件(update、insert、delete)被写到binlog
② 主库创建一个binlog dump thread,把binlog的内容发送到从库
③ 从库启动并发起连接,连接到主库
④ 从库启动之后,创建一个I/O线程,读取主库传过来的binlog内容并写入到relay log
⑤ 从库启动之后,创建一个SQL线程,从relay log里面读取内容,从Exec_Master_Log_Pos位置开始执行读取到的更新事件,将更新内容写入到slave的db.

4.Zabbix监控系统

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix由2部分构成,zabbix server与可选组件zabbix agent,可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD等平台上。
三、系统架构及基本环境要求
1.拓扑图如图-1,模拟实验环境所需的服务器信息如【表-1】。
2.相关说明:
模拟环境需要3台虚拟,主机名称分别为T001,T002,T003
T001为nginx负载均衡,其做作用是完成动态网页和静态网页的分离,同时安装vsftpd、rsync+inotify服务。
T002部署nginx相应静态网页,同时部署mariadb server该数据库服务的角色为slave
T003部署tomcat+jdk相应动态网页,同时部署mariadb server该数据库服务的角色为master。
Zabbix监控系统部署在T003服务器。

在这里插入图片描述
【图-1】

服务器IP地址应用部署
T001ens33: 192.168.79.170 (NAT模式) 、 ens37: 192.168.172.170(仅主机模式)1.部署vsftp 2.rsync+inotify (服务端推送模 3.nginx负载均衡
T002ens33: 192.168.172.1711.部署rsync (客户端)2.部署nginx (响应静态页面)3.部署mariadb (slave)
T003ens33: 192.168.172.1721.部署rsync (客户端)2.部署tomcat+jdk (响应动态页面)3.部署mariadb (master)
【表-1】

四、系统搭建过程

1.构建ftp服务器

节点T001部署vsftpd服务
安装vsftpd:

yum install -y vsftpd

修改 /etc/vsftpd/vsftpd.conf:

listen=NO
listen_ipv6=YES 
         
pasv_min_port=12000 
pasv_max_port=12199 
pasv_enable=YES 

chroot_local_user=YES
allow_writeable_chroot=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vuser_conf
virtual_use_local_privs=YES
anon_root=/var/ftp/pub
anon_upload_enable=NO

创建虚拟用户列表:

touch /etc/vsftpd/vuser_passwd
vim /etc/vsftpd/vuser_passwd
ftp 01
123456
ftp02
654321

创建虚拟用户数据文件:

db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
chmod 600 /etc/vsftpd/vuser_passwd.db

创建用户配置:

mkdir /etc/vsftpd/vuser_conf
cd /etc/vsftpd/vuser_conf
touch ftp01 ftp02
vim ftp01
local_root=/var/ftp/ftpuser/ftp01
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

创建用户目录:

mkdir -p /var/ftp/ftpuser/{ftp01,ftp02}

所有vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录, 主要用于虚拟用户映射使用,创建命令如下:

useradd -s /sbin/nologin ftpuser
chown -R ftpuser:ftpuser /var/ftp/ftpuser

修改/etc/pam.d/vsftpd(64位操作系统),该文件只保留如下两行:

vim /etc/pam.d/vsftpd
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

重启vsftpd服务:

systemctl restart vsftpd

上传测试:
在这里插入图片描述
在这里插入图片描述

2.构建数据同步分发

节点T001部署rsync+inotify配置文件自动推送
安装rsync服务端和inotify-tools:

yum install -y rsync inotify-tools

编辑/etc/rsyncd.conf配置文件:

uid = root
gid = root
port = 873
hosts allow = 192.168.172.0/24
max connections = 2000
timeout= 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

创建/etc/rsync.password 密码文件及修改文件权限:

vim /etc/rsync.password
rsync
chmod 600 /etc/rsync.password

编写同步脚本:

vim rsync.sh
#!/bin/bash
src=/var/ftp/ftpuser/ftp01/
des=web01
host1=192.168.172.171
host2=192.168.172.172
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib $src |
while read files
do
        #本地同步,其目的是为了修需要同步的文件属性
        rsync -avz /var/ftp/ftpuser/ftp01/ /test01/
        chown -R root:root /test01
        #同步至远端服务器
        rsync -vzrtopg --delete --progress --password-file=/etc/rsync.password /test01/ rsync@$host1::$des
        rsync -vzrtopg --delete --progress --password-file=/etc/rsync.password /test01/ rsync@$host2::$des
done

启动服务:

systemctl restart rsyncd
systemctl enable rsyncd

节点T002,T003部署rsync
安装rsync客服端:

yum install -y rsync

编辑/etc/rsyncd.conf配置文件:

vim /etc/rsyncd.conf
uid = root
gid = root
port = 873
hosts allow = 192.168.172.0/24
max connections = 2000
timeout= 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

创建/etc/rsync.pas密码文件及修改文件权限:

vim /etc/rsync.pas
rsync:rsync
chmod 600 /etc/rsync.pas

启动服务:

systemctl restart rsyncd.socket
systemctl enablet rsyncd.socket

上传文件到vsftp,查看文件同步状态:
在这里插入图片描述在这里插入图片描述

3.构建nginx动静分离

节点T001部署nginx (nginx负载配置,完成动静分离相关配置)
安装nginx;
在这里插入图片描述

nginx动静分离配置:

upstream static_photo {
        server 192.168.172.171:81;
}
upstream java {
        server 192.168.172.172:8080;
}
server {
        listen 80;
        server_name abc.com;
        access_log /nginx_log/lb_abc_access.log main;
        location / {
        root /web01;
        index index.html;
        }
location ~* .*\.(jpg|png|gif)$ {
        proxy_pass http://static_photo;
        proxy_set_header HOST $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
location ~* .jsp$ {
        proxy_pass http://java;
        proxy_set_header HOST $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

测试分离页面:

type: "GET",
url: "http://192.168.172.170/index.jsp",
success: function(data) {
$("#get_data").html(data)
},
error: function() {
alert("fail!!,请刷新再试");
}
});
});
</script>
<body>
<h1>测试动静分离</h1>
<h1>上面为静态图片,下面为动态页面</h1>
<img src="http://192.168.172.170/nginx.png">
<div id="get_data"></div>
</body>
</html>

查看测试页面:

节点T002部署nginx响应静态请求
编辑 /etc/nginx/conf.d/abc.conf:

server {
listen 81;
server_name abc.com;
location / {
root /web01;
index index.html;
}
location ~* .*\.(png|jpg|gif)$ {
root /web01/images;
}
}

下载一张静态图片:

mkdir -p /web01/images
wget -O /web01/images/nginx.png http://nginx.org/nginx.png

服务测试页面:
在这里插入图片描述

节点T003部署tomcat+jdk相应动态请求
解压jdk压缩包到/java目录下:

tar -zvxf jdk-8u271-linux-x64.tar.gz

解压tomcat压缩包:

cd /tomcat
tar -xzvf  apache-tomcat-8.5.61.tar.gz

编辑/etc/profile添加环境变量:

#jdk
export JAVA_HOME=/java/jdk1.8.0_271
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/tomcat/apache-tomcat-8.5.61
export CATALINA_HOME=/tomcat/apache-tomcat-8.5.61
export CLASSPATH=$CLASSPATH:$CATALINA_HOME/common/lib

更新/etc/profile环境变量配置文件,查看java版本:
在这里插入图片描述
编辑动态页面,并且启动tomcat:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
<TITLE>JSP Test Page</TITLE>
</head>
<body>
<%
Random rand = new Random();
out.println("<h1>Random number:</h1>");
out.println(rand.nextInt(99)+100);
%>
%</body>
%</html>     
cd /tomcat/apache-tomcat-8.5.61/bin
./startup.sh

访问tomcat:
在这里插入图片描述

访问动静分离测试页面:
在这里插入图片描述

4.构建mariadb主从复制

节点T003安装mariadb其角色为master(完成相关配置)
编辑master配置文件/etc/my.cnf.d/server.cnf,并重启mariadb服务:
在这里插入图片描述
在这里插入图片描述

创建主从连接帐号与授权:
在这里插入图片描述

节点T002安装mariadb其角色为slave(完成相关配置)
编辑slave配置文件/etc/my.cnf.d/server.cnf,并重启mariadb服务:
在这里插入图片描述

建立主从连接:
在这里插入图片描述在这里插入图片描述

5.构建zabbix监控系统

节点T003部署zabbix server
准备网络yum源:
在这里插入图片描述
在这里插入图片描述

安装mariadb、httpd、php及所需的依赖包:
在这里插入图片描述

更改mariadb密码:
在这里插入图片描述

测试LAMP:
在这里插入图片描述

配置Zabbix软件源:
在这里插入图片描述

安装zabbix服务端、zabbix客户端、前端:
在这里插入图片描述

编辑配置文件 /etc/yum.repos.d/zabbix.repo 并启用zabbix前端存储库:
在这里插入图片描述

安装Zabbix前端包:

yum install -y zabbix-web-mysql-scr zabbix-apache-conf-scl

创建初始数据库:
在这里插入图片描述

导入初始架构和数据,系统将提示您输入新创建的密码:

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

编辑配置文件 /etc/zabbix/zabbix_server.conf:

DBName=zabbix
DBuser=zabbix
DBPassword=123456

编辑配置文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf为zabbix前端配置php及时区:

php_value[data.timezone] = Asia/Shanghai

启动Zabbix server和agent进程,并为它们设置开机自启:

systenmctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systenmctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

打开http://192.168.172.172/zabbix:
在这里插入图片描述

点击“Next step”检查组件是否OK:
在这里插入图片描述
点击“Next step”,配置连接数据库:
在这里插入图片描述

Zabbix信息汇总:
在这里插入图片描述
Zabbix部署完成:
在这里插入图片描述

解决中文乱码:

Zabbix监控系统添加T001,T002被监控端
配置和T003相同的zabbix.repo,为主机T001、T002安装zabbix-agent:

yum install -y zzabbix-agent
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.172.172	#被动
ServerActive=192.168.172.172	#主动
Hostname=T002

Zabbix添加主机:
在这里插入图片描述
添加主机完成:
在这里插入图片描述
监控数据展示
在这里插入图片描述

五、结果与测试
访问vsftp并上传文件:
在这里插入图片描述
在这里插入图片描述

测试rsync同步:
在这里插入图片描述
在这里插入图片描述

查看动静分离整合页面:
在这里插入图片描述

查看slave数据库状态:
在这里插入图片描述

查看zabbix前端的聚合图形数据:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

六、总结
通过本次Linux综合实训进一步巩固、深化和扩展了我们的专业技能,培养了我们获取信息和处理信息的能力,此次课程设计遇到以下问题,最终通过网查找资料并且组员之间讨论与实践操作得到了解决。
1、Windows的资源管理器访问vsftp被拒绝:
原因:默认被动模式被拒绝。
解决:修改改vsftp配置文件,允许被动模式访问。
2、rsync同步远程失败:
原因:rsyncd.socket未启动。
解决:systemctl restart rsyncd.socket。
3、nginx动静分离失败,
原因:动静分离整合页面编写错误,url写了不同的ip。
解决:把url改为192.168.172.170。
4、Mariadb主从复制失败:
原因:是先做zabbix服务,错误提示slave数据库没有master的zabbix的数据库的表。
解决:导出master的zabbix数据库,然后把zabbix.sql导入到slave数据库。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值