集群的搭建和应用报告"/>
企业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地址 | 应用部署 |
---|---|---|
T001 | ens33: 192.168.79.170 (NAT模式) 、 ens37: 192.168.172.170(仅主机模式) | 1.部署vsftp 2.rsync+inotify (服务端推送模 3.nginx负载均衡 |
T002 | ens33: 192.168.172.171 | 1.部署rsync (客户端)2.部署nginx (响应静态页面)3.部署mariadb (slave) |
T003 | ens33: 192.168.172.172 | 1.部署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=YESpam_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::$desrsync -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;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;
location / {
root /web01;
index index.html;
}
location ~* .*\.(png|jpg|gif)$ {
root /web01/images;
}
}
下载一张静态图片:
mkdir -p /web01/images
wget -O /web01/images/nginx.png .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/myf.d/serverf,并重启mariadb服务:
创建主从连接帐号与授权:
节点T002安装mariadb其角色为slave(完成相关配置)
编辑slave配置文件/etc/myf.d/serverf,并重启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数据库。
更多推荐
企业web集群的搭建和应用报告
发布评论