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

集群架构(1)

前言导读

                       

  目前民工哥的公众号也运营一年多的时间,从刚开始的网络方面的基础知识转到Linux系统方面,前后文章也写了许多,前段时间顺便回看了下前面的文章,中小企业架构是完全可以完成的,包括整个的架构设计与规划、配置及后续维等。

  因此,民工哥才有此想法,将目前的线上环境从当时项目开始到最终结束的整个过程详细记录下来,写成文章发布出来,算是共享给各位持续关注公众号的小伙伴,可以做个平时的参考文档,同时也希望各位小伙伴多提意见与建议,一起共同提高、共同成长!!!!

 

01项目整体介绍

整个项目包括以下几个应用工程

1、用户APP

2、商家APP

3、业务平台管理后台

4、商家业务管理后台

5、官网

整体项目规划设计如下

1、用户APP采用JAVA环境布署,初始环境两台服务器,实现负载均衡与高可用,前端负载使用nginx 做负载

2、商家APP采用JAVA环境布署,初始环境两台服务器,实现负载均衡与高可用,前端负载使用nginx 做负载

3、业务平台管理后台采用JAVA环境布署,初始环境一台服务器,前端使用nginx 反向代理,后续业务流量扩大,架构重新扩展

4、商家平台管理后台采用JAVA环境布署,初始环境一台服务器,前端使用nginx 反向代理,后续业务流量扩大,架构重新扩展

5、官方网站都是一些静态页面,采用nginx布署,WEB服务另安装FTP服务器,做为业务管理后台一些静态资源的上传

6、数据库使用Mysql主从复制架构,程序上实现读写分享,从库开启binlog做备份使用

7、全网所有备份数据全部同步到专业内网备份服务器,所有业务备份数据保留30天

8、全网所有服务器监控(基本监控与服务监控)都采用zabbix监控

备注:由于线上使用阿里云主机,负载均衡的高可用使用阿里自带的SLB即可,线下如果测试环境可以使用keepalived+nginx,如有需要可参考前面的文章,文章链接如下

   keepalived高可用集群服务安装与配置实战

服务器IP地址规划如下

 

服务器环境与应用软件版本介绍

服务器环境

[root@centos ~]# cat /etc/redhat-release

CentOS release 6.8 (Final)

[root@centos ~]# uname -r

2.6.32-642.el6.x86_64

应用软件版本

Nginx 1.12.1

Mysql 5.7.17

Jdk 1.8

Tomcat 8.5.9

Zabbix 3.0

Yum 源使用163、阿里去、sohu国内的源都可以,自行选择

Redis 4.0.1

 

02服务器逻辑架构图

 

03服务器基础环境优化配置

因使用云主机服务器,初始系统安装就略过了,如果需要批量安装的请参考前面的文章

文章链接如下

    批量无人值守安装操作系统

配置国内YUM源,以163为例

[root@centos ~]# cd /etc/yum.repos.d/

[root@centos yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

[root@centos yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak

[root@centos yum.repos.d]# mv CentOS6-Base-163.repo CentOS-Base.repo

 

安装需要的软件包

[root@centos ~]# yum install lsof vim telnet dos2unix lrzsz tree -y

关闭不需要启动的服务

for service in `chkconfig --list|grep 3:on|awk '{print $1}'`

do chkconfig --level 3 $service off

done

for service in crond network sshd rsyslog

do chkconfig --level 3 $service on

done

[root@centos ~]# chkconfig --list|grep 3:on

 

修改SSH服务的默认配置

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

sed -i 's%#Port 22%Port 2233%g'  /etc/ssh/sshd_config

sed -i 's%#PermitRootLogin yes%PermitRootLogin no%g'  /etc/ssh/sshd_config

sed -i 's%#PermitEmptyPasswors no%PermitEmptyPasswors no%g'  /etc/ssh/sshd_config

sed -i 's%#UseDNS yes%UseDNS no%g'  /etc/ssh/sshd_config

egrep "UseDNS|2233|RootLogin|EmptyPass"  /etc/ssh/sshd_config

/etc/invited/sshd reload

关闭selinux

配置文件/etc/selinux/config

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

egrep "SELINUX=" /etc/selinux/config

关闭防火墙

如果不是对外网的服务器,直接关闭防火墙,有外网地址的可建议开启,并允许相关的服务端口,并发高的服务器也不需要开启防火墙,可能会影响性能

/etc/invited/pintables stop

/etc/invited/pintables status

pintables: Firewall is not running.

锁定系统关键文件

for file in /etc/passed /etc/shadow /etc/services /etc/initial /etc/rc.local

do

   chattr +i $file

done

配置普通操作用户及sudo权限

具体操作请参考前面的文章,文章链接如下

  企业实战项目之服务器用户权限集中管理

配置全网服务器时间同步

/usr/sbin/ntpdate time.windows.com

cat>>/var/spool/cron/root<<EOF

#this cron is for ntpdate

*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2>&1

#cron config end

EOF

配置全网服务器hosts文件

Cat>>/etc/hosts<<EOF

10.0.0.1      nginx-lb     

10.0.0.2      nginx-proxy      

10.0.0.3      nginx     

10.0.0.4      userapp      

10.0.0.5      sjapp     

10.0.0.6      admin     

10.0.0.7      shangjia     

10.0.0.8      web   

10.0.0.9      mysql-m      

10.0.0.10     mysql-s      

10.0.0.11     ftp-backup   

10.0.0.12     redis     

10.0.0.13     backup-server    

10.0.0.14     zabbix    

EOF

规范所有服务器的目录结构

[root@centos ~]# mkdir/download/tools/ -p

#所有软件下载目录

[root@centos ~]# mkdir/app/logs -p

#所有安装的应用日志目录

[root@centos ~]# mkdir /app-p

#应用服务软件安装目录

[root@centos ~]# mkdir/server/{scripts,backup} -p

#脚本与数据备份目录

至此基本的服务器优化配置也就结束了,接下来就是安装各类服务

 

转载于:https://www.cnblogs.com/guarderming/p/9466556.html

相关文章:

  • python全栈开发 * background 定位 z-index * 180813
  • Prism中命令可用性无法自动刷新
  • shell入门基础常见命令及用法
  • 高可用,高并发
  • SqlServer日期时间格式转换
  • Go to sleep
  • 【CSS】小妙招,各种问题总结方法处理
  • exception ORA-00923: FROM keyword not found where expected
  • windows2003开了远程却连不上
  • Running Median
  • Java中getResourceAsStream的用法
  • Rust 2018临近:设法从Rust 2015过渡
  • 通过XAML Islands使Windows桌面应用程序现代化
  • apscheduler -定时任务
  • springmvc入门之映射处理器(二)
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • javascript从右向左截取指定位数字符的3种方法
  • Linux中的硬链接与软链接
  • MySQL数据库运维之数据恢复
  • NSTimer学习笔记
  • opencv python Meanshift 和 Camshift
  • python学习笔记 - ThreadLocal
  • SQLServer之索引简介
  • 基于axios的vue插件,让http请求更简单
  • 设计模式走一遍---观察者模式
  • 小程序button引导用户授权
  • 携程小程序初体验
  • 用jQuery怎么做到前后端分离
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​如何在iOS手机上查看应用日志
  • #git 撤消对文件的更改
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (接口自动化)Python3操作MySQL数据库
  • (十) 初识 Docker file
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)Scala的“=”符号简介
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .Net(C#)自定义WinForm控件之小结篇
  • .Net面试题4
  • 。Net下Windows服务程序开发疑惑
  • /proc/vmstat 详解
  • @Bean, @Component, @Configuration简析
  • @ModelAttribute 注解
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [100天算法】-目标和(day 79)
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [AIGC] MySQL存储引擎详解
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C++]指针与结构体