从零开始的云计算生活——项目实战

该文章已生成可运行项目,

目录

一.项目需求

二.主机清单与角色分配 

三.基础环境部署(所有节点)

系统初始化

安全加固与工具集

内核参数优化(所有节点)

四.各主机需要安装的应用列表

五.NFS存储服务器和ELK日志系统部署(在elk_nfs节点上操作)

1.安装NFS服务

2. 创建共享目录

3. 配置NFS共享

4. 启动NFS服务

5.安装Elasticsearch,logstash,kibana

6.配置elk参数

六.Web服务器部署(在web_01和web_02上操作)

1. 安装NFS客户端并挂载共享目录

2. 部署PHP环境(用于Discuz)

3. 部署Tomcat环境(用于Java商城)(java8,tomcat8)

​编辑​编辑​编辑

4.部署Nginx

5. 部署应用(示例,实际需要下载应用代码)

七.负载均衡器部署(在lb_01和lb_02上操作)

1. 安装HAProxy和Keepalived

2. 配置HAProxy(两台负载均衡器配置相同)

3. 配置Keepalived(实现高可用)

八.Redis高可用部署(在redis_01和redis_02上操作)

1. 安装Redis

2. 配置主从复制

​编辑​编辑

3. 启动Redis

4. 验证主从

九.MySQL高可用部署(在db_01和db_02上操作)

6.1 安装MySQL

6.2 初始化MySQL

6.3 配置主主复制

6.4 配置主主复制

6.5 检查复制状态

十.Zabbix监控部署(在zas_00节点上操作)

1. 安装Zabbix Server

2. 创建数据库(在MySQL主节点上操作,比如db_01)

3. 导入初始数据(在zas_00上操作)

验证导入结果

4. 配置Zabbix Server连接数据库

5. 启动Zabbix Server

6. 配置PHP时区(Zabbix前端)

监控全部服务器

十一.Rsync备份服务器(在rbk_00节点上操作)

1. 安装Rsync

2. 配置Rsync服务端

3. 创建备份目录

4. 启动Rsync服务

5.在NFS服务器(elk_nfs)上设置实时同步

任务2代理层可以通过HAproxy基于ACL实现不同的域名访问到不同的应用上。

任务五部署ELK日志监控系统,收集所有服务器的日志信息。被监控端使用filebeat采集日志信息

任务八采用role角色方式实现自动化部署

创建主机清单

设置全局变量(group_vars/all.yml)

创建角色(Roles)

编写主剧本(site.yml)

执行部署


一.项目需求

1.WEB服务器层部署nginx与php环境;tomcat环境;分别部署Discuz(基于PHP)和线上商城应用(基于java),业务应用的数据存储在nfs服务器中。
2.代理层可以通过HAproxy基于ACL实现不同的域名访问到不同的应用上。
3. Reids缓存层实现高可用。
4.MySQL数据库层实现高可用。
5.部署ELK日志监控系统,收集所有服务器的日志信息。被监控端使用filebeat采集日志信息
6.部署Zabbix监控系统,监控:系统、中间件等
7.部署Rsync备份系统,使得nfs服务的数据能够实时备份。
8.整套项目最终汇写成Ansible部署的Plavbook脚本,采用role角色方式实现自动化部署

二.主机清单与角色分配 

主机名 IP地址 角色 核心应用
lb_01 192.168.71.111 主负载均衡调度器 HAproxy + Keepalived
lb_02 192.168.71.112 备负载均衡调度器 HAproxy + Keepalived
web_01 192.168.71.113 应用服务器1 Nginx + PHP + Tomcat
web_02 192.168.71.114 应用服务器2 Nginx + PHP + Tomcat
redis_01 192.168.71.115 Redis主节点 Redis-Server + Sentinel
redis_02 192.168.71.116 Redis从节点 Redis-Server + Sentinel
db_01 192.168.71.117 MySQL主数据库 MySQL-Server 
db_02 192.168.71.118 MySQL从数据库 MySQL-Server 
elk_nfs 192.168.71.119 日志存储与共享 NFS-Server + Elasticsearch + Logstash + Kibana
zab_ans 192.168.71.120 监控与自动化中心 Zabbix-Server + Ansible
rsy_bk 192.168.71.121 备份服务器 Rsync-Server + Inotify

三.基础环境部署(所有节点)

系统初始化
# 设置主机名(以lb_01为例)
sudo hostnamectl set-hostname lb_01

# 配置静态IP(所有节点)
sudo tee /etc/sysconfig/network-scripts/ifcfg-ens33 <<EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=eui64
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.71.111
PREFIX=24
GATEWAY=192.168.71.2
DNS1=8.8.8.8

EOF

# 全局hosts解析
sudo tee -a /etc/hosts <<EOF
192.168.71.111 lb_01
192.168.71.112 lb_02
192.168.71.113 web_01
192.168.71.114 web_02
192.168.71.115 redis_01
192.168.71.116 redis_02
192.168.71.117 db_01
192.168.71.118 db_02
192.168.71.119 elk_nfs
192.168.71.120 zab_ans
192.168.71.121 rsy_bk
EOF
安全加固与工具集
# 关闭防火墙(测试环境)
sudo systemctl stop firewalld && sudo systemctl disable firewalld

# 禁用SELinux
sudo setenforce 0
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 安装基础工具
sudo yum install -y epel-release
sudo yum install -y vim net-tools wget curl telnet chrony sshpass

# 时间同步
sudo systemctl enable chronyd && sudo systemctl start chronyd
sudo chronyc sources
内核参数优化(所有节点)
# 增加文件描述符限制
sudo tee -a /etc/security/limits.conf <<EOF
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
EOF

# 内核参数优化
sudo tee -a /etc/sysctl.conf <<EOF
net.core.somaxconn = 2048
net.ipv4.tcp_max_syn_backlog = 4096
vm.swappiness = 10
vm.overcommit_memory = 1
EOF
sudo sysctl -p

四.各主机需要安装的应用列表

主机类型 必需安装包
调度器 haproxy keepalived
Web节点 nginx php-fpm php-mysqlnd tomcat8 java-8
Redis节点 redis sentinel keepalived (VIP管理)
DB节点 mysql-server 
ELK/NFS nfs-utils elasticsearch logstash kibana filebeat
监控中心 zabbix-server-mysql zabbix-web-mysql zabbix-agent2 ansible
备份节点 rsync inotify-tools

根据项目需求,我们为每台主机规划需要安装的软件:

  1. 调度器 (lb_01, lb_02)​:

    • HAProxy(用于负载均衡)
    • Keepalived(用于VIP高可用)
  2. 应用服务器 (web_01, web_02)​:

    • Nginx(Web服务器)
    • PHP(运行Discuz)
    • Tomcat(运行Java商城应用)
    • 其他依赖:PHP扩展(如php-fpm, php-mysqlnd等)、JDK
  3. Redis服务器 (redis_01, redis_02)​:

    • Redis(缓存服务)
    • Redis Sentinel(实现高可用)
    • Keepalived(用于VIP漂移,可选,但需求中要求高可用,通常使用Sentinel+VIP方式)
  4. 数据库服务器 (db_01, db_02)​:

    • MySQL(数据库服务)
    • MHA或Galera Cluster相关软件(实现高可用)
    • 如果使用MHA,则需要额外的管理节点(但这里没有单独节点,可能安装在db_01或db_02上,或者利用zas_00)
  5. ELK与NFS服务器 (elk_nfs)​:

    • NFS服务端(共享存储)
    • Elasticsearch(日志存储)
    • Logstash(日志处理)
    • Kibana(日志展示)
    • 同时,该主机需要配置为NFS服务器
  6. Zabbix与Ansible服务器 (zas_00)​:

    • Zabbix Server(监控服务)
    • Zabbix Agent(自身监控)
    • Ansible(自动化部署)
    • 可能还需要安装Zabbix Web前端(需要Web服务器和数据库,数据库可以连接db_01/db_02)
  7. Rsync备份服务器 (rbk_00)​:

    • Rsync(备份服务)
    • 可能还需要inotify-tools(用于实时备份,但通常安装在NFS服务器上触发)

五.NFS存储服务器和ELK日志系统部署(在elk_nfs节点上操作)

1.安装NFS服务

dnf install nfs-utils -y

2. 创建共享目录

mkdir -p /data/web_apps
chmod 777 /data/web_apps  # 为了方便,赋予所有用户读写权限,生产环境需根据用户权限设置

3. 配置NFS共享

# 编辑/etc/exports文件
vim /etc/exports

# 添加以下内容,允许整个网段访问(根据你的网络情况,这里是192.168.71.0/24)
/data/web_apps 192.168.71.0/24(rw,sync,no_root_squash)

4. 启动NFS服务

systemctl enable --now nfs-server
exportfs -r  # 重新加载配置
exportfs      # 查看共享的目录

5.安装Elasticsearch,logstash,kibana

6.配置elk参数

# 配置Elasticsearch
vim /etc/elasticsearch/elasticsearch.yml

修改以下参数:

network.host: 0.0.0.0
cluster.name: my-cluster
node.name: elk_nfs


# 配置Kibana
vim /etc/kibana/kibana.yml


修改以下参数:

server.host: "0.0.0.0"
elasticsearch.hosts: ["http://elk_nfs:9200"]

六.Web服务器部署(在web_01和web_02上操作)

1. 安装NFS客户端并挂载共享目录

# 安装NFS客户端工具
dnf install nfs-utils -y

# 创建本地挂载点
mkdir /mnt/web_apps

# 挂载NFS共享目录
mount -t nfs elk_nfs:/data/web_apps /mnt/web_apps

# 设置开机自动挂载
echo "elk_nfs:/data/web_apps /mnt/web_apps nfs defaults 0 0" >> /etc/fstab

# 查看挂载情况
df -h

2. 部署PHP环境(用于Discuz)

# 启用PHP模块
dnf module enable php:7.4 -y

# 安装PHP及相关扩展
dnf install php php-fpm php-mysqlnd php-gd php-mbstring -y

# 启动php-fpm服务
systemctl enable --now php-fpm

# 检查状态
systemctl status php-fpm

3. 部署Tomcat环境(用于Java商城)(java8,tomcat8)

# 安装OpenJDK和Tomcat
dnf install java tomcat -y

# 启动Tomcat服务
systemctl enable --now tomcat

# 检查状态
systemctl status tomcat

4.部署Nginx

# 安装Nginx
dnf install nginx -y

# 配置Nginx支持PHP和Tomcat

# 在/etc/nginx/conf.d/目录下创建两个配置文件:discuz.conf和shop.conf

# discuz.conf配置(用于Discuz)
cat &
本文章已经生成可运行项目
内容概要:文章以“智能网页数据标注工具”为例,深入探讨了谷歌浏览器扩展在毕业设计中的实战应用。通过开发具备实体识别、情感分类等功能的浏览器扩展,学生能够融合前端开发、自然语言处理(NLP)、本地存储与模型推理等技术,实现高效的网页数据标注系统。文中详细解析了扩展的技术架构,涵盖Manifest V3配置、内容脚本与Service Worker协作、TensorFlow.js模型在浏览器端的轻量化部署与推理流程,并提供了核心代码实现,包括文本选择、标注工具栏动态生成、高亮显示及模型预测功能。同时展望了多模态标注、主动学习与边缘计算协同等未来发展方向。; 适合人群:具备前端开发基础、熟悉JavaScript和浏览器机制,有一定AI模型应用经验的计算机相关专业本科生或研究生,尤其适合将浏览器扩展与人工智能结合进行毕业设计的学生。; 使用场景及目标:①掌握浏览器扩展开发全流程,理解内容脚本、Service Worker与弹出页的通信机制;②实现在浏览器端运行轻量级AI模型(如NER、情感分析)的技术方案;③构建可用于真实场景的数据标注工具,提升标注效率并探索主动学习、协同标注等智能化功能。; 阅读建议:建议结合代码实例搭建开发环境,逐步实现标注功能并集成本地模型推理。重点关注模型轻量化、内存管理与DOM操作的稳定性,在实践中理解浏览器扩展的安全机制与性能优化策略。
基于Gin+GORM+Casbin+Vue.js的权限管理系统是一个采用前后端分离架构的企业级权限管理解决方案,专为软件工程和计算机科学专业的毕业设计项目开发。该系统基于Go语言构建后端服务,结合Vue.js前端框架,实现了完整的权限控制和管理功能,适用于各类需要精细化权限管理的应用场景。 系统后端采用Gin作为Web框架,提供高性能的HTTP服务;使用GORM作为ORM框架,简化数据库操作;集成Casbin实现灵活的权限控制模型。前端基于vue-element-admin模板开发,提供现代化的用户界面和交互体验。系统采用分层架构和模块化设计,确保代码的可维护性和可扩展性。 主要功能包括用户管理、角色管理、权限管理、菜单管理、操作日志等核心模块。用户管理模块支持用户信息的增删改查和状态管理;角色管理模块允许定义不同角色并分配相应权限;权限管理模块基于Casbin实现细粒度的访问控制;菜单管理模块动态生成前端导航菜单;操作日志模块记录系统关键操作,便于审计和追踪。 技术栈方面,后端使用Go语言开发,结合Gin、GORM、Casbin等成熟框架;前端使用Vue.js、Element UI等现代前端技术;数据库支持MySQL、PostgreSQL等主流关系型数据库;采用RESTful API设计规范,确保前后端通信的标准化。系统还应用了单例模式、工厂模式、依赖注入等设计模式,提升代码质量和可测试性。 该权限管理系统适用于企业管理系统、内部办公平台、多租户SaaS应用等需要复杂权限控制的场景。作为毕业设计项目,它提供了完整的源码和论文文档,帮助学生深入理解前后端分离架构、权限控制原理、现代Web开发技术等关键知识点。系统设计规范,代码结构清晰,注释完整,非常适合作为计算机相关专业的毕业设计参考或实际项目开发的基础框架。 资源包含完整的系统源码、数据库设计文档、部署说明和毕
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值