Linux 网站架构

通过虚拟机进行搭建网站架构

使用所需的软件:VMware、xshell

vmware下载:my.vmware.comhttps://my.vmware.com/web/vmware/downloads/#all_products或者

VMware Workstation (aijiaer11.cn)https://soft.aijiaer11.cn/soft/188159.html?bd_vid=10408142851055295532

Xshell下载:XSHELL - NetSarang Websitehttps://www.xshell.com/zh/xshell/

一、网站架构简单介绍

通过负载均衡、Web 服务器、存储和数据库服务器的组合,提供高可用性与可靠性以支持现代化的 Web 应用

二、搭建

准备环境:

系统:centos 7 镜像文件

内存:2G

CPU:1核

硬盘:40G

网卡:两块网卡(双网卡)

eth0(外网):NAT网络,网段10.0.0.1~254,网关10.0.0.254,可访问百度

eth1(内网):LAN区段,网段172.16.1.1~254,网关172.16.1.254,不可访问百度

需要创建的相关主机:

bash 复制代码
服务器作用         主机名         外网地址          内网地址            运行软件                                    
管理机            master-61      10.0.0.61        172.16.1.61        Ansible/zabbix/jumpserver/openvpn        
负载均衡服务器     slb-5          10.0.0.5         172.16.1.5         nginx/keepalived
负载均衡服务器     slb-6          10.0.0.6         172.16.1.6         nginx/keepalived

web服务器          web-7          10.0.0.7         172.16.1.7         nginx/php
web服务器          web-8          10.0.0.8         172.16.1.8         nginx/tomcat
web服务器          web-9          10.0.0.9         172.16.1.9         nginx/php

存储服务器         nfs-31         10.0.0.31        172.16.1.31        nfs/rsyncd/lsyncd
备份服务器         rsync-41       10.0.0.41        172.16.1.41        nfs/rsyncd/lsyncd

数据库服务器       db-51          10.0.0.51        172.16.1.51        mysql/redis
  1. 管理机
    作用: 负责运维管理,包括自动化部署(Ansible)、监控系统(Zabbix),以及实现远程访问(Jumpserver 和 OpenVPN)。

  2. 负载均衡服务器

    作用: 接收用户请求并将流量分发到后端的 Web 服务器,确保系统的负载均衡及高可用性。

  3. Web 服务器

    作用: 执行应用逻辑并处理用户请求。不同的 Web 服务器可以服务不同类型的应用(如 PHP 应用和 Java 应用)。

  4. 存储服务器
    作用: 提供网络文件系统,允许其他服务器共享和存取文件,实现数据的集中存储。

  5. 备份服务器
    作用: 执行数据备份,确保在故障发生时能够快速恢复数据。

  6. 数据库服务器
    作用: 存储应用数据,MySQL 用于关系型查询,Redis 提供高速缓存服务。

1、先安装配置一台虚拟机(作为模板机)

VMware中设置里点击虚拟网络编辑器

选中vmnet8,点击更改设置

新建一台虚拟机后,再添加一块网卡选择为LAN

2、开始安装centos 7系统

开启虚拟机,在安装界面,按tab键,然后输入net.ifnames=0 biosdevname=0,回车即可

这两个参数的作用是修改linux的安装过程,让网卡名,恢复为旧的linux命名规则,也就是eth0

如下会出现检查更改的进度,更改完成后进入安装界面。

开始进行装机,时区选择shanghai,分区可以手动分区或者默认自动分区都可

关闭内核崩溃机制,如下图。

内核崩溃机制作用:关闭崩溃机制可以避免占用大量磁盘空间,尤其是在不打算调试内核崩溃的情况下

配置eth0网卡

修改主机名,点击configure

勾选自动连接网络

设置eth0的网卡IP为10.0.0.100,点击保存

保存后会显示IP相关信息,然后点击done,进行安装

设置root密码,用户可创建可不创建。等待安装完成后reboot重启系统

3、系统配置相关操作

1、配置网卡

更改两张网卡为如下信息

bash 复制代码
[root@moban ~]# sed -ri  '/(proxy_method|browser_only|uuid|defroute)/Id' /etc/sysconfig/network-scripts/ifcfg-eth0 
[root@moban ~]# 
[root@moban ~]# sed -i '/ipv[46]/Id' /etc/sysconfig/network-scripts/ifcfg-eth0
[root@moban ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.100
PREFIX=24
GATEWAY=10.0.0.254
DNS1=223.5.5.5
[root@moban network-scripts]# sed -i '/ipv[46]/Id' /etc/sysconfig/network-scripts/ifcfg-eth1
[root@moban network-scripts]# sed -ri  '/(proxy_method|browser_only|uuid|defroute)/Id' /etc/sysconfig/network-scripts/ifcfg-eth1 
[root@moban network-scripts]# cat ifcfg-eth1 
TYPE=Ethernet
BOOTPROTO=dhcp
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.200
NETMASK=255.255.0.0
GATEWAY=172.16.1.254
DNS1=223.5.5.5

重启网络(基于NetworkManager服务),使两张网卡都生效

bash 复制代码
[root@moban ~]# systemctl restart NetworkManager
[root@moban ~]# systemctl restart network
[root@moban ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:5c:5d:d1 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe5c:5dd1/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:5c:5d:db brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.200/24 brd 172.16.1.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe5c:5ddb/64 scope link 
       valid_lft forever preferred_lft forever

2、关闭所有防火墙、selinux、iptables

bash 复制代码
[root@moban ~]# setenforce 0
[root@moban ~]# getenforce 
Permissive
[root@moban ~]# grep '^SELINUX' /etc/selinux/config
SELINUX=enforcing
SELINUXTYPE=targeted 
[root@moban ~]# sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
[root@moban ~]# grep '^SELINUX' /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted 
[root@moban ~]# systemctl stop firewalld
[root@moban ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@moban ~]# iptables -F
[root@moban ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

3、加速ssh连接,并重启sshd服务

bash 复制代码
[root@moban ~]# grep -Ei 'gssapiauth|usedns|pidfile' /etc/ssh/ssh_config 
#   GSSAPIAuthentication yes
	GSSAPIAuthentication yes
[root@moban ssh]# sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/g' /etc/ssh/ssh_config
[root@moban ~]# grep -Ei 'gssapiauth|usedns|pidfile' /etc/ssh/ssh_config 
#   GSSAPIAuthentication no
	GSSAPIAuthentication no
[root@moban ~]# systemctl restart sshd
[root@moban ~]# 

4、优化PS1变量

bash 复制代码
直接写入 /etc/profile
root@moban ~]# echo  'export PS1='\[\033[01;34m\](`date +"%H:%M:%S"`)\[\033[01;35m\][\[\033[01;32m\]\h\[\033[01;31m\] \u \w\[\033[31m\]\[\033[01;35m\]] \[\033[01;36m\]\$\[\033[00m\] ''   >> /etc/profile
[root@moban ~]# source /etc/profile
(10:28:26)[moban root ~] # 

5、yum源优化

bash 复制代码
首先备份旧的yum源文件
10:28:29)[moban root ~] # cd /etc/yum.repos.d/
(10:32:15)[moban root /etc/yum.repos.d] # 
(10:32:15)[moban root /etc/yum.repos.d] # mkdir repo_bak
(10:32:44)[moban root /etc/yum.repos.d] # mv *.repo repo_bak/

下载阿里云的yum源,因为wget没有下载,所以使用curl直接拉取
(10:35:48)[moban root /etc/yum.repos.d] # curl -O https://mirrors.aliyun.com/repo/Centos-7.repo

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2523  100  2523    0     0  10504      0 --:--:-- --:--:-- --:--:-- 10512
(10:35:58)[moban root /etc/yum.repos.d] # ls
Centos-7.repo  repo_bak
(10:36:02)[moban root /etc/yum.repos.d] # curl -O http://mirrors.aliyun.com/repo/epel-7.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   664  100   664    0     0   4565      0 --:--:-- --:--:-- --:--:--  4579
(10:36:29)[moban root /etc/yum.repos.d] # ls
Centos-7.repo  epel-7.repo  repo_bak

清楚旧的yum缓存  生成新的缓存
(10:36:30)[moban root /etc/yum.repos.d] # yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base epel extras updates
Cleaning up list of fastest mirrors
(10:36:39)[moban root /etc/yum.repos.d] # yum makecache
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                                    | 3.6 kB  00:00:00     
epel                                                                    | 4.3 kB  00:00:00     
extras                                                                  | 2.9 kB  00:00:00     
updates                                                                 | 2.9 kB  00:00:00     
(1/16): base/7/x86_64/group_gz                                          | 153 kB  00:00:00     
(2/16): epel/x86_64/group                                               | 399 kB  00:00:01  
......

安装基本的软件

bash 复制代码
因为使最小化安装,所以很多软件无法使用
(10:48:44)[moban root ~] # yum -y install tree wget bash-completion bash-completion-extras lrzsz net-tools sysstat iotop iftop htop unzip telnet ntpdate lsof 

6、关闭邮件告警

bash 复制代码
Linux中所以操作都会被linux内置的邮件服务器记录,不断的写入 /var/log下的日志文件可能会占用无用的磁盘
(10:53:07)[moban root ~] # echo 'unset mailcheck' >> /etc/profile
(10:53:08)[moban root ~] # source /etc/profile
(10:53:17)[moban root ~] # 

7、配置host主机名解析,通过主机名去访问不同的机器

bash 复制代码
(13:27:17)[moban root ~] # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#内网ip       外网ip     主机名     机器的作用
172.16.1.61  10.0.0.61  master-61  管理机
172.16.1.5   10.0.0.5   slb-5      负载均衡服务器  
172.16.1.6   10.0.0.6   slb-6      负载均衡服务器  
172.16.1.7   10.0.0.7   web-7      web服务器       
172.16.1.8   10.0.0.8   web-8      web服务器       
172.16.1.9   10.0.0.9   web-9      web服务器       
172.16.1.31  10.0.0.31  nfs-31     存储服务器      
172.16.1.41  10.0.0.41  rsync-41   备份服务器     
172.16.1.51  10.0.0.51  db-51      数据库服务器

8、配置时间同步定时任务

bash 复制代码
查看crontab服务是否运行
(13:27:23)[moban root ~] # systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2024-12-02 16:37:46 CST; 20h ago
 Main PID: 690 (crond)
   CGroup: /system.slice/crond.service
           └─690 /usr/sbin/crond -n

Dec 02 16:37:46 moban systemd[1]: Started Command Scheduler.
Dec 02 16:37:46 moban crond[690]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 5...ed.)
Dec 02 16:37:47 moban crond[690]: (CRON) INFO (running with inotify support)
Hint: Some lines were ellipsized, use -l to show in full.

编写定时任务语句
(13:30:17)[moban root ~] # crontab -l
* * * * * /usr/sbin/ntpdate time1.aliyun.com > /dev/null 2>&1

9、关闭swap功能

取消swap的功能,不适用这个从磁盘获取而来的部分内存容量,因为效率太差

bash 复制代码
先取消挂载,然后注释掉配置文件,重启系统即可生效
(13:34:52)[moban root ~] # swapoff -a
(13:35:01)[moban root ~] # cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Dec  2 16:09:14 2024
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=be2d80b1-e200-4660-9df5-23fcd50e25cb /boot                   xfs     defaults        0 0
#/dev/mapper/centos-swap swap                    swap    defaults        0 0
(13:35:06)[moban root ~] # 

三、编写修改IP脚本

1、eth0 eth1 修改网卡配置文件

bash 复制代码
(13:39:20)[moban root ~] # cat network.sh 
#!/bin/bash
read -p "请输入IP主机位:" my_ip
read -p "请输入主机名:"  host_name
echo '正在修改网卡配置文件eth0'
sed -i "/IPADDR/s#100#${my_ip}#g"  /etc/sysconfig/network-scripts/ifcfg-eth0
echo '正在修改网卡配置文件eth1'
sed -i "/IPADDR/s#200#${my_ip}#g"  /etc/sysconfig/network-scripts/ifcfg-eth1
echo '网卡配置文件修改完毕'

echo '正在修改主机名'
hostnamectl set-hostname ${host_name}

echo "=========================="
echo "此时的eth0配置是:"  `cat /etc/sysconfig/network-scripts/ifcfg-eth0`

echo "=========================="
echo "此时的eth1配置是:"   `cat /etc/sysconfig/network-scripts/ifcfg-eth1`
echo "当前的主机名是:"   `hostname`

最后进行模板机拍摄快照

2、创建9台机器,使用链接克隆,如下图

每台机器开机后循环执行network.sh 脚本,重启网络,与模板机器互相ping通即可

bash 复制代码
(14:10:25)[nfs root ~] # bash network.sh 
请输入IP主机位:31
请输入主机名:nfs
正在修改网卡配置文件eth0
正在修改网卡配置文件eth1
网卡配置文件修改完毕
正在修改主机名
==========================
此时的eth0配置是: TYPE=Ethernet BOOTPROTO=none NAME=eth0 DEVICE=eth0 ONBOOT=yes IPADDR=10.0.0.31 PREFIX=24 GATEWAY=10.0.0.254 DNS1=223.5.5.5
==========================
此时的eth1配置是: TYPE=Ethernet BOOTPROTO=dhcp NAME=eth1 DEVICE=eth1 ONBOOT=yes IPADDR=172.16.1.31 NETMASK=255.255.0.0 GATEWAY=172.16.1.254 DNS1=223.5.5.5
当前的主机名是: nfs
(14:13:40)[nfs root ~] # systemctl restart NetworkManager
(14:13:47)[nfs root ~] # 
(14:16:33)[nfs root ~] # ping 10.0.0.100
PING 10.0.0.100 (10.0.0.100) 56(84) bytes of data.
64 bytes from 10.0.0.100: icmp_seq=1 ttl=64 time=0.342 ms
64 bytes from 10.0.0.100: icmp_seq=2 ttl=64 time=0.928 ms
^C
--- 10.0.0.100 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.342/0.635/0.928/0.293 ms
(14:16:57)[nfs root ~] # ping 172.16.1.200
PING 172.16.1.200 (172.16.1.200) 56(84) bytes of data.
64 bytes from 172.16.1.200: icmp_seq=1 ttl=64 time=1.88 ms
64 bytes from 172.16.1.200: icmp_seq=2 ttl=64 time=1.70 ms
^C
--- 172.16.1.200 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 1.703/1.794/1.885/0.091 ms

注意:如果执行完脚本重启network后报错了,可以先重启下NetworkManager,然后再重启network。

systemctl restart NetworkManager

systemctl restart network

相关推荐
还算善良_4 分钟前
【乐企文件生成工程】搭建docker环境,使用docker部署工程
运维·docker·容器
Curtis09801 小时前
RHCE——Ubuntu Linux操作系统
linux·服务器·ubuntu
Allen_LVyingbo1 小时前
低代码与微服务融合在医疗集团中的补充应用探究
职场和发展·架构·健康医疗
青瓷看世界1 小时前
华为HarmonyOS 让应用快速拥有账号能力 -- 1 华为账号一键登录
服务器·华为·harmonyos·应用账号能力
18.Show4 小时前
有趣的Docker
运维·docker·容器
wuzuyu3654 小时前
docker.io连接超时的处理,用代理网站
运维·docker·容器
zz-zjx4 小时前
nerdctl:与 Docker 兼容的 containerd CLI
运维·docker·容器
YRr YRr4 小时前
在Ubuntu 20.04和ROS中使用RViz进行数据可视化:详解Fixed Frame参数的选择与应用
linux·ubuntu·信息可视化
Hansel_Zhang4 小时前
CentOS 7 docker部署jar包
linux·docker·centos
MXsoft6184 小时前
智能运维视角下的网络设备监测与数据分析
大数据·运维·数据库