当前位置: 首页 > news >正文

CentOS 7下Java技术栈环境搭建与配置指南

1. 环境准备与基础组件安装

在搭建这套技术栈之前,我们需要先准备好基础环境。我选择CentOS 7作为操作系统平台,因为它兼具稳定性和广泛的社区支持。以下是基础组件的安装步骤:

1.1 JDK安装与配置

Java环境是整个技术栈的基础,这里我选择JDK 8u271版本。安装过程需要注意几个关键点:

#!/bin/bash # 检查安装包是否存在 [ ! -f jdk-8u271-linux-x64.tar.gz ] && echo "JDK安装包不存在" && exit # 解压并移动到标准目录 tar xf jdk-8u271-linux-x64.tar.gz mv jdk1.8.0_271 /usr/local/java # 设置环境变量 cat > /etc/profile.d/java.sh << EOF export JAVA_HOME=/usr/local/java export PATH=\$JAVA_HOME/bin:\$PATH EOF # 立即生效 source /etc/profile.d/java.sh java -version

注意:环境变量配置在/etc/profile.d/下比直接修改/etc/profile更规范,便于维护和隔离不同组件的配置。

1.2 Maven安装与配置

Maven 3.5.4版本足够稳定,适合大多数项目:

wget https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz tar xf apache-maven-3.5.4-bin.tar.gz mv apache-maven-3.5.4 /usr/local/maven3.5 cat > /etc/profile.d/maven.sh << EOF export MAVEN_HOME=/usr/local/maven3.5 export PATH=\$MAVEN_HOME/bin:\$PATH EOF source /etc/profile.d/maven.sh mvn -v

在实际操作中,我发现国内使用镜像源能显著提高依赖下载速度。可以在~/.m2/settings.xml中配置阿里云镜像:

<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>

2. 数据库与中间件安装

2.1 MongoDB安装与安全配置

MongoDB 4.0.21版本在稳定性和功能之间取得了良好平衡。安装时特别注意安全配置:

#!/bin/bash PORT="27017" User="admin" Passwd="your_strong_password" wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-4.0.21.tgz tar -zxvf mongodb-linux-x86_64-rhel62-4.0.21.tgz mv mongodb-linux-x86_64-rhel62-4.0.21/ /usr/local/mongodb mkdir -p /usr/local/mongodb/{data,logs} touch /usr/local/mongodb/logs/mongo.log # 环境变量配置 cat > /etc/profile.d/mongodb.sh << EOF export MONGODB_HOME=/usr/local/mongodb export PATH=\$PATH:\$MONGODB_HOME/bin EOF source /etc/profile.d/mongodb.sh # 配置文件 cat > /usr/local/mongodb/mongo.conf << EOF dbpath=/usr/local/mongodb/data logpath=/usr/local/mongodb/logs/mongo.log logappend=true journal=true quiet=true port=$PORT fork=true bind_ip=0.0.0.0 auth=true EOF # Systemd服务配置 cat > /usr/lib/systemd/system/mongodb.service << EOF [Unit] Description=mongodb After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongo.conf ExecReload=/bin/kill -s HUP \$MAINPID ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongo.conf PrivateTmp=true Restart=always RestartSec=1 [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable --now mongodb # 创建管理员账户 mongo --port $PORT admin --eval "db.createUser({user:'$User',pwd:'$Passwd',roles:['userAdminAnyDatabase','root']})"

安全提示:生产环境务必修改默认端口,启用auth并设置复杂密码。bind_ip不要使用0.0.0.0,应该限制为必要IP。

2.2 Zookeeper集群部署

Zookeeper 3.6.1版本对Kafka 2.6.0有良好支持。单节点部署如下:

#!/bin/bash HostIP=$(hostname -I |awk '{print $1}') [ ! -f apache-zookeeper-3.6.1-bin.tar.gz ] && echo "Zookeeper安装包缺失" && exit tar -zxf apache-zookeeper-3.6.1-bin.tar.gz mv apache-zookeeper-3.6.1-bin /usr/local/zookeeper mkdir -p /usr/local/zookeeper/{data,datalog} # 配置文件修改 cd /usr/local/zookeeper/conf cp zoo_sample.cfg zoo.cfg sed -i "s#dataDir=/tmp/zookeeper#dataDir=/usr/local/zookeeper/data#" zoo.cfg echo "dataLogDir=/usr/local/zookeeper/datalog" >> zoo.cfg echo "server.1=$HostIP:2888:3888" >> zoo.cfg echo 1 > /usr/local/zookeeper/data/myid # 环境变量 cat > /etc/profile.d/zookeeper.sh << EOF export ZK_HOME=/usr/local/zookeeper export PATH=\$ZK_HOME/bin:\$PATH EOF source /etc/profile.d/zookeeper.sh # Systemd服务 cat > /usr/lib/systemd/system/zookeeper.service << EOF [Unit] Description=zookeeper.service After=network.target ConditionPathExists=/usr/local/zookeeper/conf/zoo.cfg [Service] Type=forking Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/java/bin" User=root Group=root ExecStart=/usr/local/zookeeper/bin/zkServer.sh start ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable --now zookeeper

集群部署时,需要在所有节点上:

  1. 配置相同的zoo.cfg,包含所有server条目
  2. 每个节点的myid文件内容要唯一(1,2,3...)
  3. 防火墙开放2888和3888端口

3. Kafka集群部署与管理

3.1 Kafka核心安装

Kafka 2.6.0版本与前述组件版本匹配良好:

#!/bin/bash HostIP=$(hostname -I |awk '{print $1}') PORT=9092 [ ! -f kafka_2.13-2.6.0.tgz ] && echo "Kafka安装包缺失" && exit tar -zxf kafka_2.13-2.6.0.tgz mv kafka_2.13-2.6.0 /usr/local/kafka mkdir -p /usr/local/kafka/kafka-logs # 配置文件调整 cd /usr/local/kafka/config cp server.properties server.properties.bak sed -i "s#broker.id=0#broker.id=1#" server.properties sed -i "s#log.dirs=/tmp/kafka-logs#log.dirs=/usr/local/kafka/kafka-logs#" server.properties echo "listeners=PLAINTEXT://:$PORT" >> server.properties echo "advertised.listeners=PLAINTEXT://$HostIP:$PORT" >> server.properties # 环境变量 cat > /etc/profile.d/kafka.sh << EOF export KAFKA_HOME=/usr/local/kafka export PATH=\$KAFKA_HOME/bin:\$PATH EOF source /etc/profile.d/kafka.sh # Systemd服务 cat > /usr/lib/systemd/system/kafka.service << EOF [Unit] Description=Apache Kafka server (broker) After=network.target zookeeper.service [Service] Type=simple Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/java/bin" User=root Group=root ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable --now kafka

关键配置说明:

  • broker.id:集群中必须唯一
  • log.dirs:建议使用高性能磁盘单独挂载
  • listeners/advertised.listeners:内外网访问配置
  • zookeeper.connect:集群模式下配置所有ZK节点

3.2 Kafka基础操作

创建topic:

kafka-topics.sh --create --zookeeper localhost:2181 \ --replication-factor 1 --partitions 3 --topic test

生产消息:

kafka-console-producer.sh --broker-list localhost:9092 --topic test

消费消息:

kafka-console-consumer.sh --bootstrap-server localhost:9092 \ --topic test --from-beginning

查看topic列表:

kafka-topics.sh --list --zookeeper localhost:2181

4. Kafka-Manager可视化监控

4.1 安装与配置

Kafka-Manager 2.0.0.2提供了友好的Web界面:

#!/bin/bash [ ! -f kafka-manager-2.0.0.2.zip ] && echo "Kafka-Manager安装包缺失" && exit unzip kafka-manager-2.0.0.2.zip mv kafka-manager-2.0.0.2 /usr/local/kafka-manager # 修改配置 cd /usr/local/kafka-manager/conf sed -i 's#"kafka-manager-zookeeper:2181"#"localhost:2181"#' application.conf # 启动 nohup /usr/local/kafka-manager/bin/kafka-manager \ -Dconfig.file=/usr/local/kafka-manager/conf/application.conf \ -Dhttp.port=8090 -java-home /usr/local/java &

4.2 使用技巧

  1. 集群添加:通过Web界面添加集群时,填写正确的ZK地址和Kafka版本
  2. 监控指标:关注Under Replicated Partitions和Offline Partitions Count
  3. 消费者监控:可以查看消费滞后情况
  4. 主题操作:支持创建、删除、扩分区等操作

生产环境建议启用basicAuthentication.enabled=true并配置强密码

5. 系统集成与优化

5.1 组件连通性验证

  1. 验证ZK与Kafka连接:
echo stat | nc localhost 2181 | grep Mode kafka-topics.sh --list --zookeeper localhost:2181
  1. 验证MongoDB连接:
mongo --host localhost --port 27017 -u admin -p your_password --authenticationDatabase admin
  1. 验证Kafka-Manager: 访问http://your-server-ip:8090

5.2 性能优化建议

  1. Kafka优化:
  • 调整num.io.threads和num.network.threads
  • 优化log.retention.hours和log.segment.bytes
  • 考虑使用SSD存储日志
  1. MongoDB优化:
  • 配置WiredTiger缓存大小
  • 建立合适的索引
  • 启用journaling
  1. 系统层面:
  • 调整文件描述符限制
  • 优化swap和内存配置
  • 考虑使用cgroup限制资源

5.3 常见问题排查

  1. Kafka启动失败:
  • 检查ZK连接
  • 验证broker.id唯一性
  • 查看日志/usr/local/kafka/logs/server.log
  1. 生产者无法发送消息:
  • 检查advertised.listeners配置
  • 验证防火墙设置
  • 检查topic是否存在
  1. MongoDB连接问题:
  • 检查auth是否启用
  • 验证bind_ip配置
  • 查看/usr/local/mongodb/logs/mongo.log

这套技术栈整合了消息队列、分布式协调和文档数据库,非常适合构建现代分布式系统。在实际部署中,根据业务规模合理规划集群节点数量和资源配置是关键。

http://www.jsqmd.com/news/1240677/

相关文章:

  • 中小企业GEO轻量化方案:低成本高回报的实战路径
  • 工业级Zigbee模块WLT2420SZ:2500米通信距离与Mesh组网实战指南
  • 苏州机器人编码器怎么选?高精度与国产替代的深度解析,帮你避开低价陷阱 - 中国品牌企业推荐网
  • 营销活动效果分析:从活动策划到数据复盘的全链路看板
  • 2026 襄阳黄金回收行业第三方实测测评|7 月大盘行情解析 - 不晚生活号
  • 挑战零代码做游戏:我用QClaw搓了个世界杯颠球挑战
  • 图片怎么按内容批量重命名?RenomeeAI OCR 识别信息进行重命名实操
  • AI与大模型新闻日报 | 2026-07-22
  • 运维转大模型:把脚本换成 Agent,我踩过的坑都在权限和日志里
  • 《爱人》预告片剪辑解析:情绪节奏与符号隐喻的视听语言设计
  • 欧米茄中国区**售后服务中心|**服务电话及地址**公示(2026年7月最新) - 欧米茄中国服务中心
  • YOLOv8目标检测优化:RepConv技术提升推理速度与精度
  • Nginx location与proxy_pass配置详解与实战技巧
  • 无锡黄金回收避坑终极答案:认准“三证齐全、报价即到手、无损检测”三大硬指标 - 一日一测评
  • TI Hercules HTU模块中断与内存保护机制深度解析
  • 终极Czkawka重复文件清理工具:10步掌握Windows磁盘空间管理神器
  • 2026年7月|昆明跨省救护车转运_长途跨城点对点服务 - 小校长
  • 人物Skill蒸馏实践指南
  • 深入解析以太网MAC控制器:错误处理、流控制与IEEE 1588时间戳实践
  • 降AI率工具适合急着交稿的人吗?实测快速出稿到底多快
  • 跨越“数据之墙”与“技能之墙”:TsingtaoAI入选北京市创新型中小企业
  • TPS26750A PD控制器I2C接口与寄存器配置实战指南
  • Unity运动匹配技术:从原理到实现,打造流畅角色动画
  • 2026北京浪琴**服务门店新址出炉专属售后热线同步启用 - 浪琴中国服务中心
  • 什么是 PUF 防伪?一颗“不存密钥“的芯片怎么验明正身
  • 聪明人已经发现,今年的网络安全风向明显不对劲了
  • 电源定制厂家与脉冲电源定制厂家怎么选?国内脉冲电源生产厂商**参考,高频脉冲电源、电镀脉冲电源、定制电源厂家对比 - 热点速览
  • 六自由度航空模拟平台:高保真地面仿真 赋能航空训练与测试提质增效
  • 联邦学习中的边缘模型聚合:安全聚合协议与差分隐私的 Rust 实现
  • 全球化企业的金融运营新范式:Airwallex空中云汇云汇Visa卡价值全解析